Страница 52 из 112
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:18
martiniman
При настройке refresh=0 порт не опрашивается, и события received update не возникает, только при нажатии на кнопку.
При refresh>0 - событие received update вызывается с частотой опроса.
Еще раз опишите задачу, тогда пояснить проще.
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:18
Bonefolder
skytronix писал(а): ↑05 апр 2019, 23:05
И как правильно использовать правило?
По правилам
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:23
skytronix
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"]
}
А свет переключается раз в минуту. Может ещегде настройки надо править?
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:25
martiniman
Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:34
skytronix
martiniman писал(а): ↑05 апр 2019, 23:25
Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?
Физически порт 18, это вход к которому подключена нормально-разомкнутая кнопка, в поле Act прописано 23:2 и чекбокс установлен, Mode установлено на R.
Порт 23 сконфигурирован на OUT, Mode - SW к которому подключено реле
Re: Использование MegaD в openHAB
Добавлено: 05 апр 2019, 23:50
martiniman
С правилом переключает потому что приходит событие от кнопки. Мега сама переключает порт из экшенса плюс правило. Получается двойное срабатывание.
И вообще это правило при прописанном экшенсе его дублирует.
Третий раз спрашиваю - что вам нужно?
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 00:06
skytronix
martiniman писал(а): ↑05 апр 2019, 23:50
С правилом переключает потому что приходит событие от кнопки.
Переключает когда нет события от кнопки. я ее не нажимаю.
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
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 00:25
martiniman
Терпение кончилось.
Ваше правило плюс экшн не имеет смысла.
Принципы описаны на openhab.org в разделе Rules
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 00:53
skytronix
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Да вы правы, на текущий момент мое правило не имеет смысла, с точки зрения правильности управления одной лампочкой. Но я завтра в это правило допишу включение теплого пола, в зависимости от температуры, и он точно так же раз в минуту будет менять состояние. Вот и вопрос почему это происходит, когда по логике не должно? Возможно логика страдает
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 03:36
Bonefolder
В данном случае Вам правильно ответили. Пусть МЕГА сама обрабатывает событие нажатия на кнопку P18, при отсутствии сервера. И передаёт на сервер состояние порта 23. В опенхабе сделайте switch привязанный к порту 23. В данном случае нет необходимости обрабатывать в опенхабе нажатие кнопки Р18
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 10:06
martiniman
skytronix писал(а): ↑06 апр 2019, 00:53
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Это вопрос к автору прошивки.
Я уже на эту тему
высказывался
Re: Использование MegaD в openHAB
Добавлено: 06 апр 2019, 12:48
skytronix
martiniman писал(а): ↑06 апр 2019, 10:06
skytronix писал(а): ↑06 апр 2019, 00:53
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Это вопрос к автору прошивки.
Я уже на эту тему
высказывался
Воот, помню же где-то проскакивала умная мысль.
Я кажется догадался в чем может быть проблема. Как мне кажется хоть и стоит refresh=0, биндинг все равно раз в минуту запрашивает состояние всех портов, происходит обновление абсолютно всех итемов, что в свою очередь вызывает срабатывание правила. Может уважаемый Petros взглянет на данную проблему и тогда реально отпадет необходимость в ежесекундном обновлении выходов. Или я не прав?
Re: Использование MegaD в openHAB
Добавлено: 08 апр 2019, 11:11
martiniman
Petros писал(а): ↑18 мар 2019, 17:55
Andrey_B писал(а): ↑07 апр 2019, 15:19
https://ab-log.ru/files/File/megad-2561 ... a1-hex.zip
- Добавлена функция отправки на сервер сообщений об изменении состояния выходов.
Эта функция срабатывает только в том случае, если порты переключаются самим контроллером: Act, Cron, Program.
Контроллер не будет отправлять на сервер информацию об изменениях, если порты переключались внешним запросом, так как это создаст лишний трафик и может в некоторых случаях снизить производительность.
На сервер передается параметр "v". Пример, когда P7 включен: pt=7&v=1
Отичная новость! Petros - ждем биндиг.
Re: Использование MegaD в openHAB
Добавлено: 08 апр 2019, 23:51
skytronix
Нашел все таки решение. Может и костыль, но кажется что получше чем заваливать мегу беcполезными ежесекундными запросами. Может кому пригодиться.
Если нормально-разомкнутая кнопка, в меге выставить 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"]
}
Item:
Код: Выделить всё
Switch switch_lamp "Выключатель [%s]" {channel ="megad:device:megadevice:switching:in"}
Switch KidsRoom_Light "Свет в детской" {channel ="megad:device:megadevice:lamp:out"}
Rule:
Код: Выделить всё
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
Re: Использование MegaD в openHAB
Добавлено: 09 апр 2019, 01:05
Bonefolder
Skytronix, убей, не пойму, зачем Вам обрабатывать нажатие кнопки, если оно ведёт к замыканию/размыканию реле?
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу. Тот, в свою очередь, изменяет состояние свитча. Если переключаете из опенхаба, то мега изменит состояние порта.
Зачем усложнять и городить правила на простую кнопку/реле? Я б ещё понял, если б речь была о кнопка+димер... здесь есть рабочий пример данной связки. Можно поискать мою переписку и Дмитрия Ермакова в района 30 страниц
Re: Использование MegaD в openHAB
Добавлено: 09 апр 2019, 12:51
skytronix
Bonefolder писал(а): ↑09 апр 2019, 01:05
Зачем усложнять и городить правила на простую кнопку/реле?
Возмложно, это мой бзик, но мне тоже не понятно было, как так: я кнопку нажал, свет включился, а OpenHab об этом узнал через минуту(ну как то не комильфо для электронного мозга соображать медленней человеческого на такой простой операции), но и заваливать сеть ежесекндными одними и теми же запросами, из которых полезный будет один в сутки, как то тоже не правильно. Я хотел сделать максимально отзывчивый интерфейс, произошло действие, сразу изменилось состояние, но в тоже время не хотел задержек в работе меги пока я ковыряюсь с сервером, потому что:
Andrey_B писал(а):
После срабатывания входа MegaD-2561, если прописан сервер, пытается в течение примерно 2 секунд связаться с ним. В случае неудачи, выполняется сценарий, описанный в поле Action. Также этот сценарий выполняется сразу, если сервер в сетевых настройках не прописан.
Bonefolder писал(а): ↑09 апр 2019, 01:05
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу.
В том то все и дело что мега не сообщала, что изменила выход, теперь то конечно другое дело. И то когда Petros допилит биндинг)))))
Re: Использование MegaD в openHAB
Добавлено: 09 апр 2019, 15:27
Bonefolder
Все мега сообщает вовремя. Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите. Не будете же вы, в самом то деле, жать на кнопку выключателя и сверять состояние с интерфейсом опенхаба
Re: Использование MegaD в openHAB
Добавлено: 09 апр 2019, 16:42
skytronix
Bonefolder писал(а): ↑09 апр 2019, 15:27
Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите.
Я именно так и делал. И не видел изменений. Изменения наступали именно по времени refresh в thing или как потом выяснилось еще и раз в минуту (по логам).
Re: Использование MegaD в openHAB
Добавлено: 13 апр 2019, 09:00
empenoso
skytronix писал(а): ↑08 апр 2019, 23:51
Нашел все таки решение.
...
Раньше тоже использовал решение что нажатие на физическую кнопку отслеживается опенхабом и соответственно он по правилу переключает выход.
Проблемой выглядели сильные задержки при этом. Не в правилах, а в отслеживании нажатия физической кнопки.
Re: Использование MegaD в openHAB
Добавлено: 13 апр 2019, 10:38
d.v.ermakov
Какие такие задержки? Нет их, вернее, есть, но человеку их не ощутить.