Плагин MegaD
-
-
Можно еще проще - привязать бинарный актуатор, а интерактивные операции для него отключить
Загвоздка в том, что для DI нельзя выбрать актюатор… А если сделать DO, то может, наверно, как-нибудь не адекватно обрабатываться состояние? Вечером попробую проверить.
@intrahouse:
Предположительно до конца месяца.
Это очень хорошо. И неточности в работе плагина надо устранить (см.выше).
Про функционал вывода информации на OLED-дисплей даже молчу… пока, наверное, придется со второстепенного сервера отображать информацию на дисплеях.
В дополнение прикладываю лог отладчика для анализа и исправления неточностей работы плагина MegaD:
12.10 12:36:15.112 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?st=1 12.10 12:36:15.112 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:15.125 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=5&cnt=1 12.10 12:36:15.126 IH: get [{"id":"5","value":"1"}] 12.10 12:36:15.127 IH: set {"SGERKON4_02":{"dval":0}} 12.10 12:36:15.127 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:15.140 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=6&cnt=1 12.10 12:36:15.140 IH: get [{"id":"6","value":"1"}] 12.10 12:36:15.141 IH: set {"SMOTION4_02":{"dval":0}} 12.10 12:36:15.141 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:15.154 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=19&cnt=1 12.10 12:36:15.155 IH: get [{"id":"19","value":"1"}] 12.10 12:36:15.155 IH: set {"SFIRE1_04":{"dval":0}} 12.10 12:36:15.156 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:15.170 megad5: 12.10 12:36:15.170 megad5: localhost => 192.168.11.25 HTTP GET /sec/?cmd=all 12.10 12:36:15.339 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:36:15.340 megad5: body: OFF/0;OFF/0;OFF/0;OFF/0;OFF/0;ON/1;ON/1;OFF;OFF;OFF;OFF;OFF;OFF;OFF;temp:25.81;OFF/0;OFF/0;OFF/0;OFF/0;ON/1;temp:26.93;temp:26.75;OFF;OFF;OFF;OFF;OFF;OFF;OFF;temp:26.00;;;temp:128.85/hum:118.98;temp:128.85/hum:118.98;OFF;;OFF;OFF 12.10 12:36:15.342 IH: get [{"id":"5","value":"1"},{"id":"6","value":"1"},{"id":"7","value":"0"},{"id":"8","value":"0"},{"id":"9","value":"0"},{"id":"10","value":"0"},{"id":"11","value":"0"},{"id":"12","value":"0"},{"id":"14","value":"25.81"},{"id":"18","value":"0"},{"id":"19","value":"1"},{"id":"20","value":"26.93"},{"id":"21","value":"26.75"},{"id":"22","value":"0"},{"id":"23","value":"0"},{"id":"24","value":"0"},{"id":"25","value":"0"},{"id":"26","value":"0"},{"id":"27","value":"0"},{"id":"28","value":"0"},{"id":"29","value":"26"},{"id":"35","value":"0"},{"id":"32_1","value":"128.85"},{"id":"32_2","value":"118.98"},{"id":"33_1","value":"128.85"},{"id":"33_2","value":"118.98"}] 12.10 12:36:15.343 IH: set {"SGERKON4_02":{"dval":0},"SMOTION4_02":{"dval":0},"LAMP0_01":{"dval":"0"},"LAMP1_07":{"dval":"0"},"VENT1":{"dval":"0"},"VENT2":{"dval":"0"},"ACTOR_HEATING4_01":{"dval":"0"},"ACTOR_HEATING4_02":{"dval":"0"},"ST_HEATING4_01":{"aval":"25.81"},"SENSOR1_01":{"dval":"0"},"SFIRE1_04":{"dval":0},"STEMP_PVU1":{"aval":"26.93"},"STEMP_PVU2":{"aval":"26.75"},"VENT_PVU1":{"dval":"0"},"VENT_PVU2":{"dval":"0"},"VENT_PVU3":{"dval":"0"},"VALVE_AIR1":{"dval":"0"},"VALVE_AIR3":{"dval":"0"},"VALVE_AIR4":{"dval":"0"},"VALVE_AIR5":{"dval":"0"},"ST_HEATING4_02":{"aval":"26"},"ACTOR_SECURITY_SYS01":{"dval":"0"},"STEMP1_02":{"aval":"128.85"},"SHUMIDITY1_02":{"aval":"118.98"},"STEMP_PVU3":{"aval":"128.85"},"SHUMIDITY_PVU1":{"aval":"118.98"}} 12.10 12:36:16.082 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=6&m=2&cnt=1 12.10 12:36:16.083 IH: get [{"id":"6","value":"1"}] 12.10 12:36:16.083 IH: set {"SMOTION4_02":{"dval":0}} 12.10 12:36:16.084 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:16.094 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=5&m=2&cnt=1 12.10 12:36:16.095 IH: get [{"id":"5","value":"1"}] 12.10 12:36:16.095 IH: set {"SGERKON4_02":{"dval":0}} 12.10 12:36:16.096 megad5: 192.168.11.25 <= localhost:11025 12.10 12:36:16.107 megad5: 192.168.11.25 => localhost:11025 HTTP GET /mod_megad.php?pt=19&m=2&cnt=1 12.10 12:36:16.108 IH: get [{"id":"19","value":"1"}] 12.10 12:36:16.109 IH: set {"SFIRE1_04":{"dval":0}} 12.10 12:36:16.109 megad5: 192.168.11.25 <= localhost:11025 12.10 12:41:15.251 megad5: 12.10 12:41:15.252 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=14&cmd=get 12.10 12:41:15.260 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:15.260 megad5: body: temp:25.93 12.10 12:41:15.261 IH: get [{"id":"14","value":"25.93"}] 12.10 12:41:15.261 IH: set {"ST_HEATING4_01":{"aval":"25.93"}} 12.10 12:41:15.452 megad5: 12.10 12:41:15.453 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=20&cmd=get 12.10 12:41:15.463 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:15.464 megad5: body: temp:27.00 12.10 12:41:15.464 IH: get [{"id":"20","value":"27"}] 12.10 12:41:15.465 IH: set {"STEMP_PVU1":{"aval":"27"}} 12.10 12:41:15.654 megad5: 12.10 12:41:15.654 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=21&cmd=get 12.10 12:41:15.663 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:15.663 megad5: body: temp:26.75 12.10 12:41:15.664 IH: get [{"id":"21","value":"26.75"}] 12.10 12:41:15.664 IH: set {"STEMP_PVU2":{"aval":"26.75"}} 12.10 12:41:15.854 megad5: 12.10 12:41:15.855 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=29&cmd=get 12.10 12:41:15.863 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:15.864 megad5: body: temp:26.06 12.10 12:41:15.864 IH: get [{"id":"29","value":"26.06"}] 12.10 12:41:15.865 IH: set {"ST_HEATING4_02":{"aval":"26.06"}} 12.10 12:41:16.056 megad5: 12.10 12:41:16.056 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=30&scl=34&i2c_dev=htu21d&i2c_par=1 12.10 12:41:16.116 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:16.116 megad5: body: 26.93 12.10 12:41:16.117 IH: get [] 12.10 12:41:16.117 IH: set {} 12.10 12:41:16.257 megad5: 12.10 12:41:16.258 megad5: localhost => 192.168.11.25 HTTP GET /sec/?pt=30&scl=34&i2c_dev=htu21d 12.10 12:41:16.287 megad5: localhost <= 192.168.11.25 response: statusCode=200 contentType = text/html 12.10 12:41:16.287 megad5: body: 35.66 12.10 12:41:16.288 IH: get [] 12.10 12:41:16.288 IH: set {}
Для информации - после перезагрузки MegaD выдает серверу сообщение st=1, а потом самостоятельно фигачит "трапы" по каждому входу, которые находятся не в "дефолтном" (OFF) состоянии.
-
Еще момент по видимому устройству плагина. Оно по умолчанию имеет 3 состояния - NOT ACTIVATED, STOP, RUN.
Хотелось бы чтобы когда плагин принудительно остановлен было состояние - STOP.
Когда КОНТРОЛЛЕР не отвечает (недоступен в сети), но плагин работает, то устройство было в состоянии - NOT ACTIVATED.
Ну и когда все работает в штатном режиме, то - RUN.
Сейчас если контроллер недоступен и плагин используется в проекте, то его устройство мигает STOP/RUN с периодичностью перезапуска плагина…в Berry оно было в состоянии STOP пока контроллер был недоступен.
Еще интересно что устройства плагинов не отображаются в списке устройств, хотя на мнемосхемы их вытащить можно.
-
Есть проблемка со скриптом управления температурой и megaD. Попробую описать. Если запускаем одновременно сервер и роутер, а роутер подвис. Температура сервере установлена 30. Т.к. датчика нет то сервер видит последнюю то есть например 28 и сервер дает команду, но устройства нет в сети. Батареи включается на интерфейсе. Перезагрузил роутер. Батарея включена на интересе дома. А по факту выход не активен. И так пока температура не подниматься выше 30 и снова упадёт. Как с этим бороться? Я так понимаю должна быть индикация аварии если устройства нет в сети.
-
Во вкладке Обработка есть инверсия значений , но она что то не работает, Может корявые руки
Господа, скажите работает инверсия или нет?
-
Во вкладке Обработка есть инверсия значений , но она что то не работает, Может корявые руки
Господа, скажите работает инверсия или нет?
Инверсия отрабатывается на уровне сервера при получении данных от плагина.
То есть Вы увидите инверсию, только если к каналу привязано устройство.
Например, на канале 2 привязан датчик SMOTION_100_1 с инверсией входного значения.
Если смотреть в отладчике : get=0 => set=1
-
А если актуатор на мегад, где галку надо поставить? У меня на экране вкл, а в мегад выкл, и наоборот.
-
А если актуатор на мегад, где галку надо поставить? У меня на экране вкл, а в мегад выкл, и наоборот.
Действительно, Вы правы, не работает инверсия для актуаторов
Поправим в следующем релизе.
-
А по моему вопросу есть решение. Или я не правильно описал проблему.
-
И ещё. Возник вопрос. Как управлять RGB лентой? Есть пример?
-
Есть проблемка со скриптом управления температурой и megaD. Попробую описать. Если запускаем одновременно сервер и роутер, а роутер подвис. Температура сервере установлена 30. Т.к. датчика нет то сервер видит последнюю то есть например 28 и сервер дает команду, но устройства нет в сети. Батареи включается на интерфейсе. Перезагрузил роутер. Батарея включена на интересе дома. А по факту выход не активен. И так пока температура не подниматься выше 30 и снова упадёт. Как с этим бороться? Я так понимаю должна быть индикация аварии если устройства нет в сети.
Вы правы, такая проблема есть.
Дело в том, что MegaD не дает feedback, т е не подтверждает операции переключения, поэтому применяется односторонняя (или оптимистичная :)) связь при управлении: при отправке команды считается, что команда выполнена.
Ситуацию усугубляет то, что в новом плагине MegaD не учитывается отсутствие связи при выполнении команды.
Планируется переработать плагин с учетом этой ситуации, а также включая поправки, которые предлагает Alex_Jet (по мере возможности).
Ориентировочно, после 10 ноября выпустим новый плагин.
По RGB - в Cherry виджет для визуализации RGB запланирован, но пока не сделан.
Я правильно понимаю, Вы хотите управлять RGB с MegaD, посылая команды на диммируемые выхода?
Пока можно управлять, диммируя каждый канал отдельно.
Или в MegaD есть какой-то новый механизм для RGB?
-
Вы правы, такая проблема есть.
Дело в том, что MegaD не дает feedback, т е не подтверждает операции переключения, поэтому применяется односторонняя (или оптимистичная :)) связь при управлении: при отправке команды считается, что команда выполнена.
На самом деле сервер всегда может запросить состояние всех портов и распарсить их значения. Или во всяком случае MegaD ведь выдает 200 OK в TCP-сессии - это уже можно считать подтверждением выполнения команды (если эта команда однозначная, а не типа "переключения" выходов).
Или в MegaD есть какой-то новый механизм для RGB?
К ней с некоторых пор можно подключать I2C расширитель ШИМ-портов! Правда готовых плат с силовыми элементами для него нет.
-
А также с недавних пор поддерживает управление LED-лентами на базе чипов WS2818, WS2811, WS2813. При этом задействуется всего один порт для управления RGB. Хотел сделать функцию мягкого пробуждения человека с помощью RGB света.
-
Пример: включить все диоды красным цветом
http://192.168.0.14/sec/?pt=35&ws=FF0000
Но хотелось бы из интерфейса управлять цветом. И настраивать цвет пробуждения в параметрах.
-
С учётом того, что "обычные" ШИМ-каналы в MegaD скорее всего будут использоваться и для диммирования, то для RGB логичнее использовать либо расширитель ШИМ по I2C или подключать к контроллеру WS28xx. А для этого нужен какой-то функционал для записи значений в канал для устройства типа "актюатор аналоговый". Кстати вывод информации на OLED можно таким же образом сделать, а потом в скрипте написать функцию записи в OLED значений в нужную строку и столбец.
-
Вопрос к разработчикам? Может сделать отдельно плагин для MegaD-328 и MegaD-2561.
-
Вопрос к разработчикам? Может сделать отдельно плагин для MegaD-328 и MegaD-2561.
Почему? Разве они не совместимы снизу вверх?
-
Можно еще проще - привязать бинарный актуатор, а интерактивные операции для него отключить
В принципе эта идея сработала. При поднесении нужного ключа к считывателю актуатор меняет свое состояние. Отталкиваясь от его состояния можно написать сценарий установки/снятия с охраны. Единственный неопределенный момент в том, что когда MegaD опрашиваем командой cmd=all, то канал, соответствующий считывателю находится в неопределенном состоянии (ранее писал, что не верно под неопределенным состоянием считать 0). Возникает вопрос - после перезагрузки MegaD в каком состоянии окажется привязанный к этому каналу актуатор (ну или сенсор, если добавите ему обработку toggle). Или все же это правильно - считать за 0/OFF неопределенное состояние порта?
-
Здравствуйте.
Подскажите, можно ли и как сделать "расширение" без сообщения от меги?
У меня задача передать меге команду выключить, подождать, включить. Скриптом этого делать нельзя, потому, что перезапускается розетка, к которой подключено сетевое оборудование. Скриптом получается только выключить
А как сделать расширение без входящего сообщения от контроллера, чтобы передать меге команду с паузой, и привязать это расширение к кнопке на экране?
-
Здравствуйте.
Подскажите, можно ли и как сделать "расширение" без сообщения от меги?
У меня задача передать меге команду выключить, подождать, включить. Скриптом этого делать нельзя, потому, что перезапускается розетка, к которой подключено сетевое оборудование. Скриптом получается только выключить
А как сделать расширение без входящего сообщения от контроллера, чтобы передать меге команду с паузой, и привязать это расширение к кнопке на экране?
Плагины сейчас могут получать любые команды в своем формате непосредственно от сценария
Но плагин должен поддерживать эту возможность.
Для плагина MegaD запланирована переработка, эта опция будет добавлена.
Тогда для решения вашей задачи достаточно будет к кнопке привязать сценарий с командой
this.pluginCommand({unit:'megad1', command:'/sec/?cmd=7:0;p10;7:1'});
Ориентировочный срок выпуска новой версии плагина - после 10 ноября.