App for controlling and managing OpenShock devices https://computerelite.github.io/ShockAlarmApp/
  • Dart 76.7%
  • HTML 16.1%
  • C++ 3.2%
  • CMake 2.4%
  • Swift 0.4%
  • Other 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kaiya cb704f0828
Some checks failed
Radicle Sync / mirror (push) Failing after 1m35s
fix input name
2026-08-28 11:05:48 +02:00
.forgejo/workflows fix input name 2026-08-28 11:05:48 +02:00
.vscode wip experimental ble support 2026-05-20 21:44:31 +02:00
android wip experimental ble support 2026-05-20 21:44:31 +02:00
battery_optimization_helper@d3a57411e6 update submodule 2025-04-07 20:19:23 +02:00
fastlane/metadata/android/en-US change token button placement 2026-08-14 17:02:15 +02:00
flutter@adc9010625 Updated flutter to 3.35.7 2025-10-31 21:41:09 +01:00
ios ? 2025-01-02 16:34:27 +01:00
lib change token button placement 2026-08-14 17:02:15 +02:00
linux Add flutter timezone plugin for getting correct timezone 2026-03-08 12:39:42 +01:00
macos update cloudflare_turnstile and replace signalr_core with signalr_netcore 2026-07-14 10:35:21 +02:00
test Changed android app label, updated icon, removed test 2025-01-05 18:01:42 +01:00
web Add a few restrained boxes 2025-03-10 19:41:20 +01:00
windows remove docker image from windows workflow 2026-07-19 15:17:00 +02:00
.gitignore fix issue with duplicating tones 2025-03-14 23:25:48 +01:00
.gitmodules update gitmodules 2026-05-05 11:06:30 +02:00
.metadata move folders 2025-01-01 22:46:15 +01:00
analysis_options.yaml move folders 2025-01-01 22:46:15 +01:00
devtools_options.yaml move folders 2025-01-01 22:46:15 +01:00
Dockerfile Update ComputerElite to Kaiya 2026-05-05 11:30:15 +02:00
flutter.code-workspace Add share link support 2025-01-30 20:51:52 +01:00
flutter_launcher_icons.yaml Add app icon, also add (un)pausing of shockers and account login 2025-01-04 20:17:33 +01:00
generate_iss.ps1 update to powershell script 2025-03-14 15:05:32 +01:00
generate_iss.sh but what about bash 2026-07-14 15:17:23 +02:00
generate_pkgbuild.sh fix pkgbuild generator fr 2026-07-27 22:28:31 +02:00
LICENSE add license 2025-01-01 22:47:17 +01:00
PKGBUILD Update UA to 0.4.8 2026-07-27 21:56:22 +02:00
PKGBUILD.template maybe fix pkgbuild generation 2026-07-27 21:55:55 +02:00
pubspec.lock update cloudflare_turnstile and replace signalr_core with signalr_netcore 2026-07-14 10:35:21 +02:00
pubspec.yaml update version 2026-07-28 10:16:43 +02:00
README.md update readme 2026-07-23 10:34:34 +02:00

Logo ShockAlarm

Get it on Obtainium  Get it on F-Droid

A powerful app for controlling OpenShock shockers and setting alarms with custom tones.

A web version (for IOS, ...) can be found here (does not support live controls).

Features

ShockAlarm is a powerful tool for controlling your Shockers via OpenShock. It allows you to fully manage your shockers, logs, shares, hubs, share links, tokens and sessions. On top it also allows you to seamlessly use ShareLinks.

There is advanced functionality like controlling multiple shockers at the same time, specifying a random interval for intensity, duration and a delay, live controls with patterns and alarms.

It's fully material you themed just like the standard Android apps you're already used to and provides a responsive ui with a nice design.

Furthermore it fixes some layout flaws of the official OpenShock Frontend like having shared and own shockers in separate tabs (which is annoying). On top it also has lots of info buttons you can press to get more insight on what something does.

You can also log in on multiple OpenShock instances at once. ShockAlarm will show all shockers from all instances seamlessly at a glance!

Other information

I cannot guarentee that all features work with all possible configurations. I try to make them work with each other but sometimes I miss them. For example a random intensity won't work with the shock confirmation dialog. However a hard limit will.

Not supported in Web Version

Everything with websockets is currently not supported due to authentication problems with websockets. This includes:

  • OTA Updates
  • Enabling/Disabling the captive portal
  • Live control

Installation on Android

Get it on Obtainium

  1. Download Obtainium either via their website or FDroid
  2. Add ShockAlarm by clicking here or putting codeberg.org/Kaiya/ShockAlarmApp as th app source

