Добавить в корзинуПозвонить
Найти в Дзене
Максим Миронов

Умный дом на роутере D-Link. Часть 6. Удаленное управление со смартфона, программа IoT MQTT Panel.

Всем привет! Управление умным домом со смартфона можно сделать, с использованием протокола MQTT. Для этого нам нужен MQTT-сервер, он будет служить промежуточным звеном между системой умного дома и программой управления на смартфоне. Для локального управления можно использовать сам роутер, как это сделать описано в предыдущей статье. Для удаленного управления потребуется MQTT сервер, к которому можно подключится через интернет. Те, кто в этом хорошо понимает, могут создать такой сервер сами. Если это не ваш вариант, то следует воспользоваться какими-либо публичными серверами в интернете. Существуют бесплатные варианты, но, как правило, там есть ограничения, например лимитируется количество сообщений за определенный промежуток времени и прочее. Для проверки работы системы можно использовать бесплатный test.mosquitto.org, только учтите, что там "проходной двор", все могут увидеть всё и вмешаться в работу вашего умного дома, поэтому используйте его только для отладки. Есть недорогие плат

Всем привет!

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

Для локального управления можно использовать сам роутер, как это сделать описано в предыдущей статье.

Для удаленного управления потребуется MQTT сервер, к которому можно подключится через интернет. Те, кто в этом хорошо понимает, могут создать такой сервер сами. Если это не ваш вариант, то следует воспользоваться какими-либо публичными серверами в интернете. Существуют бесплатные варианты, но, как правило, там есть ограничения, например лимитируется количество сообщений за определенный промежуток времени и прочее. Для проверки работы системы можно использовать бесплатный test.mosquitto.org, только учтите, что там "проходной двор", все могут увидеть всё и вмешаться в работу вашего умного дома, поэтому используйте его только для отладки.

Есть недорогие платные публичные MQTT - серверы, буквально за несколько сотен российских рублей в год. В интернете есть обзоры, сравнения.

Какой бы вариант вы не выбрали, нужно знать данные для подключения к серверу. Регистрируйтесь, получайте адрес, порт, логин и пароль. К test.mosquitto.org можно подключаться без пароля.

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

Далее нам потребуется программа для смартфона, которая будет общаться с "умным домом" с помощью MQTT. Существует множество таких программ под Android, попробовав использовать некоторые из них я остановился на "IoT MQTT Panel", её можно скачать с Google Play.

Приложения в Google Play – IoT MQTT Panel

В бесплатной версии программы доступен базовый функционал, но его хватает для многого.

Приступим к настройке. В первую очередь нужно настроить соединение с сервером. Запускаем программу и если она сама вас не попросила создать соединение, то нажимаем на значок меню и затем "All connections".

-2

Попадаем в раздел соединений. Нажимаем на синий кружок с плюсом в правом нижнем углу.

-3

Открывается раздел добавления соединения.

-4

Вводим параметры в соответствующие графы:

"Connection name" - имя соединения, придумываем какое нравится;

"Client ID" - можно оставить пустым;

"Broker address" - адрес или имя MQTT-сервера;

"Port" - порт подключения к серверу, на роутере по умолчанию 1883;

"Username" - имя пользователя (логин);

"Password" - пароль для подключения.

Чтобы стали доступны поля ввода логина и пароля, нужно нажать на галочку справа от "Additional options".

Не спешите нажимать кнопку "Create", нам еще нужно создать приборную панель (Dashboard), на которой в свою очередь будут располагаться переключатели и показатели датчиков умного дома. Нажимаем на "Add Dashboard".

-5

Вводим имя и нажимаем "Save".

-6

Теперь панель появилась в параметрах соединения. Нажимаем "Save".

-7

В разделе "Connections" появилось наше соединение. Нажимаем на него. Откроется содержимое приборной панели, на которой кроме двух кнопок ничего нет.

-8

Нажатие на кнопку "Add a panel" откроет раздел добавления панели для какого-либо датчика или переключателя.

-9

Отложим пока смартфон и зайдем в интерфейс управления Domoticz.

В качестве примера настроим управление выключателем. Для этого я создал виртуальное устройство типа "Switch" и добавил на панель переключателей. В реальном сценарии это может быть переключатель

-10

О том, как создавать виртуальные устройства описано в предыдущей статье.

Теперь сделаем удаленное управление его состоянием. Для начала нужно узнать idx этого устройства. В верхнем меню нажимаем "Setup", далее "Devices". В таблице устройств находим наш переключатель и смотрим какой у него idx.

-11

