Подключение MQTT Dash к контроллеру Wiren Board
Введение
MQTT Dash — мобильное приложение для работы с протоколом MQTT. Позволяет создавать пользовательские панели управления и управлять устройствами умного дома с помощью смартфона или планшета.
Связать MQTT Dash с контроллером Wiren Board можно двумя способами:
- Считывать MQTT топики напрямую с контроллера, если контроллер и мобильное устройство с MQTT Dash работают в одной сети или контроллер имеет «белый» IP-адрес.
- Настроть передачу через внешний MQTT-брокер. В этом случае «белый» IP-адрес контроллеру не нужен.
Установка и подключение к брокеру
Установите приложение MQTT Dash из GooglePlay на смартфон или планшет.
Создайте новое подключение. В MQTT Dash можно создать несколько подключений, которые будут получать данные от разных брокеров или от одного брокера. Это удобно если вам нужно контролировать несколько помещений.
Чтобы создать новое подключение выполните следующие действия:
- Нажмите «+» в правом верхнем углу экрана.
- В появившемся окне задайте произвольное Имя подключения, которое будет отображаться на главном экране.
- Введите Адрес и Порт, полученные от внешнего брокера или, в случае локального подключения, введите IP-адрес контроллера и порт 1883. О том как передавать данные с контроллера на внешний брокер читайте на странице про MQTT в Wiren Board.
- Укажите предоставленные брокером Имя пользователя и Пароль пользователя. При локальном подключении оставьте эти поля пустыми.
- Идентификатор клиента можно оставить по умолчанию.
- Задайте размер плиток и количество колонок с метриками по вертикали и горизонтали.
- Нажмите дискету в правом верхнем углу экрана. Вы попадете на главный экран и увидите созданное подключение.
- Откройте созданное подключение. Если никаких уведомлений не появилось значит подключение выполнено успешно. Если появились уведомления с ошибками, проверьте правильность заполнения данных.
Добавление устройств
После создания подключения к MQTT-брокеру можно создавать метрики:
- Откройте созданное подключение и нажмите «+» в правом верхнем углу экрана.
- Выберите тип метрики соответствующий типу подключаемого параметра.
- В открывшемся окне настройки задайте Имя и Адрес топика. Адрес топика можно посмотреть на вкладке Настройки-Каналы MQTT в веб-интерфейсе контроллера или воспользоваться программой MQTT Explorer.
- Обратите внимание, что для чтения значения топика необходимо указать его адрес в поле Topic (sub) в виде
/devices/buzzer/controls/enabled
. - Для записи параметра в топик необходимо указать в поле Topic (pub) адрес топика
/devices/buzzer/controls/enabled/on
.
- Обратите внимание, что для чтения значения топика необходимо указать его адрес в поле Topic (sub) в виде
- Поставьте галку «Включить публикацию», если метрика используется для публикации значения в топик.
- Задайте дополнительные параметры метрики, такие как цвет, изображение значка и т.д.
- Нажмите дискету в правом верхнем углу чтобы сохранить созданную метрику. Чтобы не заполнять одни и те же данные при создании нескольких однотипных метрик используйте инструмент «Клонировать».
Управление цветом RGB ленты с помощью MQTT Dash
Для управления цветом RGB ленты в MQTT Dash есть специальная метрика Цвет. Но чтобы использовать эту метрику с Wiren Board нужно преобразовать код цвета полученный из MQTT Dash из формата HEX в формат RGB. К контроллеру RGB-лента подключается с помощью диммера светодиодных лент WB-MRGBW-D.
Для этого можно воспользоваться следующим правилом (скриптом):
defineVirtualDevice("colorButton",
{
title: "Color Buttons", //Имя виртуального устройства
cells: {
"Dimmer 1": {
type: "text",
readonly: false,
//forceDefault: true,
value: "",
},
}
});
defineRule("color_convert", {
whenChanged: "colorButton/Dimmer 1",
then: function (newValue){
if(newValue.substring(0,1) == "#") {
newValue = newValue.substring(1);
}
r = parseInt("0x"+newValue.slice(0, 2));
g = parseInt("0x"+newValue.slice(2, 4));
b = parseInt("0x"+newValue.slice(4, 6));
log.info("R;G;B",r+";"+g+";"+b)
dev["wb-mrgbw-d-fw3_129/RGB Palette"] = r+";"+g+";"+b // R;G;B, строка передаваемая в топик диммера LED-лент
}
});
Скрипт создает новый MQTT-топик, который получает HEX-код цвета из MQTT Dash. Затем этот код преобразуется в формат RGB и записывается в соответствующий топик диммера RGB-ленты.
Полезные ссылки