Код: Выделить всё
ssh openhab@localhost -p8101
пароль - habopen
Код: Выделить всё
ssh openhab@localhost -p8101
пароль - habopen
Код: Выделить всё
Bridge megad:bridge:megadevice [port=8989]
{
//кнопки
Thing device lamp [hostname="192.168.1.13", port="23", password="sky", refresh="10"]
Thing device switching [hostname="192.168.1.13", port="18", password="sky", refresh="10"]
}
Код: Выделить всё
Switch switch_lamp "Выключатель [%s]" {channel ="megad:device:megadevice:switching:in"}
Switch KidsRoom_Light "Свет в детской" <light> (KidsRoom, gLight) ["Lighting"] {channel ="megad:device:megadevice:lamp:out"}
Код: Выделить всё
rule "OnCommand MegaD"
when
Item switch_lamp received update
then
if(KidsRoom_Light.state==ON){
KidsRoom_Light.postUpdate(OFF)
}
else if(KidsRoom_Light.state==OFF){
KidsRoom_Light.postUpdate(ON)
}
end
Я как раз писал что так делать не нужно и привел пример.d.v.ermakov писал(а): ↑05 апр 2019, 07:45Уже много раз писалось тут, что нужно sendcommand и postupdate одновременно ставить.
Для портов в режиме IN нужно указать Refresh=0.MyItem.postUpdate(<new_state>) - Change the status of an Item without causing any implicit actions. Can be used to reflect changes that may be caused by other means.
MyItem.sendCommand(<new_state>) - Change the status of an Item and trigger potential further actions, e.g. send a command to the linked device/binding.
Если нужно изменить состояние Switch не включая физический порт на меге - то postUpdate.skytronix писал(а): ↑04 апр 2019, 23:22Rule:Код: Выделить всё
rule "OnCommand MegaD" when Item switch_lamp received update // здесь еще можно вместо received update указать changed then // Если статус не равен ON, но равен UNDEF, NULL, OFF - то включить if(KidsRoom_Light.state != ON){ KidsRoom_Light.sendCommand(ON) } else { KidsRoom_Light.sendCommand(OFF) } end
Извиняюсь, мои сведения устарели.martiniman писал(а): ↑05 апр 2019, 11:49Я как раз писал что так делать не нужно и привел пример.
...
Вообще много чего обновилось с начиная с версии 2.4.
У меня такой же подход.skytronix писал(а): ↑05 апр 2019, 14:03martiniman, спасибо за подсказку. У меня физически состояние переключает сама Мега по Action. Я же хочу увидеть изменение в интерфейсе, но так же с возможностью управления из интерфейса. Вечером, проверю. В принципе, если повторно меге отправить команду на включение или выключение, ничего не должно измениться
Наблюдается странное поведение. Если написано sendCommand, то свет моргает с частотой рефреша, а если postUpdate, то статус в приложении меняется с такой же частотойmartiniman писал(а): ↑05 апр 2019, 12:16Rule:Если нужно изменить состояние Switch не включая физический порт на меге - то postUpdate.Код: Выделить всё
rule "OnCommand MegaD" when Item switch_lamp received update // здесь еще можно вместо received update указать changed then // Если статус не равен ON, но равен UNDEF, NULL, OFF - то включить if(KidsRoom_Light.state != ON){ KidsRoom_Light.sendCommand(ON) } else { KidsRoom_Light.sendCommand(OFF) } end
Если нужно включить порт на меге - то sendCommand, эта же команда установит состояние.
Прошу прощения, возможно сумбурно объясняю. Сейчас попробую объяснить.
Код: Выделить всё
21:36:18.766 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - Updating Megadevice things...
21:36:18.779 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - http://192.168.1.13/sky/?pt=23&cmd=get
21:36:18.816 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - input string-> OFF
21:36:18.828 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - http://192.168.1.13/sky/?tget=1
21:36:18.870 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - input string-> MegaD-2561 by <a href=http://ab-log.ru>ab-log.ru</a> (fw: 4.34b6)<br><a href=/sky/?cf=1>Config</a><br>-- MODS --<br><a href=/sky/?cf=3>XP1</a><br><a href=/sky/?cf=4>XP2</a><br>-- XT2 --<br><a href=/sky/?pt=30>P30 - NC</a><br><a href=/sky/?pt=31>P31 - NC</a><br><a href=/sky/?pt=32>P32 - NC</a><br><a href=/sky/?pt=33>P33 - NC</a><br><a href=/sky/?pt=34>P34 - NC</a><br><a href=/sky/?pt=35>P35 - NC</a><br>-- XP5/6 --<br><a href=/sky/?pt=36>P36 - NC</a><br><a href=/sky/?pt=37>P37 - NC</a>
21:36:19.224 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - incoming from Megad: 192.168.1.13 GET /md.php?&all=0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF/3;OFF/1;OFF/1;OFF/16;OFF/2;ON;OFF/11;ON;OFF;ON;OFF;ON;OFF;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF HTTP/1.1
21:36:19.226 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 0 value md.php
21:36:19.228 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 1 value
21:36:19.230 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 2 value all
21:36:19.232 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 3 value 0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF
21:36:19.234 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Loop incoming from Megad: 192.168.1.13 GET /md.php?&all=0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF/3;OFF/1;OFF/1;OFF/16;OFF/2;ON;OFF/11;ON;OFF;ON;OFF;ON;OFF;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF HTTP/1.1
21:36:19.236 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Not a switch
21:36:19.240 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Updating: 192.168.1.13.18 Value is: [OFF, 16]
21:36:19.246 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - getActiveChannelListAsString -> in
21:36:19.260 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Updating: 192.168.1.13.23 Value is: [OFF]
21:36:19.268 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - getActiveChannelListAsString -> out
21:36:19.286 [INFO ] [smarthome.event.ItemCommandEvent ] - Item 'KidsRoom_Light' received command ON
21:36:19.297 [INFO ] [arthome.event.ItemStatePredictedEvent] - KidsRoom_Light predicted to become ON
21:36:19.304 [INFO ] [ab.binding.megad.handler.MegaDHandler] - Switch: http://192.168.1.13/sky/?cmd=23:1
21:36:19.305 [INFO ] [smarthome.event.ItemStateChangedEvent] - KidsRoom_Light changed from OFF to ON
21:36:19.316 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - OK
Код: Выделить всё
21:37:18.122 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - Updating Megadevice things...
21:37:18.134 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - http://192.168.1.13/sky/?pt=23&cmd=get
21:37:18.171 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - input string-> ON
21:37:18.182 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - http://192.168.1.13/sky/?tget=1
21:37:18.224 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - input string-> MegaD-2561 by <a href=http://ab-log.ru>ab-log.ru</a> (fw: 4.34b6)<br><a href=/sky/?cf=1>Config</a><br>-- MODS --<br><a href=/sky/?cf=3>XP1</a><br><a href=/sky/?cf=4>XP2</a><br>-- XT2 --<br><a href=/sky/?pt=30>P30 - NC</a><br><a href=/sky/?pt=31>P31 - NC</a><br><a href=/sky/?pt=32>P32 - NC</a><br><a href=/sky/?pt=33>P33 - NC</a><br><a href=/sky/?pt=34>P34 - NC</a><br><a href=/sky/?pt=35>P35 - NC</a><br>-- XP5/6 --<br><a href=/sky/?pt=36>P36 - NC</a><br><a href=/sky/?pt=37>P37 - NC</a>
21:37:19.178 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - incoming from Megad: 192.168.1.13 GET /md.php?&all=0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF/3;OFF/1;OFF/1;OFF/16;OFF/2;ON;OFF/11;ON;ON;ON;OFF;ON;OFF;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF HTTP/1.1
21:37:19.180 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 0 value md.php
21:37:19.182 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 1 value
21:37:19.184 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 2 value all
21:37:19.186 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - 3 value 0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF
21:37:19.188 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Loop incoming from Megad: 192.168.1.13 GET /md.php?&all=0;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF/3;OFF/1;OFF/1;OFF/16;OFF/2;ON;OFF/11;ON;ON;ON;OFF;ON;OFF;ON;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF;OFF HTTP/1.1
21:37:19.191 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Not a switch
21:37:19.194 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Updating: 192.168.1.13.18 Value is: [OFF, 16]
21:37:19.201 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - getActiveChannelListAsString -> in
21:37:19.212 [DEBUG] [ding.megad.handler.MegaDBridgeHandler] - Updating: 192.168.1.13.23 Value is: ON
21:37:19.221 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - getActiveChannelListAsString -> out
21:37:19.239 [INFO ] [smarthome.event.ItemCommandEvent ] - Item 'KidsRoom_Light' received command OFF
21:37:19.247 [INFO ] [arthome.event.ItemStatePredictedEvent] - KidsRoom_Light predicted to become OFF
21:37:19.249 [INFO ] [ab.binding.megad.handler.MegaDHandler] - Switch: http://192.168.1.13/sky/?cmd=23:0
21:37:19.259 [INFO ] [smarthome.event.ItemStateChangedEvent] - KidsRoom_Light changed from ON to OFF
21:37:19.263 [DEBUG] [ab.binding.megad.handler.MegaDHandler] - OK
Эта ситуация с работающим правилом. Если выключаю, то перестает моргать. Но вопрос остается, что вызывает срабатывание правила? И как правильно использовать правило?