Возвращаемся назад к смартфону и программе IoT MQTT Panel. Мы остановились на добавлении панели для переключателя. Выбираем "Switch". Программа запрашивает параметры для этого переключателя.

-12

"Panel name" - придумаваем название переключателю;

"Topic" - указываем топик, в который будут публиковаться данные о состоянии переключателя в момент переключения;

"Subscribe Topic" - из этого топика программа будет получать данные о состоянии переключателя. Обратите внимание, что, в отличии от топика для входящих данных, тут используется не только префикс "out", но и значение idx переключателя.

"Payload on" и "Payload off" - указываем значения для включенного и выключенного состояний выключателя.

"Payload is JSON Data" - ставим тут галочку, т.к. Domoticz для обмена данными по MQTT использует формат JSON.

"JsonPath for subscribe" - указываем шаблон для обработки данных, получаемых от Domoticz. В нашем случае состояние переключателя передается в параметре "nvalue".

"JSON pattern for publish" - задаем шаблон для данных, отправляемых Domoticz. Указываем idx нашего переключателя, а вместо <payload> программа подставит соответствующее значение при переключении. Будут использованы значения, которые мы задавали в пунктах "Payload on" и "Payload off".

Нажимаем кнопку "Save" и видим, что на панели приборов появился переключатель.

-13

При его переключении должно меняться состояние переключателя в Domoticz.

-14

Теперь сделаем так, чтобы программа показывала температуру. Узнаём idx датчика температуры, в моем случае idx=8. Значение температуры Domoticz передает в виде текста, поэтому в программе на смартфоне добавляем панель "Text Log".

-15

Часть параметров нам уже знакома, остановлюсь лишь на некоторых моментах. Ставим галочку "Show last message only", иначе не будут отображены некоторые параметры. Указываем единицы измерения, размер текста. Шаблон для обработки поступающих данных теперь "$.svalue1", не как у переключателя. Нажимаем кнопку "Save".

-16

Если у вас значение температуры не отображается, то, возможно данные еще не передавались на MQTT - сервер. Подождите какое-то время, датчик передаст данные "Domoticz", а тот, в свою очередь, их опубликует по MQTT. Отслеживать данный процесс можно в программе "MQTT Explorer".

Теперь, в продолжение темы предыдущей статьи, сделаем переключение температурных режимов. Добавляем на приборную доску панель "Combo box" и настраиваем ее.

-17

Данный переключатель имеет idx=17, что учитывается в поле с названием исходящего топика, а так же в шаблоне для публикуемых данных. Заполняем поля "Label for item" и "Payload for item" для первого и второго состояний переключателя, а поскольку у нас их три, то добавляем еще одно, нажав на кружок с плюсом справа от "Add more item".

Шаблон для отправляемой команды здесь сложнее, чем предыдущие:

{"command": "switchlight", "idx": 17, "switchcmd": "Set Level", "level": <payload>}

Если отметить галочками пункты "Show recieved timestamp" и "Show sent timestamp", то на панели будут отображаться время отправки и время получения состояний переключателя.

-18

Нажимая на добавленную плитку, мы сможем выбрать один из трех, настроенных нами, вариантов.

-19

После выбора нужного режима, в программе "MQTT Explorer" отобразятся отправленные команды.

-20

Если все сделано правильно, то и в "Domoticz" можно будет наблюдать изменение состояния соответствующего переключателя.

Немного о настройке внешнего вида "приборной панели". Для того, чтобы поменять порядок следования панелей параметров или изменить их размер, нужно нажать на значок с тремя вертикальными точками в правой части нужной панели. После этого в нижней части окна программы появятся настройки вида конкретной панели.

-21

Для некоторого типа панелей можно задать размер и стиль шрифта, добавить к опциям иконки.

-22

В качестве переключателя режимов можно использовать "Radio Buttons" (показано на рисунке выше). Настраивается аналогично.

На этом пока все. С остальными настройками я предлагаю вам ознакомиться самостоятельно.

Напомню, что ссылки на скачивание прошивок с "умным домом" для роутеров D-Link можно найти в Telegram-канале @dlink_ru_smart_home.

Рекомендую ознакомится с другими статьями по этой теме теме:

Часть 1. Запуск системы Domoticz.
Часть 2. Подключение к Domoticz устройств Zigbee.
Часть 3. Настройка Domoticz для работы с MQTT.
Часть 4. Автоматизация, блочные скрипты. Управляем вентиляцией.
Часть 5. Настраиваю управление отоплением на даче.

Всем доброго здравия! Пока!