Подключение устройств из Sprut.hub в Wirenboard

от автора

Доброго времени. К написанию данной статьи подтолкнула ситуация, что вроде элементарная задача получить данные с установленного модуля Sprut.hub в родительский WirenBoard, вызвала определенные сложности. Поиском находится разрозненная информация. В чатах вопрос всплывал не единожды. Пока в памяти свежо, как это делается, и что бы потом самому не вспоминать, описал поэтапно, что, где и как.

Исходные данные:

  1. Контроллер WirenBoard 7. Версия ПО на момент написания wb-2401.

  2. Установленный модуль расширения Sprut.stick ZigBee

  3. Термостат c али с интерфейсом Zigbee.

  4. Контроллер настроен, Sprut настроен, термостат к Sprut подключен и управляется.

Задача: организовать управление отоплением в дачном домике с помощью внешнего термостата.

Первое

В первую очередь необходимо в Sprut.hub в разделе «Мосты» http://ip_вашего_контроллера/bridges создать новый Мост. Для этого:

  • нажимаем плюсик в верхнем правом углу и выбираем пункт «Создать мост»,

  • в открывшемся окне выбираем Тип моста — «MQTT»,

  • указываем желаемое имя, к примеру «MQTTSPRUT».

После добавления, данный мост появляется в левой части в списке.

  • открываем настройки только что созданного моста (три точки),

  • редактируем (если необходимо) адрес и порт (я оставил у себя как есть),

  • на вкладке «Экспертные» правим Префикс (если необходимо).

Все, мост готов, устройства в него добавляются автоматически (если не отключили в пункте выше).

Второе

Проверяем, что необходимое устройство публикует информацию. Я использую MQTT Explorer, очень удобное, бесплатное приложение. Для этого:

  • запускаем MQTT Explorer,

  • создаем новое подключение к своем серверу, (указываем IP адрес, порт, логин/пароль (если установлен).

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

Раскрываем выпадающий список и ищем в нем необходимое нам устройство, и нужные параметры. Вот так это выглядит у меня.

При выделение нужного параметра, программа в правой части показывает ссылку на топик данного параметра, которые нам пригодится в правилах WirenBoard.

Третье

Переходим на сам контроллер и создаем новое правило.

Я всегда стараюсь по возможности присваивать устройства, ссылки на топики переменным, что бы в случаи замены устройства, достаточно один раз его было поправить в переменной, а сам код не трогать.

Объявляем две переменные:

  • TargetTemperatura — целевая температура нашего виртуального термостата, с которой мы уже будем работать при управление отоплением,

  • MQTT_TargetTemperatura — это ссылка на топик с нужным параметром физического термостата, который подключен к Sprut.hub. Ссылка взять из MQTT Explorer.

var TargetTemperatura = «01_virtual_termostat/TemperaturaTarget»; var MQTT_TargetTemperatura = «Sprut.hub/accessories/35/13/18»;

— задаем описание виртуального термостата:

var Termostat = {  TemperaturaTarget: {  title: «Целевая температура»,  type: «range»,  order: 0,  value: 22,  max: 35,  min: 10  }, };
  • создаем опрос с получением данных из физического термостата, чтением его топика и записываем полученные значения в виртуальный термостат:

trackMqtt(MQTT_TargetTemperatura, function(message){  dev[«01_VirtualTermostat/TemperaturaTarget»] = parseInt(message.value);  });
  • создаем виртуальный термостат:

defineVirtualDevice('01_VirtualTermostat', {  title: 'Управление отоплением',  cells: Termostat,  });

Сохраняем правило. Переходим на страницу Устройства в WirenBoard. Если все сделано правильно, то там должно появиться новое устройство «Управление отоплением» с параметром «Целевая температура». При изменении целевой температуры на физическом термостате, она меняется и в виртуальном.

Если необходимо обратная передача данных (при изменении целевой температуры виртуального термотстата), необходимо добавить процедуру:

defineRule(»Целевая температура», {  whenChanged: «01_virtual_termostat/TemperaturaTarget»,  then: function (newValue) {  dev[MQTT_TargetTemperatura] = dev[«11_VirtualTermostat/TemperaturaTarget»];  }  });

Но с моим термостатом это не работает. Пока не разобрался в чем дело. Или сам термостат (вряд ли), или что-то сделал не так.

Собственно все. Спасибо.


ссылка на оригинал статьи https://habr.com/ru/articles/800831/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *