Плагин MegaD
-
@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 так быстро как можно, но не добился его зависания. Я уже менял и контроллеры, и их БП. Святой водой не поливал только….
-
Сейчас есть возможность при получении сообщения от MegaD запускать сценарий.
Ну наворотили… так наворотили. Я то думаю нафига такой функционал?
По моему всегда было горячее желание писать скрипты где только можно
Здесь функционал увеличивается: можно передавать команды не только другим контроллерам, но и другим плагинам; вычислять, записывать в журнал; да много чего можно придумать
Таким образом, сейчас поле "Выполнить запрос…" стало не актуальным?
Наверно есть задачи, где нужно просто отправить запрос без feedback-а.
Теперь бы еще придумать как сделать один скрипт для нескольких таких сообщения от MegaD (типа if(get() == "pt=7") {}) - чтобы все в одном скрипте было! Ранее уже говорил, что путаюсь что в каком скрипте у меня…
Да, это вопрос решаемый за счет передачи параметра (-ов) при вызове сценария (это уже реализовано при запуске сценария с кнопки). В плагине megad добавим в следующей версии. Выглядеть это может так:
Запуск сценария: toggleLamp
Параметр сценария: 7
А в сценарии этот параметр принять как входной аргумент, например так:
start(megaPort) { if (megaPort == 7) .... ... }
Разработчик пробовал воспроизводить мои условия с моей конфигурацией, делая опрос с помощью php так быстро как можно, но не добился его зависания. Я уже менял и контроллеры, и их БП. Святой водой не поливал только….
Здесь наверно поможет только тотальное логирование и дальнейший анализ.
-
Теперь бы еще придумать как сделать один скрипт для нескольких таких сообщения от MegaD (типа if(get() == "pt=7") {}) - чтобы все в одном скрипте было! Ранее уже говорил, что путаюсь что в каком скрипте у меня…
Да, это вопрос решаемый за счет передачи параметра (-ов) при вызове сценария (это уже реализовано при запуске сценария с кнопки). В плагине megad добавим в следующей версии.
На гитхаб опубликован новый релиз плагина 1.1.12: https://github.com/intrahouseio/intraHouse.plugin-MegaD/releases/tag/v1.1.12
При запуске сценария (Расширения) добавлен опциональный "Параметр сценария"
Запускаемый сценарий должен объявить параметр как входящий аргумент функции start и затем использовать его.
Пример c megaPort из предыдущего сообщения полностью рабочий
Если оставить параметр пустым, в качестве параметра будет передан JSON с содержимым полученного запроса, например
{"pt":1, "m":2} для /megad?pt=1&m=2
В этом случае параметр в сценарии нужно разобрать c помощью JSON.parse(), в результате получаем объект
start(req) { const obj = JSON.parse(req); this.log("Порт "+obj.pt+", m="+obj.m ); }
Также объект можно ввести вручную в строку "Параметр сценария", если есть такая необходимость
Например: Параметр сценария: {"pt":15, "cmd":"one-two", "click":1, "hello":"world" }
start(myparam) { const obj = JSON.parse(myparam); this.log("Порт "+obj.pt+" send hello "+obj.hello ) }
-
Пример c megaPort из предыдущего сообщения полностью рабочий
Немного прокомментирую для остальных, поскольку сразу не все понял. Если в разделе "Расширения" плагина MegaD в поле "Параметр сценария" вписать, например, значение 7, то скрипт вида
start(megaPort) { if(megaPort == 7) { this.log("Сработал порт - " +megaPort); } }
сработает и в пользовательский журнал будет внесена запись "Сработал порт - 7".
Если оставить параметр пустым, в качестве параметра будет передан JSON с содержимым полученного запроса.
В моем случае скрипт для двух случаев нажатия кнопок выключателей будет выглядеть так:
script({ start(param) { const obj = JSON.parse(param); if(obj.pt == 0 && obj.click == 2) { this.pluginCommand({ unit:"megad4", command:{url:"/sec/?cmd=15:2", onResponse:[{id:"15",value:"TOGGLE"}]} }); this.log("Переключен свет в котельной"); } if(obj.pt == 3 && obj.click == 2) { this.pluginCommand({ unit:"megad5", command:{url:"/sec/?cmd=8:2", onResponse:[{id:"8",value:"TOGGLE"}]} }); this.log("Переключен свет в кладовке"); } }
Однако если скрипт использовать со всеми MegaD, то придется в строку "Параметр сценария" вводить как минимум IP-адрес, номер порта и параметр его сработки для того, чтобы идентифицировать порт какого MegaD сработал. Поэтому мое пожелание разработчикам - по умолчанию в качестве параметра передавать JSON, в котором будет содержаться IP-адрес MegaD, то есть: {"ip":"192.168.0.14", "pt":1, "m":2} для /megad?pt=1&m=2 с IP-адресом 192.168.0.14
Также объект можно ввести вручную в строку "Параметр сценария", если есть такая необходимость
Этот вариант я использовал чтобы отобразить какой именно контроллер перезагрузился. То есть в строку "Параметр сценария" ввел описание контроллера (то что у меня есть в комментарии) - {"dev":"MegaD-2561-21 (Освещение #1)"}. Соответственно скрипт для записи в журнал и оповещения через telegram получился такой:
/** * @name Запись перезагрузки MegaD в журнал * @desc При возникновении события st=1 от MegaD оно записывается в журнал * @version 4 */ script({ start(param) { const obj = JSON.parse(param); this.log(obj.dev + " перезагружен!"); this.info("telegram", "OWNER", obj.dev + " перезагружен!"); } });
-
Коллеги, нужен совет.
Мы приобрели MegaD-2561. А про модули ввода/вывода не подумали.
В первую очередь нужны диммер и RGB. Может еще что-то.
Что посоветуете взять?
Нам это оборудование нужно для тестирования плагина MegaD
-
@intrahouse:
Коллеги, нужен совет.
Мы приобрели MegaD-2561. А про модули ввода/вывода не подумали.
Согласен с предыдущим оратором. В 14IOR есть одно штатное реле (P14/P29) и 14 очень гибко настраиваемых входов. Например их можно сделать выходами…к которым можно подключить обычные платы реле с Али. Подтяжку у входов можно либо совсем отключить и использовать P0-P5 как АЦП, либо увеличить ток подтяжки для работы с длинными шинами 1WB/I2C. Конечно же к этим входам можно подключить RGB ленты на базе WS281x или часть из них (P10-P13/P25,P27-P28) сделать выходами для подключения ШИМ драйверов типа L298N.
Кроме этого, на борту этого модуля есть шина с +5В и +3.3В. То есть без проблем можно подключить любой датчик.
-
Коллеги, спасибо.
-
Может чего не так делаю, но не работает на megad диммер. Значения не меняются.
01.02 18:34:40.958 megad1: 01.02 18:34:40.959 megad1: localhost => 192.168.0.16 HTTP GET /sec/?cmd=all 01.02 18:34:40.983 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:40.985 megad1: body: ON/1;OFF;ON/1;ON;ON;183;ON;ON;ON;ON;255;OFF;ON;ON;ON;ON;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;14.40;OFF;ON;ON;ON;ON;ON;ON 01.02 18:34:40.988 IH: get [{"id":"1","value":"0"},{"id":"10","value":100},{"id":"30","value":"14.4"}] 01.02 18:34:40.988 IH: set {"VENT1":{"dval":"0","err":0},"DIMM2":{"aval":100,"err":0},"SENSORA1":{"aval":"14.4","err":0}} 01.02 18:34:41.363 megad1: 01.02 18:34:41.366 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=30&cmd=get 01.02 18:34:41.391 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:41.391 megad1: body: 14.40 01.02 18:34:41.392 IH: get [{"id":"30","value":"14.4"}] 01.02 18:34:41.393 IH: set {"SENSORA1":{"aval":"14.4","err":0}} 01.02 18:34:41.568 megad1: 01.02 18:34:41.568 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=10&cmd=get 01.02 18:34:41.584 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:41.585 megad1: body: 255 01.02 18:34:41.589 IH: get [{"id":"10","value":100}] 01.02 18:34:41.590 IH: set {"DIMM2":{"aval":100,"err":0}} 01.02 18:34:42.169 megad1: 01.02 18:34:42.170 megad1: localhost => 192.168.0.16 HTTP GET /sec/?cmd=all 01.02 18:34:42.190 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:42.191 megad1: body: ON/1;OFF;ON/1;ON;ON;192;ON;ON;ON;ON;254;OFF;ON;ON;ON;ON;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;14.40;OFF;ON;ON;ON;ON;ON;ON 01.02 18:34:42.191 IH: get [{"id":"1","value":"0"},{"id":"10","value":100},{"id":"30","value":"14.4"}] 01.02 18:34:42.192 IH: set {"VENT1":{"dval":"0","err":0},"DIMM2":{"aval":100,"err":0},"SENSORA1":{"aval":"14.4","err":0}} 01.02 18:34:42.571 megad1: 01.02 18:34:42.572 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=30&cmd=get 01.02 18:34:42.593 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:42.594 megad1: body: 14.40 01.02 18:34:42.595 IH: get [{"id":"30","value":"14.4"}] 01.02 18:34:42.595 IH: set {"SENSORA1":{"aval":"14.4","err":0}} 01.02 18:34:42.772 megad1: 01.02 18:34:42.773 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=10&cmd=get 01.02 18:34:42.788 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:42.789 megad1: body: 254 01.02 18:34:42.790 IH: get [{"id":"10","value":100}] 01.02 18:34:42.791 IH: set {"DIMM2":{"aval":100,"err":0}} 01.02 18:34:43.374 megad1: 01.02 18:34:43.375 megad1: localhost => 192.168.0.16 HTTP GET /sec/?cmd=all 01.02 18:34:43.406 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:43.407 megad1: body: ON/1;OFF;ON/1;ON;ON;193;ON;ON;ON;ON;255;OFF;ON;ON;ON;ON;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;14.31;OFF;ON;ON;ON;ON;ON;ON 01.02 18:34:43.407 IH: get [{"id":"1","value":"0"},{"id":"10","value":100},{"id":"30","value":"14.31"}] 01.02 18:34:43.408 IH: set {"VENT1":{"dval":"0","err":0},"DIMM2":{"aval":100,"err":0},"SENSORA1":{"aval":"14.31","err":0}} 01.02 18:34:43.776 megad1: 01.02 18:34:43.777 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=30&cmd=get 01.02 18:34:43.798 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:43.799 megad1: body: 14.31 01.02 18:34:43.799 IH: get [{"id":"30","value":"14.31"}] 01.02 18:34:43.800 IH: set {"SENSORA1":{"aval":"14.31","err":0}} 01.02 18:34:43.978 megad1: 01.02 18:34:43.979 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=10&cmd=get 01.02 18:34:43.993 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:43.994 megad1: body: 254 01.02 18:34:43.994 IH: get [{"id":"10","value":100}] 01.02 18:34:43.995 IH: set {"DIMM2":{"aval":100,"err":0}} 01.02 18:34:44.581 megad1: 01.02 18:34:44.581 megad1: localhost => 192.168.0.16 HTTP GET /sec/?cmd=all 01.02 18:34:44.596 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:44.598 megad1: body: ON/1;OFF;ON/1;ON;ON;192;ON;ON;ON;ON;255;OFF;ON;ON;ON;ON;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;14.31;OFF;ON;ON;ON;ON;ON;ON 01.02 18:34:44.599 IH: get [{"id":"1","value":"0"},{"id":"10","value":100},{"id":"30","value":"14.31"}] 01.02 18:34:44.599 IH: set {"VENT1":{"dval":"0","err":0},"DIMM2":{"aval":100,"err":0},"SENSORA1":{"aval":"14.31","err":0}} 01.02 18:34:44.981 megad1: 01.02 18:34:44.982 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=30&cmd=get 01.02 18:34:45.003 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:45.004 megad1: body: 14.31 01.02 18:34:45.005 IH: get [{"id":"30","value":"14.31"}] 01.02 18:34:45.006 IH: set {"SENSORA1":{"aval":"14.31","err":0}} 01.02 18:34:45.183 megad1: 01.02 18:34:45.184 megad1: localhost => 192.168.0.16 HTTP GET /sec/?pt=10&cmd=get 01.02 18:34:45.200 megad1: localhost <= 192.168.0.16 response: statusCode=200 contentType = text/html 01.02 18:34:45.201 megad1: body: 254 01.02 18:34:45.202 IH: get [{"id":"10","value":100}]
-
Может чего не так делаю, но не работает на megad диммер. Значения не меняются.
Команды управления в логе не вижу. А чтобы увидеть изменение значения с 255 на 254 надо сделать на устройстве-диммере логический интервал не 0-100, а 0-255. Иначе, 255 и 254 - это все равно 100
-
Может чего не так делаю, но не работает на megad диммер. Значения не меняются.
Команды управления в логе не вижу
Я сделал все как обычно: настроил мегу, создал устройство, настроил канал в плагине, добавил мнемосхему. Но не чего не происходит(
-
Может чего не так делаю, но не работает на megad диммер. Значения не меняются.
Команды управления в логе не вижу. А чтобы увидеть изменение значения с 255 на 254 надо сделать на устройстве-диммере логический интервал не 0-100, а 0-255. Иначе, 255 и 254 - это все равно 100
Я так делал изначально. Не меняются значения. Даже если с веба меги задаю любое значение, на IH не меняется.
-
Может чего не так делаю, но не работает на megad диммер. Значения не меняются.
Команды управления в логе не вижу. А чтобы увидеть изменение значения с 255 на 254 надо сделать на устройстве-диммере логический интервал не 0-100, а 0-255. Иначе, 255 и 254 - это все равно 100
Я так делал изначально. Не меняются значения. Даже если с веба меги задаю любое значение, на IH не меняется.
У вас в логе канал 10 связался с устройством DIM2, но читается оттуда только 255 и 254.
Когда изменяете на меге, посмотрите в отладчике - на 10 канале должно значение измениться. Пока оно только 255 и 254
ON/1;OFF;ON/1;ON;ON;192;ON;ON;ON;ON;254;OFF;ON;ON;ON;ON;OFF;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;ON;14.40;OFF;ON;ON;ON;ON;ON;ON
-
artem521, а с какой целью опрашиваешь все каналы контроллера так часто? Ведь особенность MegaD в том что она сама по событию на порте (замыкание/размыкание) присылает сообщение на сервер. И опрашивать нужно только каналы, на которых висят датчики (DS18B20, DHT и датчики на шине I2C).