[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

erandess
Сообщения: 50
Зарегистрирован: Пт окт 03, 2014 9:04 am
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Модуль "MegaD"

Сообщение erandess » Вт май 23, 2017 5:20 pm

И по феншую, если вы используете модуль "простые устройства", этот код должен быть не в statusUpdated, а в logicAction. Что соответствует вкладке "Действия" модуля.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вт май 23, 2017 5:41 pm

erandess писал(а):И по феншую, если вы используете модуль "простые устройства", этот код должен быть не в statusUpdated, а в logicAction. Что соответствует вкладке "Действия" модуля.
Нет, модулем не пользуюсь
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Модуль "MegaD"

Сообщение neromih » Вт май 23, 2017 7:41 pm

Может быть пригодится кому нибудь, работает.
Смысл в том если SecuritySwitch.status значение 0 - режим не охраны а наблюдения, соответственно включает реле, если наоборот то говорит проникновение.

Код: Выделить всё

if (gg('SecuritySwitch.status') == "0") {
sg("Switch0.status","1");
sg('Switch0.statusText','Включено');
SetTimeOut("Switch0",'sg("Switch0.status","0"); 
sg("Switch0.statusText","Выключено");',10);
} else {
say("Проникновение",5);
} 
вот как сделать что бы Проникновение проговорилось 1 раз...?
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Ivan_A
Сообщения: 62
Зарегистрирован: Пн апр 06, 2015 10:57 am
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Модуль "MegaD"

Сообщение Ivan_A » Ср май 24, 2017 10:44 am

Друзья, помогите со следующей проблемой.
У меня выключатели обычные, с фиксацией. На актуальной прошивке меги сейчас реализовано длительное нажатие, которое через 1,5 сек после нажатия отправляет дополнительное сообщение на сервер. Таким образом, после включения выключателя, свет гаснет через 1,5 секунды. Ну а после выключения включается )) Как победить сей трабл?
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Ср май 24, 2017 11:12 am

Ivan_A писал(а):У меня выключатели обычные, с фиксацией. На актуальной прошивке меги сейчас реализовано длительное нажатие, которое через 1,5 сек после нажатия отправляет дополнительное сообщение на сервер. Таким образом, после включения выключателя, свет гаснет через 1,5 секунды. Ну а после выключения включается )) Как победить сей трабл?
А выставление в настройках порта режима "P&R" не исправляет ситуацию?
Ну и в настройках модуля MegaD галку в поле «Skip default action» тоже, тоже, думаю, надо поставить. Может быть из-за этого происходит двойное отрабатывание на срабатывание порта.
Ivan_A
Сообщения: 62
Зарегистрирован: Пн апр 06, 2015 10:57 am
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Модуль "MegaD"

Сообщение Ivan_A » Ср май 24, 2017 11:22 am

именно p&r стоит.
fw 3.54, type in, act 7:2, NET пустой, mode p&r, чекбоксы все пустые
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Ср май 24, 2017 11:25 am

В настройках модуля MegaD галку «Skip default action» проверьте. Думаю, что она должна быть установлена.
Ivan_A
Сообщения: 62
Зарегистрирован: Пн апр 06, 2015 10:57 am
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Модуль "MegaD"

Сообщение Ivan_A » Ср май 24, 2017 11:32 am

Да, стоит. Думаю, что метод вызывается каждый раз, когда сервер получает с меги сообщение. Однако в сообщениях должны быть разные значения параметра m. Так это или нет не знаю как проверить. Видимо надо как-то в методе осуществлять проверку этого параметра и управлять выходом только когда m отсутствует или равна 1.
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Модуль "MegaD"

Сообщение Chainik » Ср май 24, 2017 11:37 am

Вот пример работоспособной настройки
http://ab-log.ru/forum/viewtopic.php?f=1&t=1328
(ближе к концу первого сообщения топика).
В вашем случае разница будет только в том, что в настройках порта установлен режим "P&R" (т.к. выключатели обычные). По идее все должно работать.
Ivan_A
Сообщения: 62
Зарегистрирован: Пн апр 06, 2015 10:57 am
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Модуль "MegaD"

Сообщение Ivan_A » Ср май 24, 2017 11:52 am

Спасибо, но как раз в режиме p&r и проблема.
Цитирую с ab-log.ru
Обработка длительных нажатий (важно!)

Часто возникает задача по-разному реагировать на длительность нажатия. Например, короткое нажатие включает/выключает свет в одной комнате, а нажатие и удержание (длительное нажатие) включает свет во всех комнатах. Не всегда удобно и легко делать такую обработку на сервере. Но на помощь приходит наше устройство. В том случае, если вход (в режиме P или P&R) удерживается более 1,5 секунд, на сервер отправляется второй запрос, в котором передается параметр m=2. Пример.

http://192.168.0.1/megad.php?pt=4
// спустя 1,5 секунды удержания клавиши выключателя
http://192.168.0.1/megad.php?pt=4&m=2

Это в значительной степени облегчает обработку таких событий на сервере.
Но если вам эта функция не нужна (к примеру, вы решили использовать обычные выключатели вместо кнопочных), и вы в своей системе ее не используете, то обязательно делайте проверку на наличие параметра m=2, чтобы действия не выполнялись дважды, если пользователь случайно нажал и удерживал кнопку дольше обычного.


То есть на каждое включение выключателя мега шлет 2 сообщения, и это в ней зашито, сделать ничего нельзя.
Соответственно, при стандартных настройках каждый раз при получении запроса с меги вызывается метод и инвертирует состояние выхода. А надо, чтобы инвертировал только когда параметр m отсутствует или равен 1. А как его подтянуть в метод, чтобы произвести проверку, не понимаю.
Ответить