Использование MegaD в openHAB
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
При настройке refresh=0 порт не опрашивается, и события received update не возникает, только при нажатии на кнопку.
При refresh>0 - событие received update вызывается с частотой опроса.
Еще раз опишите задачу, тогда пояснить проще.
При refresh>0 - событие received update вызывается с частотой опроса.
Еще раз опишите задачу, тогда пояснить проще.
-
- Сообщения: 617
- Зарегистрирован: 30 мар 2017, 11:15
- Откуда: г.Севастополь
Re: Использование MegaD в openHAB
Вот и не сходиться в голове, т.к.:martiniman писал(а): ↑05 апр 2019, 23:18При настройке refresh=0 порт не опрашивается, и события received update не возникает, только при нажатии на кнопку.
При refresh>0 - событие received update вызывается с частотой опроса.
Еще раз опишите задачу, тогда пояснить проще.
Код: Выделить всё
Bridge megad:bridge:megadevice [port=8989]
{
Thing device lamp [hostname="192.168.1.13", port="23", password="sky", refresh="3"]
Thing device switching [hostname="192.168.1.13", port="18", password="sky", refresh="0"]
}
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?
Re: Использование MegaD в openHAB
Физически порт 18, это вход к которому подключена нормально-разомкнутая кнопка, в поле Act прописано 23:2 и чекбокс установлен, Mode установлено на R.martiniman писал(а): ↑05 апр 2019, 23:25Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?
Порт 23 сконфигурирован на OUT, Mode - SW к которому подключено реле
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
С правилом переключает потому что приходит событие от кнопки. Мега сама переключает порт из экшенса плюс правило. Получается двойное срабатывание.
И вообще это правило при прописанном экшенсе его дублирует.
Третий раз спрашиваю - что вам нужно?
И вообще это правило при прописанном экшенсе его дублирует.
Третий раз спрашиваю - что вам нужно?
Re: Использование MegaD в openHAB
Переключает когда нет события от кнопки. я ее не нажимаю.martiniman писал(а): ↑05 апр 2019, 23:50С правилом переключает потому что приходит событие от кнопки.
Это я тоже понимаю. У меня логическая цепочка какая: Порт 23 был OFF, нажали и отпустили кнопку, сработал Act, и перевел порт в ON, потом отправил GET запрос на сервер, который переведет переключатель в состояние ON и повторно отправит команду ON на мегу. По идее он должен остаться во включенном состоянии. Дальше ждем повторного нажатия на физическую кнопку или переключения в интерфейсе.martiniman писал(а): ↑05 апр 2019, 23:50Мега сама переключает порт из экшенса плюс правило. Получается двойное срабатывание.
Спасибо Вам за ваше терпение. Я хочу понять простую логику и уже потом переводить мегу с mqtt. Сейчас в mqtt сделано так:
Код: Выделить всё
Switch KidsRoom_Light "Освещение" <light> (KidsRoom, gLight) ["Lighting"] {mqtt=">[mosquitto:megad/13/cmd:command:ON:23=1],>[mosquitto:megad/13/cmd:command:OFF:23=0]"}
Switch KidsRoom_Light_Switch "Выключатель в детской" {mqtt="<[mosquitto:megad/13/18:state:JSONPATH($.value)]" }
Код: Выделить всё
rule "Kitchen_Light_Switch"
when
Item Kitchen_Light_Switch received update
then
if (Kitchen_Light.state == ON) {Kitchen_Light.sendCommand(OFF) }
else if (Kitchen_Light.state == OFF) {Kitchen_Light.sendCommand(ON) }
end
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Терпение кончилось.
Ваше правило плюс экшн не имеет смысла.
Принципы описаны на openhab.org в разделе Rules
Ваше правило плюс экшн не имеет смысла.
Принципы описаны на openhab.org в разделе Rules
Re: Использование MegaD в openHAB
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Да вы правы, на текущий момент мое правило не имеет смысла, с точки зрения правильности управления одной лампочкой. Но я завтра в это правило допишу включение теплого пола, в зависимости от температуры, и он точно так же раз в минуту будет менять состояние. Вот и вопрос почему это происходит, когда по логике не должно? Возможно логика страдает
Да вы правы, на текущий момент мое правило не имеет смысла, с точки зрения правильности управления одной лампочкой. Но я завтра в это правило допишу включение теплого пола, в зависимости от температуры, и он точно так же раз в минуту будет менять состояние. Вот и вопрос почему это происходит, когда по логике не должно? Возможно логика страдает
-
- Сообщения: 617
- Зарегистрирован: 30 мар 2017, 11:15
- Откуда: г.Севастополь
Re: Использование MegaD в openHAB
В данном случае Вам правильно ответили. Пусть МЕГА сама обрабатывает событие нажатия на кнопку P18, при отсутствии сервера. И передаёт на сервер состояние порта 23. В опенхабе сделайте switch привязанный к порту 23. В данном случае нет необходимости обрабатывать в опенхабе нажатие кнопки Р18
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Re: Использование MegaD в openHAB
Воот, помню же где-то проскакивала умная мысль.martiniman писал(а): ↑06 апр 2019, 10:06Это вопрос к автору прошивки.
Я уже на эту тему высказывался
Я кажется догадался в чем может быть проблема. Как мне кажется хоть и стоит refresh=0, биндинг все равно раз в минуту запрашивает состояние всех портов, происходит обновление абсолютно всех итемов, что в свою очередь вызывает срабатывание правила. Может уважаемый Petros взглянет на данную проблему и тогда реально отпадет необходимость в ежесекундном обновлении выходов. Или я не прав?
-
- Сообщения: 528
- Зарегистрирован: 09 авг 2016, 15:09
- Откуда: Сочи
Re: Использование MegaD в openHAB
Отичная новость! Petros - ждем биндиг.Andrey_B писал(а): ↑07 апр 2019, 15:19https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
- Добавлена функция отправки на сервер сообщений об изменении состояния выходов.
Эта функция срабатывает только в том случае, если порты переключаются самим контроллером: Act, Cron, Program.
Контроллер не будет отправлять на сервер информацию об изменениях, если порты переключались внешним запросом, так как это создаст лишний трафик и может в некоторых случаях снизить производительность.
На сервер передается параметр "v". Пример, когда P7 включен: pt=7&v=1
Re: Использование MegaD в openHAB
Нашел все таки решение. Может и костыль, но кажется что получше чем заваливать мегу беcполезными ежесекундными запросами. Может кому пригодиться.
Если нормально-разомкнутая кнопка, в меге выставить Mode=P, и выставить действие по умолчанию (В данном случае Act = 23:2):
Tings:
Item:
Rule:
Если нормально-разомкнутая кнопка, в меге выставить Mode=P, и выставить действие по умолчанию (В данном случае Act = 23:2):
Tings:
Код: Выделить всё
Bridge megad:bridge:megadevice [port=8989]
{
//Обновляем состояние раз в минуту, можно реже
Thing device lamp [hostname="192.168.1.13", port="23", password="sky", refresh="60"]
Thing device switching [hostname="192.168.1.13", port="18", password="sky", refresh="0"]
}
Код: Выделить всё
Switch switch_lamp "Выключатель [%s]" {channel ="megad:device:megadevice:switching:in"}
Switch KidsRoom_Light "Свет в детской" {channel ="megad:device:megadevice:lamp:out"}
Код: Выделить всё
rule "OnCommand MegaD"
when
Item switch_lamp changed from OFF to ON
then
// Если статус не равен ON, но равен UNDEF, NULL, OFF - то включить
if(KidsRoom_Light.state != ON){
KidsRoom_Light.sendCommand(ON)
switch_lamp.sendCommand(OFF)
} else {
KidsRoom_Light.sendCommand(OFF)
switch_lamp.sendCommand(OFF)
}
end
-
- Сообщения: 617
- Зарегистрирован: 30 мар 2017, 11:15
- Откуда: г.Севастополь
Re: Использование MegaD в openHAB
Skytronix, убей, не пойму, зачем Вам обрабатывать нажатие кнопки, если оно ведёт к замыканию/размыканию реле?
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу. Тот, в свою очередь, изменяет состояние свитча. Если переключаете из опенхаба, то мега изменит состояние порта.
Зачем усложнять и городить правила на простую кнопку/реле? Я б ещё понял, если б речь была о кнопка+димер... здесь есть рабочий пример данной связки. Можно поискать мою переписку и Дмитрия Ермакова в района 30 страниц
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу. Тот, в свою очередь, изменяет состояние свитча. Если переключаете из опенхаба, то мега изменит состояние порта.
Зачем усложнять и городить правила на простую кнопку/реле? Я б ещё понял, если б речь была о кнопка+димер... здесь есть рабочий пример данной связки. Можно поискать мою переписку и Дмитрия Ермакова в района 30 страниц
Re: Использование MegaD в openHAB
Возмложно, это мой бзик, но мне тоже не понятно было, как так: я кнопку нажал, свет включился, а OpenHab об этом узнал через минуту(ну как то не комильфо для электронного мозга соображать медленней человеческого на такой простой операции), но и заваливать сеть ежесекндными одними и теми же запросами, из которых полезный будет один в сутки, как то тоже не правильно. Я хотел сделать максимально отзывчивый интерфейс, произошло действие, сразу изменилось состояние, но в тоже время не хотел задержек в работе меги пока я ковыряюсь с сервером, потому что:
Andrey_B писал(а): После срабатывания входа MegaD-2561, если прописан сервер, пытается в течение примерно 2 секунд связаться с ним. В случае неудачи, выполняется сценарий, описанный в поле Action. Также этот сценарий выполняется сразу, если сервер в сетевых настройках не прописан.
В том то все и дело что мега не сообщала, что изменила выход, теперь то конечно другое дело. И то когда Petros допилит биндинг)))))Bonefolder писал(а): ↑09 апр 2019, 01:05Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу.
-
- Сообщения: 617
- Зарегистрирован: 30 мар 2017, 11:15
- Откуда: г.Севастополь
Re: Использование MegaD в openHAB
Все мега сообщает вовремя. Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите. Не будете же вы, в самом то деле, жать на кнопку выключателя и сверять состояние с интерфейсом опенхаба
Re: Использование MegaD в openHAB
Я именно так и делал. И не видел изменений. Изменения наступали именно по времени refresh в thing или как потом выяснилось еще и раз в минуту (по логам).Bonefolder писал(а): ↑09 апр 2019, 15:27Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите.
Re: Использование MegaD в openHAB
Раньше тоже использовал решение что нажатие на физическую кнопку отслеживается опенхабом и соответственно он по правилу переключает выход.
Проблемой выглядели сильные задержки при этом. Не в правилах, а в отслеживании нажатия физической кнопки.
-
- Администратор
- Сообщения: 2196
- Зарегистрирован: 29 май 2015, 21:23
- Откуда: Екатеринбург, Нижний Тагил
Re: Использование MegaD в openHAB
Какие такие задержки? Нет их, вернее, есть, но человеку их не ощутить.