EcoDim не проходит в WB команда dali GO TO SCENE 0

Добрый день!
Что на вашем контроллере показывает команда
ls -la /etc/wb-mqtt-serial.conf.d/templates/config-ecodim-dali-gw2.json ?
Если обновленный шалон находится по этому пути, попробуйте выполнить
systemctl restart wb-mqtt-confed и перезагрузить по Ctrl-F5 страницу браузера.

вернуло
-rw-r--r-- 1 root root 344073 Aug 31 15:04 /etc/wb-mqtt-serial.conf.d/templates/config-ecodim-dali-gw2.json

это выполнил
systemctl restart wb-mqtt-confed

затем в устройствах сделал Ctrl-F5 страницы - ничего не изменилось

ecodim_dali_gw2_1/comandCounter - заработал! +1 при каждом нажатии
ecodim_dali_gw2_1/comandData - всегда 0(

непонятно как по ecodim_dali_gw2_1/comandCounter отловить какое именно устройство нажимается

Замечательно!
Я не вижу описания решистра 58 в документации производителя, зато есть битовые флаги изменений групп и устройств в регистрах 59-63:

да, пытался это использовать в ветку каналов, вот так, но наверное не правильно -

           {
                "name": "onChange 15-0",
                "address": 63,
                "reg_type": "holding",
                "type": "value",
                "format": "u16",
                "readonly": true,
                "group": "system_commands"
            },

подскажите как правильно?

У меня нет устройства под рукой, чтобы проверить, точно ли из этого регистра вы сможете получать нужную информацию, но ваше доплоненние к шаблону выглядит корректно. А почему вам кажется, что неправильно?

потому что в каждом устройстве прописывается параметр “Статус изменения цвета устройства” и он красный

а я ожидаю, что будет выводится команда, посылаемая устройству

А если остановить wb-mqtt-serial и прочесть регистр modbus_client, какое значение он выдает?

не уверен, что правильно выполнил команду, вот так запустил -

modbus_client --debug -mtcp -a1 -c1 -r63 -t0x03 -o300 -p502 192.168.0.107

ответ такой

[00][01][00][00][00][06][01][03][00][3F][00][01]
Waiting for a confirmation...
<00><01><00><00><00><05><01><03><02><FF><FF>
SUCCESS: read 1 of elements:
        Data: 0xffff```

Да, регистр доступен, возможно значение 0xffff воспринимается как ошибка, хотя и не должно. Вы же не добавляли явно “error_value”: “0xFFFF” к описанию регистра, только как показали, верно?
В любом случае кажется, что данный регистр оказывается неинформативным. Похоже, что вам надо напрямую спросить производителя, как через Modbus можно отловить, какое именно устройство нажимается – не вижу каких-то других указаний в документации.

если вы про командную строку modbus_client, я на добавлял error_value

Не-не, я про шаблон

в шаблоне нет вхождений по “error_value” и отдельно address 63 не описан тоже
прикладываю на всякий случай шаблон
config-ecodim-dali-gw2.json (336,1 КБ)

Понял, возможно, эти регистры не поддерживаются шлюзом, или поддерживаются в определенной конфигурации. Посколькe это не наше устройство, не могу проконсультировать по деталям, к сожалению.
Можно так же проверить, доступен ли вообще 3323 (для других устройств 3328 и далее) регистр “Device 0 Color Change Status” с помощью modbus_client.

Добрый день! Остались ли какие-то вопросы по этой теме, с которыми я мог бы помочь?

Мимо проходил. Вы хотите получить двойное нажатие с шины, отправляя одну команду два раза? Как я понял, в шине дали эти команды идут как сигналы, т. е. появился и пропал. Но на выходе шлюза — Modbus, который хранит в себе значения. Получается, у нас есть регистр, который отвечает за команду S0, и если эта команда прилетает несколько раз, то значение в регистре не меняется (команда одна и та же), соответственно, для Modbus и, как следствие, MQTT ничего не происходит. А вот если прилетит сначала S0, а потом S1 (которая, по идее, должна сбрасывать состояние регистра, тут уже вопрос, как это в шлюзе реализовано), и потом опять S0, то будет засчитано как 2 раза изменения состояния.

1 лайк

Выяснили с тех поддержкой шлюза. Надо после первого нажатия выкл., писать 0 в 57-й регистр. И далее вот так:

главное, чтобы период запуска скрипта был достаточно частым: в dali команды идут раз 20 мс, соответственно, надо чаще проверять регистр, тогда у Вас при нажатиях будет получаться примерно такое чтение регистра 58: 0x0001 (scene 0), 0x0001 (scene 0), 0x0002 (scene 1), 0x0001 (scene 0), 0x8000 (scene 15)

Теперь осталось разобраться как из правил ВБ писать и читать регистры.

Подскажите, пожалуйста.

От dali-шных копок уже никак не уйти? Решение с перезаписью регистров выглядит как сомнительный геморой, на мой взгляд.

технически уйти можно, но много монтажных работ будет. Пока пытаюсь малой кровью обойтись. А в чём геморой?

Такой подход кое-где используется.
Для примера Настройка правильной реакции на Zigbeee2MQTT в Rules - #20 от пользователя Aleksandr_Khlebnikov

То есть опрос этого регистра - раз в 10мс.