PDA

Просмотр полной версии : МУ210 подключение к OpenHAB через MQTT



NooBAsTiK
22.07.2020, 19:39
Исходные данные:
Версия Openhab 2.5.6
Модуль вывода МУ210-403 версия прошивки 1.0

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

1. В openHAB устанавливаем binding MQTT
50282
2. Идем в inbox и добавляем первым и настраиваем MQTT Broker потом Generic MQTT Thing
50283
3. В меню Things в Generic MQTT Thing создаём канал для нашего устройства тип "Number" и указываем две темы одна для отправки сообщений "MX210/Output/SET/DO/MASK" вторая для получения сообщений "MX210/Output/GET/DO/STATE"
50284
50285
4. Для созданного канала создаёте Ithems. Имя Ithems будет использоваться дальше в правилах, на скриншотах "InOut"
50286
5. Далее в мень Ithems создаём группу в которую будут входить наши выходы. Я назвал группу gLights, т.к. управляю светом, название группы будет использована в правилах.
50287
50288
5. Для созданной группы "gLights" делаем Ithems с именами следующего формата "Light_1" "Light_2" и т.д. где цифра после нижнего подчеркивания номер выхода на модуле вывода
50289
50290
6. Создаём файл правил (rules) в папке где установлен Openhab c таким содержанием:

import java.math.BigInteger

rule "Device in"
when
Item InOut changed
then
var BigInteger register = (InOut.state as DecimalType).toBigDecimal.toBigInteger
gLights.members.forEach[i |
val Integer nBit = Integer::parseInt(i.name.split("_").get(1)) - 1
i.postUpdate(if(register.testBit(nBit) == true) ON else OFF)
]
end

rule "Device out"
when
Member of gLights received command
then
var BigInteger register = (InOut.state as DecimalType).toBigDecimal.toBigInteger
val Integer nBit = Integer::parseInt(triggeringItem.name.split("_").get(1)) - 1
if(receivedCommand == ON)
register = register.setBit(nBit)
else
register = register.clearBit(nBit)
InOut.sendCommand(register)
end

Как видно в коде использованы ранее созданные имена InOut gLights

7. Перезагружаем openHAB и если всё сделали правильно модуль вывода будет реагировать на команды из openHAB и переключать выходы