Страница 52 из 58

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

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
Какие такие задержки? Нет их, вернее, есть, но человеку их не ощутить.