Как вам идея собирать данные с различных беспроводных датчиков с помощью мобильного телефона и отправлять их в домашнюю систему автоматики?
Время от времени в голову приходят странные идеи -- например, можно ли сделать мобильную систему автоматики по тому же принципу, что и станционарный Умный Дом? И нужно ли для этого ещё одно устройство, телефон-то всегда с собой и он достаточно мощный для подобной задачи. А датчики, к примеру на основе Zigbee, живут многие месяцы от батарейки. Но как подключить одно к другому? Постойте... а почему именно Zigbee? Ведь есть ещё BLE, выбор которых хоть и меньше, но за то этот стандарт связи вполне поддерживается телефоном... Так-так-так... А что если написать приложение, которое будет собирать показания с BLE-датчиков и как-то обрабатывать данные на телефоне. Так, стоп, а что если кому-то ещё приходила такая идея?! Гуглим и... находим :)
Знакомьтесь, приложение Theengs app -- BLE хаб в вашем телефоне.
Что оно умеет? Да пожалуй только одно -- считывать показания совместимых BLE-сенсоров и пересылать их на указанный MQTT-сервер. Откровенно говоря, применение этого ПО в стационарных условиях дома или квартиры мне видится не очень полезным -- зачем полагаться на передачу данных через телефон, если гораздо надёжнее иметь нормальный хаб дома, который будет включен постоянно и присылать данные в систему всегда, а не только когда телефон и его владелец находится дома. Но если подумать над сценариями, когда имеет смысл собирать данные там, где находится телефон, и тогда, когда это актуально для владельца телефона без привязки к дому, то идея начинает принимать практический смысл.
Например, поставив датчик температуры/влажности в машине, вы не только сможете отслеживать данные по климату, но и сможете давать знать домашней системе знак, что вы находитесь в этой самой машине в зоне действия датчика, и всё это работает везде, где есть мобильный Интернет.
Это первое, что пришло в голову, но если подумать, то наверняка можно придумать и более интересные сценарии, ведь BLE-датчиков довольно много разных -- климат, движение, открытие и прочее.
Кратко про то, как настроить приложение.
Я буду в качестве примера использовать настройку через CONNECT, но можно использовать любой другой MQTT-сервер, доступный через Интернет.
Необходимо установить приложение Theengs -- обратите внимание, что готовое приложение платное, но есть открытый исходный код на GitHub-е и при большом желании сэкономить (и при соответствующих навыках) вы можете собрать его бесплатно.
После установки, через приложение мы можем сразу видеть ближайшие BLE-датчики (в моём случае это несколько сенсоров температуры/влажности от Xiaomi):
Переходим в настройки и прописываем данные доступа к CONNECT-у:
Обратите внимание на топики -- первый топик должен совпадать с именем пользоватля, а второй должен называться "forward" -- его указание позволяет через MQTT-брокер CONNECT-а отправлять данные в модуль MQTT домашней системы (внимание - на момент написания статьи эта функция была включена только в альфа-ветке системы MajorDoMo).
После этого данные с датчиков должны появиться в вашей системе в модуле MQTT в ветке BTtoMQTT и интересующие вас показания можно привязать к соответствующим объектам:
Ещё один важный момент -- для работы приложения в фоновом режиме необходимо включить соответствующий пункт в настройках, а также внимательно пройтись по рекомендованным разрешениям для приложения (ссылка), а иначе операционная система будет периодически выгружать приложение из памяти и полноценная работа в фоновом режиме не получится.
Собственно всё. Надеюсь, эта информация была как минимум интересна :)