FDroid

Get it on F-Droid

  1. Download FDroid
  2. Search for ShockAlarm and install it. As easy as that!

GitHub

Install the apk file from the releases

Installation on Linux

Through the AUR

Use your favorite aur helper like paru or yay and install shock-alarm. link to aur

Installation on Windows

Installer

You can download a Windows installer from the releases and then execute it.

Portable

You can download a Portable version (zip file) from the releases, unzip and then execute it.

Screenshots

ShockAlarm ShockAlarm

More images

Planned features

  • (Un)Pausing of shockers
  • Login with username/email and password
  • Random delay
  • Renaming of shockers (global)
  • Viewing of logs
  • Change sharing limits
  • Create share codes
  • Redeem share codes
  • Adding of shockers
  • Creation, editing and pairing of hubs
  • Add option to repeat default shock/vibration... option for one minute (perhaps adjustable in settings). Needs reworking of the alarm stop feature
  • Websocket controlling
  • Alarm tones
  • Grouping of shockers
  • Redo settings
  • Random intensity and duration
  • Safety warning
  • Share link management
  • Allow setting initial limits when adding a shocker
  • Add ui to rename tones
  • Better desktop support (keybinds)
  • Better desktop support (layout)
  • Better desktop support (dynamic layout)
  • Show 3 point menu when 1 shocker is selected
  • Share codes sometimes can't be claimed when the app is already open (treating as fixed for now)
  • Show loading animation when share codes are loading in after shares loaded
  • Allow toggling of the captive portal
  • Add alarm renaming
  • Finally code weekday scheduling for alarms
  • Add changing of shocker type (and even hub and rfId)
  • save last opened tab (and load it on start)
  • Random shocking (specify random delay between shocks, min and max intensity/duration)
  • Random shocking -> Add background task + notification (works without notification???)
  • Fix alarms not sending controls when app is minimized (seems to work)
  • Live controls
  • Allow alarm tones to be used as patterns
  • Request permissions only when needed
  • fix reloading problems in settings after login?
  • (Big controls mode) fuck this shit, there's no space
  • Improved login for web (aka using token requests)
  • Web support (alarms working via AlarmServer)
  • Linux support (alarms working via AlarmServer)
  • Alarm support for Linux and web via https://dev1.rui2015.me
  • Add separate slider for shock and vibrate intensity
  • Add Alarm tone support for AlarmServer
  • Add info about alarm server
  • Code cleanup, add multiple predefined dialogs
  • Add online indicator for hubs on web
  • Add OTA Updates
  • Add Share Link support
  • Fix WS on web
  • Add Patterns to live controls
  • Flaschendrehen
  • Add shock confirmation above adustable intensity and duration.
  • Adapt to new Backend duration limit
  • Add confirmation on live system as well.
  • Add global limit for self.
  • Stop live playback when changing type
  • Make sure text in popups is scrollable so it can be read completely
  • Implement login V2 (All except linux)
  • Implement Shares V2 (once officially declared done in backend and implementation in official frontend exists. Can't make sense of the api rn without explenation)

Planned settings

  • Hide/unhiding of the delay option
  • Slider instead of RangeSlider for delay

Development

This app is based on flutter and thus you need to first install flutter: https://docs.flutter.dev/get-started/install

Afterwards clone the repository and get all dependencies:

  1. git clone https://codeberg.org/Kaiya/ShockAlarmApp
  2. cd ShockAlarmApp
  3. flutter pub get

Publishing

Steps for making a new release

  1. Test functionality of app on Android, Web and Linux.
  2. (when adding new packages) Test the Android build pipeline by manually triggering
  3. Bump the version in pubspec.yaml and main.dart
  4. Create a changelog at fastlane/metadata/android/en-US/changelogs in a file names <versioncode>.txt. It should be markdown formatted.
  5. Create a new tag (or release) and push it to the repo. Actions will spin up to compile the binaries and add the previously created changelog to the release
  6. (optional) Update the screenshots in fastlane/metadata/android/en-US/images/phoneScreenshots/ for FDroid and the ReadMe

Setting up a Windows vm for actions

  1. Install git, nodejs, iscc
  2. Install Vistual Studio build tools with Desktop for c++ (workflow; PS: this is pain af. I hate it!!!!!!!)
  3. Install forgejo runner https://github.com/Crown0815/Forgejo-runner-windows-builder and register it (host runner).
  4. Start the windows build via actions

Publishing on FDroid

FDroid will publish the update autonomously once a build cycle starts. The changelog we created earlier will be added to the FDroid page automatically