Никогда не думал, что столкнусь с этой темой 🚑
Речь пойдет о ночных эпилептических приступах с тонико-клоническими судорогами. Это приступ, который включает потерю сознания, сильное напряжение всех мышц и ритмичные подёргивания. Цель статьи — привлечение внимания к теме и поиску решений.
SeizureDetector? Нет, ShakeDetector
Приложение изначально называлось SeizureDetector — «детектор приступа». Под таким именем Connect IQ Store публиковать его отказался. И правильно сделали. Слишком много ответственности.
Теперь это ShakeDetector, детектор тряски.
Название честное. Приложение не ставит диагноз, не обещает спасти жизнь и не заменяет врача. Оно просто ловит длительную ритмичную тряску запястья человека, который носит часы.

Кому это адресовано 🚨
Не носителю часов, а тому, кто рядом
Человек во время приступа на свои вибрирующие часы не отреагирует. Разбудить его часы не смогут — пока приступ сам не закончится, это бессмысленно. Вибрация и звук работают на тех, кто в пределах слышимости. Push-уведомления — на тех, кто в другой комнате.
Это важно понимать с самого начала.
Задача обнаружения начала «тряски» 🔍
Меня заинтересовало: есть ли в 2026 году устройства, которые сигналят хотя бы о начале клонической фазы — тех самых ритмичных подёргиваний?
Оказалось, доступных нет. Либо дорого, либо по подписке (и тоже недёшево), либо попробуй ещё купи.
Гуглёж привёл к опенсорсному OpenSeizureDetector.
Схема такая: часы Pine64 или Garmin шлют данные с датчиков (акселерометр, пульс, сатурация) на хост с Android. Там крутится ИИ и решает, сигналить или нет. Делают всё по-настоящему: валидация, нормальный анализ сигнала, сообщество. Если нужно рабочее решение — идти надо туда.
Хоста под iOS нет.
У меня как раз есть Garmin Instinct 2. Приложение под них собралось и заработало — я проверял работу, просто имитируя долгую тряску. В моей голове родилась идея. Или просто желание отвлечься от этой медицинской темы и погрузиться в разработку.
Идея 💡
Развернуть логику OpenSeizureDetector наоборот.
Я убрал хост вообще. Часы пусть сами считают, когда сигналить. Никакого устройства-мозга в цепочке нет.
Бонусом развития идеи я получил работающие web push-уведомления — и на iOS в том числе. Так появился пет-проект, который в итоге приняли в Garmin IQ Store.
Как работает ⚙️
Акселерометр 25 раз в секунду отдаёт ускорение по трём осям. Считаем длину вектора — в покое это 1g, при взмахе подскакивает. Тревога, когда таких всплесков много и они идут непрерывно дольше трёх секунд: одиночный удар о кровать даёт всплесков не меньше, но заканчивается за секунду. Всё считается на часах. Без других затратных датчиков. Пульс и сатурация не используются. Для детектирования не нужны ни телефон, ни интернет.
Алгоритм ловит длительную сильную тряску запястья и поднимает тревогу: вибрация, звук, подсветка.
Телефон нужен только как более громкое средство оповещения. Часы должны быть соединены с Garmin Connect — веб-запрос для отправки уведомления уходит через него.
🛠 Средства разработки
Никаких открытий не будет:
— VS Code + плагин Monkey C + Garmin SDK.
— Умелый ИИндус 🤖, которого надо подпинывать в правильную сторону.
— Весь процесс разработки, отладки и сборки — в VS Code.
— Серверная часть для пушей — Node.js + SQLite, тоже в VS Code.
Всё стандартно, ничего сверхъестественного.
Уведомления 📱
Сделано через web push, потому что хотелось поддержать iOS. Подписка на уведомления происходит на сайте, адрес к настройке генерируется на часах из меню приложения. Нативное приложение на телефон не требуется:
— Открыл страницу
— Нажал кнопку
— Подписался
На iOS, конечно, чуть сложнее (как с MAX 🤦), но работает.
Несколько телефонов на одни часы — тоже можно. Телефон подключён как усилитель, а не как зависимость.
Упал сервер, кончился интернет, забыли телефон дома — часы работают ровно так же, просто без дальнего канала.
Исходники 📂
GitHub: https://github.com/geminixandroid/garmin-shake-detector
В репозитории обе половины:
— приложение для часов
— сервер на Node для push
Можно поднять свой сервер — тогда наружу вообще ничего не уходит.
Чего приложение не умеет 😔
Тема такая, что надо быть честным.
Это не медицинское устройство. Клинических испытаний не проходило. Внутри — счётчик резких движений. Не монитор и не замена наблюдению. Собственно, из-за этого приложение и переименовано — название обещало бы то, чего оно не делает.
Конкретные ограничения:
|
Что не умеет |
Почему |
|---|---|
|
Видеть тоническую фазу |
Мышцы напряжены, движения почти нет — считать нечего |
|
Отличать ритмичную тряску от беспорядочного махания руками |
Алгоритм простой, это не ИИ |
|
Работать, если рука придавлена одеялом |
Амплитуда гасится. Общая беда наручных датчиков ночью |
|
Обнаруживать фокальные, абсансные, атонические приступы |
Они вообще без выраженных движений |
|
Гарантировать отсутствие ложных срабатываний |
Если часы ложно сработают, это может стать триггером для приступа у человека с эпилепсией. Да, такая связь тоже есть. |
Вместо вывода🧠
Этот проект не про «я спас мир». Он про:
— честный эксперимент
— желание сделать хоть что-то полезное
— отказ от иллюзий, что смарт-часы = медицинское оборудование
Приложение лежит в магазине Garmin. Оно бесплатное. Оно не врёт, что умеет больше, чем на самом деле.
Если у вас или ваших близких есть эпилепсия — не полагайтесь на часы. Консультируйтесь с врачами, используйте подтверждённые методы мониторинга.
А если вы разработчик — загляните в исходники. Может, пригодится.
Берегите себя и своих близких. И помните: даже простой детектор тряски может дать кому-то лишние 30 секунд, чтобы прийти на помощь.
Ссылки
Репозиторий на GitHub
OpenSeizureDetector — тот самый проект, который вдохновил
Garmin Connect IQ Store — там теперь лежит ShakeDetector
ссылка на оригинал статьи https://habr.com/ru/articles/1067220/