Bluetooth-оберег на всём готовом

Введение


Здравствуй, читатель.

Эта статья пишется, чтобы поделиться простым, но полезным лайфхаком, который я недавно ввел в пробную эксплуатацию.

Требовалось решить следующую задачу.
Для очень пожилой родственницы, не приемлющей сотовые телефоны (тем более смартфоны) надо было сделать носимую кнопку экстренного вызова, которая может быть использована, чтобы оповестить родных, например, о том, что она упала в пределах квартиры, передвигаясь на ходунках, и не может встать/добраться до телефона (собственно, с такого случая, задача и возникла).

98bddebdc4384bcea9ffd10b26a6218d.png

Забегая вперёд, скажу, что в итоге получилось более широкое решение, которое может использоваться, чтобы быстро и незаметно оповестить кого-то том, что что-то произошло, не доставая сотовый телефон. И всё это без «ещё одного устройства, которое надо заряжать».

Фраза «на всём готовом» подразумевает, что всё железо можно найти почти без дополнительных затрат. Своих приложений писать не надо. Программировать — графически, паять — по желанию. Короче, всё просто.

Идея


Несмотря на то, что рынок насыщен устройствами, подходящими для решения задач срочного оповещения, все они, от детских часов-трекеров до различных BLE-кнопок, обладают существенным недостатком: забыл зарядить/поменять батарейку вовремя — прощай главная функция. Функционал часов при этом явно избыточен, а управление — усложнено.
У BLE-кнопок явное преимущество — одна кнопка, и живёт она несколько месяцев на одной батарейке типа CR2032. Собственно, пока выбирал, какую кнопку заказать, всё и придумалось, и необходимость заказа отпала.

А придумалась следующая простая идея: блютус устройству экстренной связи не только не обязательно, но даже вредно быть включённым в «мирное время». Пусть сигналом тревоги будет сам факт включения и подсоединения устройства к смартфону. Таким образом, устройство всегда готово к выполнению своей, пусть нечастой, но архиважной функции (при работающем смартфоне с блютус). И получается, теоретически, даже неважно, что это за устройство. Обнаружили Bluetooth-соединение с заданным устройством — запустили процесс экстренного оповещения. Впрочем, выбор в качестве устройства блютус гарнитуры позволяет добавить к основному функционалу полезных плюшек.

Реализация


Итак, система экстренного внутриквартирного оповещения может быть запущена на Android-смартфоне в почти произвольном состоянии (лишь бы работал блютус и сотовая связь), стоящем на вечном приколе на зарядке в центральной комнате, куда достреливает блютус со всех концов квартиры.

В качестве блютус устройства использовано ухо от сломанных блютус наушников. Аккумулятор из второго уха благополучно влез в первое. Приделал шнурок на шею — получился оберег.
image
Как обычно, забыл сфотографировать конечный результат.

Программная часть — чудесное приложение Automate, позволяющее алгоритмизировать и автоматизировать различные процессы с использованием возможностей смартфона. Давно хотел попробовать, да времени и случая не было. Что могу сказать — очень круто. Сразу множество идей возникает, что ещё можно сделать.

Для Automate написано два процесса («flow» в терминлогии приложения) «Bluetooth connection alert» — для оповещения и «Auto answer» для приёма входящих звонков:
8b7aa25be1974cf7a2477db9528f12be.png

Сценарии выглядят очень просто, блоки конфигурируются интуитивно, в программе доступна справка по функциям и конфигурации блоков…

Немного текста под спойлером
Сценарий 1) Рассылка СМС по списку номеров при соединении с заданным блютус устройством и последующий звонок на заданный номер телефона. На старте конфигурируется массив строк номеров оповещения [»+7номер1»,»+7номер2»…], далее — блок проверки соединения блютус устройства, законфигурированный на заданный мак-адрес устройства.
MAC-адрес гарнитуры для конфигурации блока Device Connect можно узнать с помощью программы типа Bluetooth Device Info.
После соединения — цикл рассылки SMS по номерам массива, звонок на заданный номер и цикл ожидания отключения блютус устройства для перехода в состояние нового ожидания.

Сценарий 2) Автоответ на звонок с любого номера из списка — работает независимо от состояния тревоги.
Блок Incoming Call возвращает аргумент строковой записи номера, который потом проверяется на членство в заданном массиве номеров. В случае нахождения номера в массиве вызов автоматически принимается.

Automate конфигурируется на запуск при загрузке телефона, при старте запускаются запущенные в последний раз сценарии. Ограничения свободной версии (лимит одновременных потоков, лимит на отправку СМС и проч.) не препятствуют нормальной работе системы экстренного оповещения.

Отмечу, что блок автоответа (об этом предупреждает и Automate) может работать не на всех телефонах. Например, на старом Fly iQ411 (Android 4.3) на котором была запущена система оповещения, автоответ работает, на тестовом LG G4 (Android 6) — нет.

Что получается в итоге:


При прошествии достаточно зажать кнопку устройства на несколько секунд до его включения. Обнаружив подключение Bluetooth-устройства с заданным адресом, смартфон рассылает оповещения и набирает номер. При этом, раз устройство — гарнитура, то звук идёт через неё, и её микрофон работает, что позволяет тому, чей номер набран, слышать происходящее, а вызвавшему- общаться с ним, приложив «оберег» к уху. Если же номер не ответил, то при звонке любого доверенного лица телефон автоматически примет вызов, опять же через гарнитуру.

Если к телефону подключить колонки, тогда можно звонить и обращатиться к родственнику через автоответ по громкой связи в «мирное время», когда блютус-устройство не активировано и звук воспроизводится через колонки.

Пути развития:


Списки номеров которые заданы в виде массива строк, потенциально можно читать из адресной книги, фильтруя по определённым пометкам (типа тега «SOS» в примечаниях). Это вынесет конфигурацию номеров из приложения Automate и позволит использовать один и тот же универсальный сценарий на разных телефонах.

Применительно к мобильному использованию оберега ребёнком, можно запускать GPS, считывать и отсылать GPS координаты происшествия, инициировать процесс периодической посылки новых координат при перемещениях.
Применительно к мобильному использованию автоответ конечно имеет смысл делать условным — чтобы он работал только в состоянии тревоги.

Для пожилых родственников можно добавить сценарий Automate для дистанционного отключения блютус гарнитуры после её случайного включения, чтобы не садилась батарейка: Посылка специальной команды через СМС отключает на телефоне блютус на несколько минут → Гарнитура, потеряв телефон, отключается сама.

Вот и всё. Может кому пригодится.

© Geektimes