Собрано, налажено, проверено.
Давайте последовательно решим такую задачу: в коридоре установим лампочку под управлением старого блока SU-1-300, добавим выключатель и датчик движения и заведем все в OpenHab.
Управление блоками, которые могут регулировать яркость нагрузки, осуществляется с привязкой к ячейкам 0-10 нашего устройства. Действуем.
1. Связываем ячейку 00 на прием с пультом, который будет управлять силовым блоком:
2. Связываем ячейку 00 на передачу с силовым блоком:
3. Связываем ячейку 40 с датчиком движения:
4. Связываем пульт из пункта 1 с силовым блоком из пункта 2 по их инструкции.
5. Связываем датчик движения из пункта 3 с силовым блоком из пункта 2 по инструкции от этих железок.
Вау! Наконец у нас все повязаны:
Теперь двигаемся в OpenHab и делаем итемы:
Switch noo01cc00 "Коридор (00" (Noo01) { mqtt="<[mosquitto:fromnoo01/00/state:state:default], >[mosquitto:noo01/comm/00:command:on:ON],>[mosquitto:noo01/comm/00:command:off:OFF]" }
Switch noo01cn00 "Коридор cn (00)" (Noo01) { mqtt="<[mosquitto:fromnoo01/00/changed:state:default]" }
Switch noo01IR01 "Коридор IR (40)" (Noo01) { mqtt="<[mosquitto:fromnoo01/40/state:state:default]" }
Вставляем их в сайтмэп все три, но вообще то потом надо оставить только один, самый первый. Остальные для проверки и понимания явления:
Switch item=noo01cc00
Switch item=noo01cn00
Switch item=noo01IR01
То есть лишь noo01cc00
является главным, два других — вспомогательные.
Пишем правила:
rule "When Corridor Switch is changed by noo01"
when
Item noo01cn00 received update ON
then
if (noo01cc00.state == ON) {
postUpdate(noo01cc00, OFF)
}
else {
postUpdate(noo01cc00, ON)
}
end
rule "When Corridor IR Fired"
when
Item noo01IR01 received update
then
if (noo01IR01.state == ON) {
postUpdate(noo01cc00, ON)
}
else {
postUpdate(noo01cc00, OFF)
}
end
Что мы получили?
Первое правило реагирует на получение от пульта управления команды на переключение и, соответствующим образом, меняет отражение в OpenHab состояния выключателя.
Чтобы все было правильно, первый раз следует включить и выключить наш силовой блок не физическим пультом, а через Switch OpenHab. Тогда нашему дому будет точно известно начальное состояние силового блока.
Второе правило меняет отражение состояния нашего силового блока в зависимости от работы датчика движения. Причем, это правило будет работать как со старыми моделями датчиков так и с новыми. Различие лишь в том, что старые датчики подают команду на выключение, которая будет принята силовым блоком, а новые — только включают их на время. При этом информация о выключении вычисляется ESP-8266 и отправляется в OpenHab самостоятельно.
И пример того, как это (у меня пока в тестовом режиме и привязано к ячейке 02) выглядит в OpenHab:
Сработал датчик движения:
На сегодня все. Надеюсь, заметка оказалась для вас не утомительной. Продолжение обязательно будет.