Плагин MegaD
-
Вопрос - на сколько большой буфер у отладчика? Хочу выяснить - почему у меня время от времени перезагружается один из контроллеров, но поскольку лог плагина теперь не пишется, то придется запустить на 24-48 часов отладчик. Правда еще надо знать когда произошло событие st=1, чтобы "долистать" до нужного места.
-
Вопрос - на сколько большой буфер у отладчика? Хочу выяснить - почему у меня время от времени перезагружается один из контроллеров, но поскольку лог плагина теперь не пишется, то придется запустить на 24-48 часов отладчик. Правда еще надо знать когда произошло событие st=1, чтобы "долистать" до нужного места.
Буфер у отладчика несколько тысяч строк всего. Так что это не вариант. Планируем возобновить возможность записи лога плагина в файл.
-
Добрый день!
А кто-то уже брал такой https://ab-log.ru/smart-house/ethernet/megad-14-ior ? Не до конца описан, действительно ли там все порты можно настроить выходами и если да, то какими? Подать свое напряжение или 12вольт уже есть? Девайс крутой, если 14 портов можно разделить на входы\выходы самостоятельно без жесткой привязки.
-
По-моему это не та тема. Это надо обсуждать на ab-log. А вообще в статье все расписано - что вам не понятно?
-
Подскажите, пожалуйста, по диммируемым каналам в MegaD. Настроил как в описании плагина. Правильно ли я понял, что управление диммированием из мнемосхемы осуществляется из бокового меню устройства? При нажатии кнопки включить в этом меню уровень диммирования устанавливается в 1. При попытке ввести нужный уровень и нажать галочку - происходит отключение устройства, таким образом задать уровень диммирования из бокового меню устройства не получается. Может я что-то не до конца настроил? Нужно ли что-то прописывать в расширениях плагина MegaD для диммируемого канала?
-
@gis:
Правильно ли я понял, что управление диммированием из мнемосхемы осуществляется из бокового меню устройства?
Да, все верно. В новой версии 4.4.11 также добавлено управление RGB.
@gis:
Подскажите, пожалуйста, по диммируемым каналам в MegaD. Нужно ли что-то прописывать в расширениях плагина MegaD для диммируемого канала?
Работа с диммерами и RGB как каналами MegaD будет в новой версии плагина, которая будет опубликована в течение этой недели.
-
Отличная новость!
-
Странно, но факт. После обновления системы до 4.4.11 один из плагинов megad (v.1.1.9) просто остановился. Пришлось запускать вручную.
-
Добрый день!
Снова всплывают двойные сработки MegaD, которые не получается пофиксить:
18.01 15:02:33.410 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1671 18.01 15:02:33.410 IH: get [{"id":"21","value":"1"}] 18.01 15:02:33.410 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:02:33.412 megad2: 10.255.255.60 <= localhost:8081 18.01 15:02:34.540 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1672 18.01 15:02:34.540 IH: get [{"id":"21","value":"1"}] 18.01 15:02:34.540 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:02:34.542 megad2: 10.255.255.60 <= localhost:8081 18.01 15:02:35.664 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1673 18.01 15:02:35.664 IH: get [{"id":"21","value":"1"}] 18.01 15:02:35.664 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:02:35.667 megad2: 10.255.255.60 <= localhost:8081 18.01 15:02:36.793 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1674 18.01 15:02:36.793 IH: get [{"id":"21","value":"1"}] 18.01 15:02:36.793 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:02:36.796 megad2: 10.255.255.60 <= localhost:8081 18.01 15:02:37.912 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1675 18.01 15:02:37.912 IH: get [{"id":"21","value":"1"}] 18.01 15:02:37.913 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:02:37.914 megad2: 10.255.255.60 <= localhost:8081 ------------------------ 18.01 15:08:00.578 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1964 18.01 15:08:00.578 IH: get [{"id":"21","value":"1"}] 18.01 15:08:00.579 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:00.580 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:01.717 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1965 18.01 15:08:01.718 IH: get [{"id":"21","value":"1"}] 18.01 15:08:01.718 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:01.721 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:02.846 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1966 18.01 15:08:02.847 IH: get [{"id":"21","value":"1"}] 18.01 15:08:02.847 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:02.848 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:03.981 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1967 18.01 15:08:03.981 IH: get [{"id":"21","value":"1"}] 18.01 15:08:03.981 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:03.984 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:04.976 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&m=1&cnt=1967 18.01 15:08:04.976 IH: get [{"id":"21","value":"1"}] 18.01 15:08:04.976 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:04.978 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:05.120 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1968 18.01 15:08:05.121 IH: get [{"id":"21","value":"1"}] 18.01 15:08:05.121 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:05.122 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:06.116 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&m=2&cnt=1968 18.01 15:08:06.117 IH: get [{"id":"21","value":"1"}] 18.01 15:08:06.117 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:06.118 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:06.269 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1969 18.01 15:08:06.270 IH: get [{"id":"21","value":"1"}] 18.01 15:08:06.270 IH: set {"SENSOR2":{"dval":"1","err":0}} 18.01 15:08:06.273 megad2: 10.255.255.60 <= localhost:8081 18.01 15:08:07.399 megad2: 10.255.255.60 => localhost:8081 HTTP GET /md.php?pt=21&cnt=1970
Лог к вопросу счетчика импульсов на двухтарифном счетчике. В расширениях прописано 21=ON, входящее сообщение от MegaD - /md.php?pt=21.
Если прописать /md.php?pt=21&cnt - не работает, если прописать /md.php?pt=21&m=2 - m2 может приходить, а может и не приходить, в результате большие отклонения от истины
Перенастроил вход на размыкание, вроде бы лучше, но плагин MegaD стал останавливаться
-
Добрый день!
Снова всплывают двойные сработки MegaD, которые не получается пофиксить:
Лог к вопросу счетчика импульсов на двухтарифном счетчике. В расширениях прописано 21=ON, входящее сообщение от MegaD - /md.php?pt=21.
Если прописать /md.php?pt=21&cnt - не работает, если прописать /md.php?pt=21&m=2 - m2 может приходить, а может и не приходить, в результате большие отклонения от истины
Добрый день!
Есть два варианта решения:
Вариант 1. Делать фиксацию при размыкании: /md.php?pt=21&m=1
Вариант 2. Если все-таки хочется при замыкании, то добавить ловушку для запросов с m=1/2:
"Входящее от MegaD": /md.php?pt=21; "Установить состояние каналов": 21=ON (как у вас сейчас)
"Входящее от MegaD": /md.php?pt=21&m=* "Установить состояние каналов": пусто (ловушка)
-
Добрый день!
Снова всплывают двойные сработки MegaD, которые не получается пофиксить:
Лог к вопросу счетчика импульсов на двухтарифном счетчике. В расширениях прописано 21=ON, входящее сообщение от MegaD - /md.php?pt=21.
Если прописать /md.php?pt=21&cnt - не работает, если прописать /md.php?pt=21&m=2 - m2 может приходить, а может и не приходить, в результате большие отклонения от истины
Добрый день!
Есть два варианта решения:
Вариант 1. Делать фиксацию при размыкании: /md.php?pt=21&m=1
Вариант 2. Если все-таки хочется при замыкании, то добавить ловушку для запросов с m=1/2:
"Входящее от MegaD": /md.php?pt=21; "Установить состояние каналов": 21=ON (как у вас сейчас)
"Входящее от MegaD": /md.php?pt=21&m=* "Установить состояние каналов": пусто (ловушка)
По размыканию пока поёт. Спасибо
-
Опубликована версия v1.1.10 плагина MegaD
Некоторые пользователи уже проверили ее, скачав с гитхаба. За это огромное спасибо
Изменения:
1. Добавлена отправка команды плагину из сценария - любые запросы, которые принимает MegaD
Например, выдать импульс:
this.pluginCommand({unit:'megad1', command:'/sec/?cmd=7:1;p10;7:0'});
Управление лентой WS2818
this.pluginCommand({unit:'megad1', command:'/sec/?pt=35&ws=FF0000&chip=10');
Если переключается выход, можно в command отправить onResponse - что должно переключиться на интерфейсе:
this.pluginCommand({unit:'megad1', command:{url:'/sec/?cmd=7:1;8:0', onResponse:[{id:"7",value:1},{id:"8",value:0}]});
2. Восстановление выходов при перезагрузке контроллера
Добавлено свойство:
Восстанавливать выход при перезагрузке контроллера - checkbox
Для этих выходов при получении st=1 отправляется команда on, если выход был в on
3. Добавлен параметр - Отправлять время на контроллер.
Если галочка установлена, то при старте плагина и при получении с контроллера st=1 сервер отправляет время:
/sec/?cf=7&stime=10:57:06:4
4. Добавлен параметр - Интервал отправки запросов (мсек)
5.Чтение датчиков I2C (и другие запросы, возвращающие одно значение, а не список)
Запрос зависит от подключенного оборудования, подробнее см на сайте ab-log
Отличие от существующего функционала: нет привязки к порту MegaD, подробнее см Общий принцип адресации каналов MegaD
Например, для запросов /sec/?pt=31&scl=34&i2c_dev=htu21d&i2c_par=1 и /sec/?pt=31&scl=34&i2c_dev=htu21d создаем два канала.
ID каналов может быть любым, привязка к порту 31 не нужна!!!
Например,
ID канала: i2c_htu21d (или htu21d_31 или …) Запрос:
/sec/?pt=31&scl=34&i2c_dev=htu21d
ID канала: mySensor (или htu21d_31_1 или ..) Запрос:
/sec/?pt=31&scl=34&i2c_dev=htu21d&i2c_par=1
6. Чтение и управление для DS2413
Запрос
/sec/?pt=32&cmd=list
Ответ содержит как DS18B20, так и DS2413: aad6a070000:25.43;85a56a070000:32.43;79c439000000:OFF/OFF;c6c439000000:ON/ON
Канал DS18B20 формируется как обычно: 32_aad6a070000
Каналы DS2413: 32_79c439000000_A, 32_79c439000000_B
Время для опроса нужно как обычно выставить только в одном из каналов!!
Больше никакой настройки не требуется, команды управления будут сформированы автоматически: /sec/?cmd=32A:1&addr=79c439000000
7. Добавлена функция обработки данных на плагине
7.1 Добавлены свойства
Использовать функцию обработки при получении данных от контроллера - checkbox
Функция обработки значения - многострочное поле для ввода функции
7.2 Функция обработки аналогична Berry - за исключением возвращаемого значения.
Вернуть нужно значение или undefined (return;)
Входные параметры:
val - значение c контроллера
depo - объект, который хранит данные между вызовами функции
Внутри объекта можно создавать любые структуры
function (val, depo) { if (!depo.res) depo.res = []; depo.res.push(val); if (depo.res.length < 5) return; //Нужны еще измерения, значение не возвращаем depo.res.sort(); let result = ((depo.res[1] + depo.res[2] + depo.res[3]) / 3).toFixed(2); depo.res = []; //Перед следующими измерениями сбрасываем массив return result; // Возвращаем результат расчета }
–------------------------------------------------------------------
Общий принцип адресации каналов MegaD
Исторически получилось, что ID каналов привязаны к адресам портов.
Это было сделано для простоты настройки каналов, поскольку можно считывать данные отдельными запросами cmd=get плюс извлекать данные из ответа на запрос cmd=all. Также существует несколько списочных форматов, в т ч внутри cmd=all:
temp:25.2/hum:40.7 или 25.2/40.7 Есть также просто temp:23.5.
Значение 1Wire датчиков выдается списками 8aad6a070000:32.43;85a56a070000:32.43
Все эти варианты покрываются текущим механизмом адресации, нет необходимости строить регулярные выражения для извлечения данных при настройке каналов:
-
Если значение может быть считано из элемента cmd=all как одно значение, ID канала должен быть равен порту (0-37)
-
Если к порту подключено несколько устройств и значения выдаются через /, то каналы адресуются внутри порта через _:
Например, pt=14 - temp:25.2/hum:40 или 25.2/40.7 Каналы 14_1, 14_2
- 1Wire датчики адресуются как порт_ <device id="">Например, pt=31 -8aad6a070000:32.43;85a56a070000:32.43
Каналы 31_8aad6a070000, 31_85a56a070000
- Если нет необходимости вытаскивать данные из списков, то канал может иметь любой идентификатор (лат.буквы,цифры, знак _)
Эта опция действует начиная с v1.1.8</device>
-
-
@gis:
Правильно ли я понял, что управление диммированием из мнемосхемы осуществляется из бокового меню устройства?
Да, все верно. В новой версии 4.4.11 также добавлено управление RGB.
@gis:
Подскажите, пожалуйста, по диммируемым каналам в MegaD. Нужно ли что-то прописывать в расширениях плагина MegaD для диммируемого канала?
Работа с диммерами и RGB как каналами MegaD будет в новой версии плагина, которая будет опубликована в течение этой недели.
У меня диммируемый канал так и не заработал. Все как и было в старой версии плагина. Подскажите, как правильно настроить диммируемый канал.
-
@gis:
У меня диммируемый канал так и не заработал. Все как и было в старой версии плагина. Подскажите, как правильно настроить диммируемый канал.
В версии 1.1.10 плагина MegaD работы с диммером еще не было.
Обновите систему до версии 4.4.14 и плагин до версии 1.1.11
После обновления плагина MegaD выполните перезагрузку сервера
Описание по настройке диммера и RGB здесь https://ih-systems.com/ru/product/plugin-megad/
-
@intrahouse:
В версии 1.1.10 плагина MegaD работы с диммером еще не было.
Описание по настройке диммера и RGB здесь https://ih-systems.com/ru/product/plugin-megad/
А подскажите по управлению удаленным контроллером доработки не делались? - при получении "трапа" от одной MegaD выполнить команду на другой MegaD и, соответственно, изменить состояние канала удаленного контроллера в веб-интерфейсе. Сейчас последнее не работает.
Писал про это тут
PS: И да - в чем же трудность в Cherry отличать pt=1 от pt=1&m=*? В Berry ведь все работало замечательно!
Также для отладки нужна опциональная запись st=1 в пользовательский журнал или ведение лога. Один контроллер с плагином MegaD Cherry стал работать хуже чем было в Berry.. .перезагружаться стал чаще. Разработчик контроллера не может воспроизвести мою ситуацию с помощью лавинного опроса php-методами и думает, что это связано с методами js.
-
@intrahouse:
В версии 1.1.10 плагина MegaD работы с диммером еще не было.
Обновите систему до версии 4.4.14 и плагин до версии 1.1.11
После обновления плагина MegaD выполните перезагрузку сервера
Описание по настройке диммера и RGB здесь https://ih-systems.com/ru/product/plugin-megad/
Обновился, диммер заработал, но есть вопросы: Настройки яркости не сохраняются, после перегрузки всегда устанавливается среднее значение (ну очень неудобно!). При нажатии кнопок + и - значение по центру ползунка не меняется, хотя на иконках и в поле значения изменяется. Не понял в описании плагина:
__Для преобразования значения логического уровня (яркость 0-100%) в значение физического уровня (0-255) служат два следующих параметра.
Обратите внимание, что значение логического уровня должно соответствовать max значению виртуального устройства, иначе слайдер будет работать некорректно.__
Что такое значение логического уровня? Это количество ступеней диммирования? Если значение логического уровня должно соответствовать max значению виртуального устройства, то почему это значение не брать сразу из виртуального устройства, а надо вводить в ручную?
-
@gis:
Обновился, диммер заработал, но есть вопросы: Настройки яркости не сохраняются, после перегрузки всегда устанавливается среднее значение (ну очень неудобно!).
Для устройства типа Аналоговый актуатор предусмотрены настройки:
"Есть уставка (дефолтное значение)"
"Устанавливать дефолтное значение по текущему"
У вас оба флага сброшены, установите их.
Если добавить новое устройство, по умолчанию эти флаги будут установлены.
@gis:
При нажатии кнопок + и - значение по центру ползунка не меняется, хотя на иконках и в поле значения изменяется.
Да, действительно так, поправим.
@gis:
Не понял в описании плагина:
__Для преобразования значения логического уровня (яркость 0-100%) в значение физического уровня (0-255) служат два следующих параметра.
Обратите внимание, что значение логического уровня должно соответствовать max значению виртуального устройства, иначе слайдер будет работать некорректно.__
Что такое значение логического уровня? Это количество ступеней диммирования? Если значение логического уровня должно соответствовать max значению виртуального устройства, то почему это значение не брать сразу из виртуального устройства, а надо вводить в ручную?
Смысл этих параметров, думаю, понятен: яркость на диммере обычно бывает 0-100%, задвижка регулируется 0-90 и т д, а на MegaD нужно передавать 0-255 или 0-4096
В Berry использовался коэффициент пересчета, на который при передаче значение умножалось, при приеме делилось.
Здесь преобразование показано явно. Подумаем, может и уберем логический уровень, но пока так
-
Смысл этих параметров, думаю, понятен: яркость на диммере обычно бывает 0-100%, задвижка регулируется 0-90 и т д, а на MegaD нужно передавать 0-255 или 0-4096
В Berry использовался коэффициент пересчета, на который при передаче значение умножалось, при приеме делилось.
Здесь преобразование показано явно. Подумаем, может и уберем логический уровень, но пока так
Было бы логично, оставить как есть, максимальный логический уровень при этом вывести на максимальное значение ползунка диммера - так, наверно, правильней и пользователям понятнее управлять устройством. А коэффициент пересчета определять при этом автоматически, с участием физического уровня.
-
А подскажите по управлению удаленным контроллером доработки не делались? - при получении "трапа" от одной MegaD выполнить команду на другой MegaD и, соответственно, изменить состояние канала удаленного контроллера в веб-интерфейсе. Сейчас последнее не работает.
Писал про это тут
Расширения_Команда_на_удаленный_MegaD.JPG
Сейчас есть возможность при получении сообщения от MegaD запускать сценарий.
И видится более правильным запустить сценарий для отправки запроса на переключение через команду конкретного плагина:
this.pluginCommand({unit:'megad9', command:{url:'/sec/?cmd=7:1;8:0', onResponse:[{id:"7",value:1},{id:"8",value:0}]});
в вашем случае
this.pluginCommand({unit:'megad9', command:{url:'/sec/?cmd=15:2', onResponse:[{id:"15",value:"TOGGLE"}] });
Два аргумента в пользу этого:
1. В отличие от Berry в Cherry состояние актуатора переключается, когда получен ответ Done
Поэтому кажется нелогичным изменять состояние канала удаленного контроллера ДО получения ответа от него
( "Установить состояния каналов" выполняется при получении входящего от контроллера)
2. Команда пойдет в общую очередь плагина.
А запрос, который отправляется напрямую на другой контроллер, в очередь естественно не включается (это прямой http запрос)
PS: И да - в чем же трудность в Cherry отличать pt=1 от pt=1&m=*? В Berry ведь все работало замечательно!
Это просто чудеса Способ обработки входящих в Berry полностью сохранен в Cherry.
Также для отладки нужна опциональная запись st=1 в пользовательский журнал или ведение лога. Один контроллер с плагином MegaD Cherry стал работать хуже чем было в Berry.. .перезагружаться стал чаще. Разработчик контроллера не может воспроизвести мою ситуацию с помощью лавинного опроса php-методами и думает, что это связано с методами js.
Какое оборудование подключено к этому контроллеру? В чем его отличие от других?
В Cherry никаких лавинных запросов в принципе быть не может, следующий запрос посылается с гарантированным интервалом, включая команды (в отличие от Berry, где команды шли вне очереди)
Запись полного лога добавим.
На сегодня можно делать запись st=1 в пользовательский журнал с помощью сценария, который запускается при получении запроса
-
Сейчас есть возможность при получении сообщения от MegaD запускать сценарий.
Ну наворотили… так наворотили. Я то думаю нафига такой функционал? Теперь бы еще придумать как сделать один скрипт для нескольких таких сообщения от MegaD (типа if(get() == "pt=7") {}) - чтобы все в одном скрипте было! Ранее уже говорил, что путаюсь что в каком скрипте у меня...
Таким образом, сейчас поле "Выполнить запрос..." стало не актуальным?
@intrapro:Это просто чудеса Способ обработки входящих в Berry полностью сохранен в Cherry.
В чудеса не верю - где-то что-то не так. Либо в Berry было что-то не так, что приводило к хорошим результатам!
Какое оборудование подключено к этому контроллеру? В чем его отличие от других?
В Cherry никаких лавинных запросов в принципе быть не может, следующий запрос посылается с гарантированным интервалом, включая команды (в отличие от Berry, где команды шли вне очереди)
Запись полного лога добавим.
На сегодня можно делать запись st=1 в пользовательский журнал с помощью сценария, который запускается при получении запроса
Я все понимаю, но совместно с разработчиком бьюсь с этим уже несколько месяцев - толку ноль. Изменение условий:
1. К контроллеру А подключил пару DS18B20 и шину 1WB, при этом на нем не было ничего кроме DHT22 (с ним контроллер без сбоев работал 2 года!). Контроллер стал каждый день перезагружаться - каждый раз спотыкался на опросе DHT22! Отключил его и все работает без сбоев с большим uptime. Как только подключаю (настраиваю порт на опрос) DHT22 так через некоторое время контроллер перезагружается.
2. К контроллеру Б подключил шину 1WB, при этом на нем уже висел DS18B20 и шина I2C. С Berry перезагружался раз в 2-3 дня (при температуре ниже -20 вообще не перезагружался). С Cherry перезагружался каждый день!!! Вчера поставил интервал отправки запросов 300мсек, пока uptime не сбрасывался 3d 20:38
Разработчик пробовал воспроизводить мои условия с моей конфигурацией, делая опрос с помощью php так быстро как можно, но не добился его зависания. Я уже менял и контроллеры, и их БП. Святой водой не поливал только….