Протокол DALI

Есть какие ни будь подвижки в этом направлении? Стоит задача управлять светом по протоколу DALI.
Может есть проверенные контроллеры modbus - Dali, которые точно будет работать (кто-то из ваших клиентов-исталяторов использовал)? Можете порекомендовать?

1 лайк

Здравствуйте! Есть вполне рабочий шлюз EcoDim Modbus-Dali: Использование шлюза ECODim DALI GW2 с контроллером Wiren Board — Wiren Board.
В ближайшее время планируем сделать его поддержку “из коробки”.

1 лайк

Протокол DALI значит…записали в блокнот…

1 лайк

Да, только есть у этого шлюза одна особенность, здесь обсуждали:
https://support.wirenboard.com/t/privedenie-znachenij-v-shablonah-k-nuzhnomu-diapazonu/8320
Но в целом все работает прекрасно

Сейчас разрабатывается новая возможность в драйвере wb-mqtt-serial создавать канал с разными адресами для записи и чтения. Это должно позволить работать с регистрами типа “только запись” данного шлюза корректно.

Подскажите, когда наступит этот долгожданный момент? Сейчас на тесте есть этот шлюз. Хочу использовать его в текущем проекте. Но реализация из темы Приведение значений в шаблонах к нужному диапазону - #9 от пользователя Explorerol явно “хромает”. Может можно поучаствовать в тестировании, дал бы обратную связь.

Думаю, что недели через две можно будет что-нибудь потестировать. Сейчас собираем оборудование для тестового стенда.

Тогда может подскажете, как “выровнять” значения получаемые от шлюза?
image
в шаблоне так прописанно:

{
			"name" : "A0_valRead",
			"reg_type" : "holding",
			"address" : 3004,
			"type": "dimmer",
			"scale" : 0.583,
			"offset" : -48,
			"format": "u16"	
		},

Вот это, думаю, не правильно. Варианты type описаны здесь:

Попробовал так:

{
			"name" : "A0_valRead",
			"reg_type" : "holding",
			"address" : 3004,
			"type": "range",
      "max": 100,
      "min": 0,
			"scale" : 0.583,
			"offset" : -48,
			"format": "u16"	
		},

Стало только хуже:
image

Секундочку, так вы же его и использовали в теме Приведение значений в шаблонах к нужному диапазону - #9 от пользователя Explorerol

Там я приводил пример, как задать параметр poll_interval через шаблон. Остальная часть была взята из шаблона пользователя: да, не доглядел.

Так в итоге, как можно сделать, что бы значения целые приходили?

Целые значения с коэффициентом 0.583? Немного непонятно, как с ним могут быть целые.

Ну может округление какое ни будь. Яндексу и Сири все равно на эти коэффициенты, они хотят целые числа от 0 до 100.

Округлить - можно и скриптом, ну и отдать внешнему сервису значения из виртуального устройства.

Но и в самом шаблоне тоже предусмотрен механизм, отлично описано тут:

Спасибо, в таком виде отрабатывает хорошо, за исключением выключение

"name" : "Channel 00",
			"reg_type" : "holding",
			"address" : 3004,
			"type": "value",
			"max": 100,
			"min": 0,
			"round_to": 1,
			"scale" : 0.583,
			"offset" : -48,
			"readonly" : true,
			"format": "u16"

Не подскажете, как лучше реализовать передачу нуля в устройство?

Попробуйте использовать:

"off_value": 0,

Попробовал, при 0 свет все равно горит (хоть и на минимальной яркости).

Еще обнаружил проблему в виде “прилета” значений из соседних регистров:
Данные в регистрах 3004 и 3009 (Запрос текущего уровня яркости индивидуального устройства) - “пляшут”. Мне кажется, они подтягиваются из “соседнего” регистра, т.е. если у меня нулевой светильник (адрес 3004) установлен на 23, а первый (адрес 3009) на 5, То в нулевой иногда прилетает 5, а держится 23. То же самое и с первым, только у него установлено 5, но иногда прилетает 23. Не сталкивались с таким поведением?


а если читаю этот объект через modbus_client --debug -mrtu -b19200 -pnone -s1 /dev/ttyRS485-2 -a21 -t0x03 -r3004 то в ответ всегда приходит 0x00a0 (160 в десятичном), что верно. Тогда мне не понятно, почему wb-mqtt-serial получает другие, соседние значения??