MQTT BroadcastReceiver

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

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

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

Внешний вид.

Screen1

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

Настройки.

Screen2

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

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

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

ioBroker.mqtt

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

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

Android APP
(0.0) / 0
Прежде чем оставить комментарий, пожалуйста, ознакомьтесь с правилами комментирования. Оставляя комментарий, вы подтверждаете ваше согласие с данными правилами и осознаете возможную ответственность за их нарушение. Все комментарии премодерируются.
0