Использование MegaD в openHAB

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 05 апр 2019, 23:18

При настройке refresh=0 порт не опрашивается, и события received update не возникает, только при нажатии на кнопку.
При refresh>0 - событие received update вызывается с частотой опроса.
Еще раз опишите задачу, тогда пояснить проще.

Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

Re: Использование MegaD в openHAB

Сообщение Bonefolder » 05 апр 2019, 23:18

skytronix писал(а):
05 апр 2019, 23:05
И как правильно использовать правило?
По правилам

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 05 апр 2019, 23:23

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"]
}
А свет переключается раз в минуту. Может ещегде настройки надо править?

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 05 апр 2019, 23:25

Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 05 апр 2019, 23:34

martiniman писал(а):
05 апр 2019, 23:25
Порты 18 и 23 физически что это? И прописаны ли там экшенсы в настройках меги?
Физически порт 18, это вход к которому подключена нормально-разомкнутая кнопка, в поле Act прописано 23:2 и чекбокс установлен, Mode установлено на R.
Порт 23 сконфигурирован на OUT, Mode - SW к которому подключено реле

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 05 апр 2019, 23:50

С правилом переключает потому что приходит событие от кнопки. Мега сама переключает порт из экшенса плюс правило. Получается двойное срабатывание.
И вообще это правило при прописанном экшенсе его дублирует.
Третий раз спрашиваю - что вам нужно?

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 06 апр 2019, 00:06

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

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 06 апр 2019, 00:25

Терпение кончилось.
Ваше правило плюс экшн не имеет смысла.
Принципы описаны на openhab.org в разделе Rules

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 06 апр 2019, 00:53

Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Да вы правы, на текущий момент мое правило не имеет смысла, с точки зрения правильности управления одной лампочкой. Но я завтра в это правило допишу включение теплого пола, в зависимости от температуры, и он точно так же раз в минуту будет менять состояние. Вот и вопрос почему это происходит, когда по логике не должно? Возможно логика страдает :oops:

Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

Re: Использование MegaD в openHAB

Сообщение Bonefolder » 06 апр 2019, 03:36

В данном случае Вам правильно ответили. Пусть МЕГА сама обрабатывает событие нажатия на кнопку P18, при отсутствии сервера. И передаёт на сервер состояние порта 23. В опенхабе сделайте switch привязанный к порту 23. В данном случае нет необходимости обрабатывать в опенхабе нажатие кнопки Р18

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 06 апр 2019, 10:06

skytronix писал(а):
06 апр 2019, 00:53
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Это вопрос к автору прошивки.
Я уже на эту тему высказывался

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 06 апр 2019, 12:48

martiniman писал(а):
06 апр 2019, 10:06
skytronix писал(а):
06 апр 2019, 00:53
Если мега генерит событие при размыкании, почему сервер не может нормально его обработать, именно это событие, не опрашивать все порты в цикле.
Это вопрос к автору прошивки.
Я уже на эту тему высказывался
Воот, помню же где-то проскакивала умная мысль.
Я кажется догадался в чем может быть проблема. Как мне кажется хоть и стоит refresh=0, биндинг все равно раз в минуту запрашивает состояние всех портов, происходит обновление абсолютно всех итемов, что в свою очередь вызывает срабатывание правила. Может уважаемый Petros взглянет на данную проблему и тогда реально отпадет необходимость в ежесекундном обновлении выходов. Или я не прав?

martiniman
Сообщения: 528
Зарегистрирован: 09 авг 2016, 15:09
Откуда: Сочи

Re: Использование MegaD в openHAB

Сообщение martiniman » 08 апр 2019, 11:11

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 - ждем биндиг.

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 08 апр 2019, 23:51

Нашел все таки решение. Может и костыль, но кажется что получше чем заваливать мегу бе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 

Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

Re: Использование MegaD в openHAB

Сообщение Bonefolder » 09 апр 2019, 01:05

Skytronix, убей, не пойму, зачем Вам обрабатывать нажатие кнопки, если оно ведёт к замыканию/размыканию реле?
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу. Тот, в свою очередь, изменяет состояние свитча. Если переключаете из опенхаба, то мега изменит состояние порта.
Зачем усложнять и городить правила на простую кнопку/реле? Я б ещё понял, если б речь была о кнопка+димер... здесь есть рабочий пример данной связки. Можно поискать мою переписку и Дмитрия Ермакова в района 30 страниц

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 09 апр 2019, 12:51

Bonefolder писал(а):
09 апр 2019, 01:05
Зачем усложнять и городить правила на простую кнопку/реле?
Возмложно, это мой бзик, но мне тоже не понятно было, как так: я кнопку нажал, свет включился, а OpenHab об этом узнал через минуту(ну как то не комильфо для электронного мозга соображать медленней человеческого на такой простой операции), но и заваливать сеть ежесекндными одними и теми же запросами, из которых полезный будет один в сутки, как то тоже не правильно. Я хотел сделать максимально отзывчивый интерфейс, произошло действие, сразу изменилось состояние, но в тоже время не хотел задержек в работе меги пока я ковыряюсь с сервером, потому что:
Andrey_B писал(а): После срабатывания входа MegaD-2561, если прописан сервер, пытается в течение примерно 2 секунд связаться с ним. В случае неудачи, выполняется сценарий, описанный в поле Action. Также этот сценарий выполняется сразу, если сервер в сетевых настройках не прописан.
Bonefolder писал(а):
09 апр 2019, 01:05
Нажимаете кнопку, мега переводит состояние порта (реле) в противоположное значение, сообщает об этом опенхабу.
В том то все и дело что мега не сообщала, что изменила выход, теперь то конечно другое дело. И то когда Petros допилит биндинг)))))

Bonefolder
Сообщения: 617
Зарегистрирован: 30 мар 2017, 11:15
Откуда: г.Севастополь

Re: Использование MegaD в openHAB

Сообщение Bonefolder » 09 апр 2019, 15:27

Все мега сообщает вовремя. Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите. Не будете же вы, в самом то деле, жать на кнопку выключателя и сверять состояние с интерфейсом опенхаба

skytronix
Сообщения: 19
Зарегистрирован: 03 апр 2019, 23:37

Re: Использование MegaD в openHAB

Сообщение skytronix » 09 апр 2019, 16:42

Bonefolder писал(а):
09 апр 2019, 15:27
Иногда надо рефрешнуть интерфейс опенхаба, чтоб увидеть изменения. Просто потяните экран вниз и отпустите.
Я именно так и делал. И не видел изменений. Изменения наступали именно по времени refresh в thing или как потом выяснилось еще и раз в минуту (по логам).

empenoso
Сообщения: 1039
Зарегистрирован: 11 ноя 2015, 08:03
Откуда: Пермь

Re: Использование MegaD в openHAB

Сообщение empenoso » 13 апр 2019, 09:00

skytronix писал(а):
08 апр 2019, 23:51
Нашел все таки решение.
...
Раньше тоже использовал решение что нажатие на физическую кнопку отслеживается опенхабом и соответственно он по правилу переключает выход.
Проблемой выглядели сильные задержки при этом. Не в правилах, а в отслеживании нажатия физической кнопки.

d.v.ermakov
Администратор
Сообщения: 2187
Зарегистрирован: 29 май 2015, 21:23
Откуда: Екатеринбург, Нижний Тагил

Re: Использование MegaD в openHAB

Сообщение d.v.ermakov » 13 апр 2019, 10:38

Какие такие задержки? Нет их, вернее, есть, но человеку их не ощутить.

Ответить