Плагин MegaD
-
Проблема одна - я в возможностях заблудился.
Работало само, но только не отображались изменения в интерфейсе IH, если были сделаны выключателем.
А тут оказалось, что не должно было работать.
Тревожно.
Пока сделал мультисценарии с автозапуском по изменению.
Устройства для выключателей у меня и так все добавлены были. Когда делал, или не увидел способа добавить канал в плагине без устройства, или просто в голову это не пришло.
Но кнопки нажимать поеду только послезавтра.
-
Проблема одна - я в возможностях заблудился.
Работало само, но только не отображались изменения в интерфейсе IH, если были сделаны выключателем.
А тут оказалось, что не должно было работать.
Тревожно.
Пока сделал мультисценарии с автозапуском по изменению.
Устройства для выключателей у меня и так все добавлены были. Когда делал, или не увидел способа добавить канал в плагине без устройства, или просто в голову это не пришло.
Но кнопки нажимать поеду только послезавтра.
Если расширения не создавать (события не слушать), то будет задержка <= период опроса входа. Так как про изменение входа сервер в таком случае узнает только при опросе
-
Получается, что в первом варианте команда на мегу 2 раза посылается. И как прямая команда, и опосредовано, после изменения состояния устройства. Ведь после изменения состояния устройства команда на мегу снова пошлется?
В третьем варианте - большая задержка.
Лучший вариант - второй? Расширение запускает скрипт, все быстро и один раз. Правильно?
-
Получается, что в первом варианте команда на мегу 2 раза посылается. И как прямая команда, и опосредовано, после изменения состояния устройства. Ведь после изменения состояния устройства команда на мегу снова пошлется?
Почему? Если сценарий к входу не привязывать, то команда будет посылаться в ответ на событие изменения входа и все.
Вопрос, какое событие приходит. Если в одном положении включателя придет 1, в другом 0, его же и передать в ответ.
Если же там длинное - не длинное нажатие, то да, легче запустить скрипт.
-
Я не понимаю логику работы плагина.
Что значит "установить состояние каналов" в расширении?
И почему в примере "1=ON&7=TOGGLE"
Что это значит? Если от меги пришло сообщение, что канал 1 стал "ON", состояние канала на плагине не изменится, если не будет расширения, которое изменит состояние канала? Не достаточно сообщения от меги?
И изменение состояние канала 7 - это только меняется состояние канала? И IH его отобразит в подключенном устройстве после очередного сканирования? И он только отобразит? Или при изменении состояния устройства пойдет команда на мегу?
И какой синтаксис у поля "установить состояние каналов"?
Или для одного выключателя делать 2 расширения.
Один на включение с входящим от меги /megad?pt=1 и ответом 9:1, установкой состояния канала 9=ON
Второй на выключение с входящим от меги /megad?pt=1&m=1 и ответом 9:0, установкой состояния канала 9=OFF
???
-
Я не понимаю логику работы плагина.
Что значит "установить состояние каналов" в расширении?
И почему в примере "1=ON&7=TOGGLE"
Что это значит? Если от меги пришло сообщение, что канал 1 стал "ON", состояние канала на плагине не изменится, если не будет расширения, которое изменит состояние канала? Не достаточно сообщения от меги?
И изменение состояние канала 7 - это только меняется состояние канала? И IH его отобразит в подключенном устройстве после очередного сканирования? И он только отобразит? Или при изменении состояния устройства пойдет команда на мегу?
И какой синтаксис у поля "установить состояние каналов"?
Возможно, сразу и не понятно, хотя это работает с самой первой реализации на Berry.
Но если смотреть в контексте - то можно понять. И простить
Как известно, данные от меги можно получить двумя способами:
1. Опрос канала. Сервер опрашивает контроллер с заданным периодом. Также можно циклически делать полный опрос cmd=all. Плагин парсит ответ и записывает значения в канал (несколько каналов)
Минусы: при частом опросе (коротких интервалах) нагружается контроллер, при длинных - страдает оперативность и визуализация
2. Мега сама может посылать сообщения об изменении ВХОДОВ. И это здорово! С дискретными датчиками обычно именно так и работают.
Но синтаксис сообщений своеобразный и при этом меняется. Было желание сделать так, чтобы не переписывать постоянно плагин при изменении-дополнении сообщений контроллера.
То есть плагин НИКАК не привязан к синтаксису входящих сообщений контроллера. Он их не разбирает, только группирует по pt=x (pt=1, pt=23,.., без pt) и для входящего находит самое подходящее в табличке.
Поэтому для сообщения нужно явно прописать, что оно значит с точки зрения переключения входного канала (-ов): 1=ON
По одному входному сообщению может теоретически меняться несколько каналов.
Или, как уже говорилось, канал можно и не делать, как в случае выключателей с безусловной логикой.Тогда для входа и устанавливать ничего не надо
Дальше - можно отправить команду в ответ на сообщение. Например, включить лампу (7:1)
Но сервер сам знать не знает, что значит 7:1 (а тем более 7:2 или 7:3)
И контроллер при этом не пришлет состояние выхода при переключении. Вы знаете, это такая фишка MegaD - типа сервер переключил, сам и должен знать. Следовательно, мы должны еще установить состояние выхода для индикации заранее (в большой надежде, что команда дойдет) И если команда 7:2, нужно установить 7=TOGGLE
И изменение состояние канала 7 - это только меняется состояние канала? И IH его отобразит в подключенном устройстве после очередного сканирования? И он только отобразит? Или при изменении состояния устройства пойдет команда на мегу?
И какой синтаксис у поля "установить состояние каналов"?
Нет, команды - отдельно, состояния - отдельно. Отправили команду, в канале установили состояние: ON, OFF, TOGGLE, сразу отработала визуализация связанного устройства
Синтаксис действительно неудачный Можно писать и так: 1=1&7=0 Но 7=2 - так не прокатит
Можно также присвоить значение прямо из запроса. Если оно там есть
Например, сообщение: /..&ext0=* - принимается любое значение, и это значение записать в состояние: 7=%ext0%
Или для одного выключателя делать 2 расширения.
Один на включение с входящим от меги /megad?pt=1 и ответом 9:1, установкой состояния канала 9=ON
Второй на выключение с входящим от меги /megad?pt=1&m=1 и ответом 9:0, установкой состояния канала 9=OFF
???
Да, именно так. Если бы было сообщение в формате /megad?pt=1&val=1 (или 0), то обошлись бы одним
-
достаточно в "установить канал" указать 9=ON
Или нужно обязательно 1=ON&9=ON ?
Или правильно 1=1&9=1 ?
-
достаточно в "установить канал" указать 9=ON
Для переключения светильника на индикации - достаточно
Или нужно обязательно 1=ON&9=ON ?
Для переключения светильника на индикации - не обязательно
Если у вас есть канал для выключателя и вам важно его состояние (участвует в других сценариях, выведен на индикацию), то 1=ON&9=ON
В общем, хуже не будет
Или правильно 1=1&9=1 ?
Стандартный синтаксис 1=ON&9=ON. Но так тоже можно
-
Спасибо.
-
Пощелкал выключателем.
На сервер от меги приетает это
26.06 11:40:36.196 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&cnt=778&mdid= 26.06 11:40:36.197 megad1: 192.168.13.10 <= localhost:8082 26.06 11:40:36.802 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&m=1&cnt=779&mdid= 26.06 11:40:36.803 megad1: 192.168.13.10 <= localhost:8082 26.06 11:40:37.299 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&cnt=780&mdid= 26.06 11:40:37.300 megad1: 192.168.13.10 <= localhost:8082 26.06 11:40:37.789 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&m=1&cnt=781&mdid= 26.06 11:40:37.790 megad1: 192.168.13.10 <= localhost:8082
Расширение ждут это
/megad?pt=5
ответов нет.
Вписал /?pt=5 вместо /megad?pt=5, заработало.
-
Пощелкал выключателем.
На сервер от меги приетает это
> 26.06 11:40:36.196 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&cnt=778&mdid= > 26.06 11:40:36.197 megad1: 192.168.13.10 <= localhost:8082 > 26.06 11:40:36.802 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&m=1&cnt=779&mdid= > 26.06 11:40:36.803 megad1: 192.168.13.10 <= localhost:8082 > 26.06 11:40:37.299 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&cnt=780&mdid= > 26.06 11:40:37.300 megad1: 192.168.13.10 <= localhost:8082 > 26.06 11:40:37.789 megad1: 192.168.13.10 => localhost:8082 HTTP GET /?pt=5&m=1&cnt=781&mdid= > 26.06 11:40:37.790 megad1: 192.168.13.10 <= localhost:8082 >
Расширение ждут это
> /megad?pt=5 >
ответов нет.
Вписал /?pt=5 вместо /megad?pt=5, заработало.
В расширении Вы сами прописываете сообщение, которое приходит от megad
Первая часть сообщения - это Script в настройке контроллера, там что только не пишут:
У Вас, очевидно, это поле оставлено пустым, поэтому и сообщения такие.
-
В писании сказано
Script: скрипт на сервере, который обрабатывает сообщения от устройства и формирует ответы (максимально 15 символов).
Я на сервере скриптов не создавал, вот поле и пустое.
Видимо, опять не должно было работать. :lol:
А если я там напишу слово, то в IH такой скрипт создавать не нужно, нужно просто ловить пакеты, в которых это слово указано?
-
В писании сказано
Script: скрипт на сервере, который обрабатывает сообщения от устройства и формирует ответы (максимально 15 символов).
Я на сервере скриптов не создавал, вот поле и пустое.
Видимо, опять не должно было работать. :lol:
Ну почему, пустое поле - тоже нормальный вариант.
Фактически это строка, которая будет находиться между / и ?
А если я там напишу слово, то в IH такой скрипт создавать не нужно, нужно просто ловить пакеты, в которых это слово указано?
Да, сообщение будет начинаться с него, попробуйте
-
@intrapro:
Коллеги, обратите, пожалуйста, внимание на вот этот пост - https://frm.intrahouse.ru/viewtopic.php?f=18&t=5312&start=260#p10325Неработоспособность функции обработки значений на некоторых портах MegaD мне мешает спокойно жить))) в нескольких случаях:
1. Когда на порте есть датчик температуры/влажности (BME280, HTU21D), который отдает больше 100% влажность, постоянно вылезает ошибка датчика и, соответственно, мне приходят не нужные уведомления.
Вот не хочется расширять уставку свыше 100% потому что это не логично! Хотел бы сделать проще/правильнее - с помощью одной строчки в функции: if(result > 100) result = 100
2. Когда с цепочки DS18B20 (шина 1WB в терминах MegaD) иногда считывается значение выходящее из нормального диапазона мне тоже прилетают уведомления об аварии датчика. А я хотел бы чтобы в функции отрабатывала следующая строчка: if(val > 100) return;
И да, удобно было бы видеть в отладчике почему значение не присвоилось устройству - какие-то проблемы или еще не отработана функция. Это все видно было в Berry.
-
Коллеги, обратите, пожалуйста, внимание на вот этот пост - https://frm.intrahouse.ru/viewtopic.php?f=18&t=5312&start=260#p10325
Неработоспособность функции обработки значений на некоторых портах MegaD мне мешает спокойно жить))) в нескольких случаях:
1. Когда на порте есть датчик температуры/влажности (BME280, HTU21D), который отдает больше 100% влажность, постоянно вылезает ошибка датчика и, соответственно, мне приходят не нужные уведомления.
Вот не хочется расширять уставку свыше 100% потому что это не логично! Хотел бы сделать проще/правильнее - с помощью одной строчки в функции: if(result > 100) result = 100
2. Когда с цепочки DS18B20 (шина 1WB в терминах MegaD) иногда считывается значение выходящее из нормального диапазона мне тоже прилетают уведомления об аварии датчика. А я хотел бы чтобы в функции отрабатывала следующая строчка: if(val > 100) return;
И да, удобно было бы видеть в отладчике почему значение не присвоилось устройству - какие-то проблемы или еще не отработана функция. Это все видно было в Berry.
Задача в списке есть, но руки пока не доходят
Отработку функции в логе добавим при доработке
-
-
подскажите как настроить мегу чтобы при долгом нажатии на кнопку включался сценарий. в какое поле что вписать.
-
Есть проблема, имеется датчик температуры и влажности bme280, все подключил и настроил по инструкции но время от времени пропадает значения температуры на 0. Помогите хто сталкивался или знает в чем проблема.
-
Есть проблема, имеется датчик температуры и влажности bme280, все подключил и настроил по инструкции но время от времени пропадает значения температуры на 0. Помогите хто сталкивался или знает в чем проблема.
А в самом веб-интерфейсе MegaD значение температуры тоже =0 или просто не определяется? У меня такой датчик на улице уже год стоит - никаких проблем не бывает. Возможно неисправен сам датчик или проблемы с проводкой (большая длина, наводки). I2C не любит длинных проводов, хотя у меня с MegaD прекрасно работает даже подключение звездой с лучами по 4м на обычном (не витая пара) проводе. Я бы вначале поменял порт подключения, а потом датчик подсоединил для теста короткими проводами, а далее - поменял датчик.
-
@gis:
Есть проблема, имеется датчик температуры и влажности bme280, все подключил и настроил по инструкции но время от времени пропадает значения температуры на 0. Помогите хто сталкивался или знает в чем проблема.
А в самом веб-интерфейсе MegaD значение температуры тоже =0 или просто не определяется? У меня такой датчик на улице уже год стоит - никаких проблем не бывает. Возможно неисправен сам датчик или проблемы с проводкой (большая длина, наводки). I2C не любит длинных проводов, хотя у меня с MegaD прекрасно работает даже подключение звездой с лучами по 4м на обычном (не витая пара) проводе. Я бы вначале поменял порт подключения, а потом датчик подсоединил для теста короткими проводами, а далее - поменял датчик.
нет на меге все коректно, f5 пробивал кучу раз ни 0 ни N/a не было такого, ето что то в IH.