Опрос по требованию

Здравствуйте.
Есть возможность делать опрос канала по требованию, если да подскажите как это сделать.
Суть проблемы: есть светильники Dali управляются через шлюз gw2 по modbus TCP, если включить опрос цветовой температуры у светильников, то начинает подтормаживать шина, в mqtt топиках постоянно возникают и пропадают ошибки чтения на устройствах Dali, (если подключить шлюз по rs485 то ошибки чтения цветовой температуры устройства горят постоянно).
У светильников по умолчанию цветовая температура 6000, а мне нужно 4500 при перебоях питания цветовая температура светильников опять становится в 6000.
Хочу при включении группы светильников отправлять запрос о цветовой температуре устройств входящих в эту группу и если он отличен от уставки менять на значение уставки. В остальное время не опрашивать устройства о цветовой температуре.

Добрый день.
Если вопрос про настройки wb-mqtt-serial - то нет. Нельзя управлять опросом регистров динамически.
Но можно в случае необходимости сформировать запрос используя GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver
При этом проверять правильность формирования, для отладки программы можно используя тот же rpc_modbus_client.
То есть подписаться на топик и смотреть - что он туда оправляет.
Для примера выполняю:

modbus_client_rpc --debug -mrtu -pnone -s2 -b9600 /dev/ttyRS485-2 -o1200 -a 10 -t0x03 -r0 -c 3
2025-02-11 11:20:42,243 [DEBUG] [0a][03][00][00][00][03][04][b0]
2025-02-11 11:20:42,246 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2025-02-11 11:20:42,248 [DEBUG] RPC Client -> {'path': '/dev/ttyRS485-2', 'baud_rate': 9600, 'parity': 'N', 'data_bits': 8, 'stop_bits': 2, 'response_size': 11, 'format': 'HEX', 'msg': '0a030000000304b0', 'total_timeout': 1200} (1200 timeout ms)
2025-02-11 11:20:42,319 [DEBUG] RPC Client <- {'response': '0a030600f1000000002f90'}
2025-02-11 11:20:43,321 [DEBUG] Response: 0a030600f1000000002f90
2025-02-11 11:20:43,321 [DEBUG] <0a><03><06><00><f1><00><00><00><00><2f><90>
SUCCESS: read 3 elements:
	Data: 0x00f1 0x0000 0x0000 

При этом в топике:

mosquitto_sub -v -t /rpc/v1/wb-mqtt-serial/port/Load/#
/rpc/v1/wb-mqtt-serial/port/Load 1
/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-afh0FQmy {"params": {"path": "/dev/ttyRS485-2", "baud_rate": 9600, "parity": "N", "data_bits": 8, "stop_bits": 2, "response_size": 11, "format": "HEX", "msg": "0a030000000304b0", "total_timeout": 1200}, "id": 1}
/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-afh0FQmy/reply {"error":null,"id":1,"result":{"response":"0a030600f1000000002f90"}}

Спасибо, но не очень понятно, а как делать запрос регисра в wb-rules если шлюз подключён по modbus tcp? Приведите пожалуйста пример.

Как и описано:

/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-4lkyJohP {"params": {"ip": "10.0.0.71", "port": 502, "response_size": 11, "format": "HEX", "msg": "932c000000060b0300fa0001", "total_timeout": 1000}, "id": 1}
/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-4lkyJohP/reply {"error":null,"id":1,"result":{"response":"d14c0000001b71041800cc"}}

Вроде что то получилось вот тестовый код:

defineRule({
    whenChanged: "wb-mdm3_74/Input 5 Single Press Counter",
    then: function() {
        var strJson = JSON.stringify({
            "params": {
                "ip": "192.168.1.4",
                "port": 502,
                "response_size": 11,
                "format": "HEX",
                "msg": '9865000000063f030bd00001',
                "total_timeout": 1000
            },
            "id": 1
        });
        publish("/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-4lkyJohP", strJson, 2, false);
        trackMqtt("/rpc/v1/wb-mqtt-serial/port/Load/modbus-client-rpc-4lkyJohP/reply", function(message) {
            //log.info("name: {}, value: {}".format(message.topic, message.value))
           var x = JSON.parse(message.value);
            debug(x.result.response) // получаю ответ 9865000000053f030200ed 
        });
    }
})

в мониторе dali проходит запрос яркости светильника это радует.
Но будьте добры подскажите я на правильном пути и что делать с ответом 9865000000053f030200ed, как мне получить яркость устройства?
Почему сообщения в debug после сохранения правила начинают приходить каждый раз увеличиваясь на 1 (первый раз нажимаю кнопку приходит одно сообщение, второй раз нажимаю приходит уже 2 сообщения и т.д.).

  • с modbus запросами и ответами разобрался
  • осталось понять про сообщения debug

Не очень понятно, с какими сообщениями?