MQTT BroadcastReceiver

Опубликовано bondrogeen

Некоторые производители мобильных устройств, советуют заряжать их до ~80%, чтобы продлить срок службы аккумулятору… Таким образом нужно следить за уровнем заряда телефона и при достижении установленного порога, отключать зарядное устройство от сети, либо информировать меня через голосовое оповещения в доме, чтобы это сделал я :)

— Так о чем это я… 

Давно хотел сделать приложение, которое будет следить за уровнем разряда телефона, входящих звонках и сообщений, и передавать эти события на сервер УД. Но как всегда отсутствие свободного времени, природная лень  и острой необходимости, данное приложение не занимало должного приоритета в списке моих задач на ближайшее будущее. Но работая над одним проектом на заказ, пришлось поближе познакомиться с библиотекой MQTT клиента Eclipse Paho под android, вот и решил, что время пришло.

Как уже писал выше, в качестве протокола для передачи данных используется MQTT, так как он достаточно популярен и поддерживается различными платформами для систем «умный дом». Чтобы реализовать поставленную задачу, а так же существенно не повлиять на продолжительность автономной работы android устройства, для MQTT был выбран режим, только публикации топиков, а все события приложение получает через BroadcastReceiver. BroadcastReceiver — это приемник широковещательных сообщений, android использует широковещательные сообщения для системных событий, таких как уровень зарядки батареи, сетевые подключения, входящие звонки и sms и т.д.

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

Внешний вид.

Установив приложения мы попадаем на главный экран, на котором расположен список из категории. Свайпом слева направо, можно вызвать боковую панель, где расположены пункты проверки соединения, настройки и другие не мало важные пункты. Имена категории и под категории можно создавать любые, названия топика (topic) должно содержать только латинский буквы и не иметь пробелов. Все категории будут создаваться в топике GT-I9500/info/item/.  Например для категории Room и ее под категория Light будут создан такой топик  GT-I9500/info/item/room/light

 

Настройки.

С большей частью настроек вкладки MQTT не должно возникнуть вопросов, разве что два последних пункта. Device name — это имя вашего android устройства, например у Samsung S4 имя будет GT-I9500, если у вас 2 одинаковых android устройства, то имя устройства нужно поменять, так как если этого не сделать все сообщения будут приходить на один топик. First topic — это первоначальный топик, данная опция нужна если хотите разместить не в корне брокера, как тут GT-I9500/info/battery/charging, а на пример в топике mytopic, тогда все топики будут размещаться так mytopic/GT-I9500/info/battery/charging

General — это вкладка с общими настройками, тут можно выбрать какие данные будут отправляться на ваш сервер (MQTT брокер), а так же другие параметры. Пункт Full battery данная настройка устанавливает при каком уровне зарядке батареи, будет отправлен в топик GT-I9500/info/battery/status значение ok

 

Так, на данный момент, выглядят все топики  и их значения, которые передаются на MQTT брокер

 

В заключении можно посмотреть видео по настройки и работе приложения.

 

 

 

Тестовую версию можно скачать тут

Что нового:

 

0.0.3 (2017-06-17)

  • Добавил отправку местоположения и изменил внешний вид настроек.

0.0.2 (2017-06-16)

  • Добавил виджет.

0.0.1 (2017-06-07)

  • init
Рубрики: AndroidУмный дом

Отправить ответ

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Notify of