и вы используете modbus_client, перед его использованием надо wb-mqtt-serial остановить
Да забыл сделать. и адрес был не правильный
root@wirenboard-ALSPTZPR:~# modbus_client_rpc --debug -m rtu -p none -a 224 /dev/ttyRS485-1 -b 115200 -t 0x04 -r0x68 -c 2
2026-04-30 17:50:25,605 [DEBUG] [e0][04][00][68][00][02][e7][a6]
2026-04-30 17:50:25,607 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2026-04-30 17:50:25,609 [DEBUG] RPC Client → {‘path’: ‘/dev/ttyRS485-1’, ‘baud_rate’: 115200, ‘parity’: ‘N’, ‘data_bits’: 8, ‘stop_bits’: 1, ‘response_size’: 9, ‘format’: ‘HEX’, ‘msg’: ‘e00400680002e7a6’, ‘total_timeout’: 1000} (1000 timeout ms)
2026-04-30 17:50:26,613 [ERROR] Mqtt-rpc client timeout error, timeout 1000 ms
Это нормально? или проблема на линии? или с устройством?
Устройство не ответило за 1 секунду. Это не очень хорошо, проверьте шину (имя порта) скорость и адрес.
Должны соответствовать фактичесим.
Например приложите скриншот настроек порта из интерфейса
Проверьте пожалуйста с двумя стопбитами, точно так же как настроено на порту, например
modbus_client_rpc --debug -m rtu -p none -s2 -a 224 /dev/ttyRS485-1 -b 115200 -t 0x04 -r0x68 -c 2
несмотря на то что устройства должны отвечать и на один стопбит.
Также - нужно попробовать несколько раз, ну и несколько устройств на шине, для проверки.
Нецелесообразно обсуждать в одной теме несколько разных вопросов - при этом нить реассуждений теряется. Лучше создайте новую.
Перед этим произвел команду systemctl stop wb-mqtt-serial
root@wirenboard-ALSPTZPR:~# modbus_client_rpc --debug -m rtu -p none -s2 -a 224 /dev/ttyRS485-1 -b 115200 -t 0x04 -r0x68 -c 2
2026-05-01 14:07:10,335 [DEBUG] [e0][04][00][68][00][02][e7][a6]
2026-05-01 14:07:10,338 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2026-05-01 14:07:10,340 [DEBUG] RPC Client → {‘path’: ‘/dev/ttyRS485-1’, ‘baud_rate’: 115200, ‘parity’: ‘N’, ‘data_bits’: 8, ‘stop_bits’: 2, ‘response_size’: 9, ‘format’: ‘HEX’, ‘msg’: ‘e00400680002e7a6’, ‘total_timeout’: 1000} (1000 timeout ms)
2026-05-01 14:07:11,345 [ERROR] Mqtt-rpc client timeout error, timeout 1000 ms
Хорошо
А, это не стоит делать если используете modbus_client_rpc - он работает через метод драйвера.
Если останавливаете - то лучше modbus_client
Вот повторил команду
root@wirenboard-ALSPTZPR:~# modbus_client_rpc --debug -m rtu -p none -s2 -a 224 /dev/ttyRS485-1 -b 115200 -t 0x04 -r0x68 -c 2
2026-05-01 15:03:39,525 [DEBUG] [e0][04][00][68][00][02][e7][a6]
2026-05-01 15:03:39,527 [DEBUG] Connecting to broker unix:///var/run/mosquitto/mosquitto.sock
2026-05-01 15:03:39,529 [DEBUG] RPC Client → {‘path’: ‘/dev/ttyRS485-1’, ‘baud_rate’: 115200, ‘parity’: ‘N’, ‘data_bits’: 8, ‘stop_bits’: 2, ‘response_size’: 9, ‘format’: ‘HEX’, ‘msg’: ‘e00400680002e7a6’, ‘total_timeout’: 1000} (1000 timeout ms)
2026-05-01 15:03:39,567 [DEBUG] RPC Client ← {‘response’: ‘e004040001162314f3’}
2026-05-01 15:03:40,569 [DEBUG] Response: e004040001162314f3
2026-05-01 15:03:40,570 [DEBUG] <04><04><00><01><16><23><14>
SUCCESS: read 2 elements:
Data: 0x0001 0x1623
Устройство перезапускалось 19 часов, 46 минут назад.
А остальные устройства на этой же шине (предполагаю что они питаются от одного источника) - имеют такое же или близкое значение?
Да я вчера подключал новое устройство и отключал линию.
Отлично. Ну, посмотрите на количество ошибок на линии, это даст направление.
Вот попробовал отредактировать ваше правило но видимо я что-то делаю не так поскольку это делая первые. Можете помочь как зделать чтобы все заработало
// Виртуальное устройство Насос Окна 2 этаж с шестью переключателями K1..K6
defineVirtualDevice(“Насос Окна 2 этаж”, {
title: “Насос Окна 2 этаж”,
cells: {
K1: { type: “switch”, value: false },
K2: { type: “switch”, value: false },
K3: { type: “switch”, value: false },
K4: { type: “switch”, value: false },
K5: { type: “switch”, value: false },
K6: { type: “switch”, value: false },
}
});var KEYS = [“wb-mr6cv3_45//K1”, “wb-mr6cv3_45/K2”, “wb-mr6cv3_45/K3”,
“wb-mr6cv3_45/K4”, “wb-mr6cv3_45/K5”, “wb-mr6cv3_45/K6”];// Правило: срабатывает если хотя бы один из K1..K6 равен true
defineRule(“wb-mr6cv3_45_any_on”, {
whenChanged: KEYS,
then: function() {
var anyOn = [1, 2, 3, 4, 5, 6].some(function(i) {
return dev[“wb-mr6cv3_45/K” + i];
});
if (anyOn) {
log.info(“testdev1: хотя бы один контрол включён”);
// Здесь можно добавить нужные действия
}
}
});// Правило: срабатывает если все K1..K6 равны true
defineRule(“wb-mr6cv3_45_all_on”, {
whenChanged: KEYS,
then: function() {
var allOn = [1, 2, 3, 4, 5, 6].every(function(i) {
return dev[“wb-mr6cv3_45/K” + i];
});
if (allOn) {
log.info(“testdev1: все контролы включены”);
// Здесь можно добавить нужные действия
}
}
})// Правило: срабатывает если все K1..K6 равны falsedefineRule(“wb-mr6cv3_45_all_off”, {
whenChanged: KEYS,
then: function() {
var allOff = [1, 2, 3, 4, 5, 6].every(function(i) {
return !dev[“wb-mr6cv3_45/K” + i];
});
if (allOff) {
log.info(“testdev1: все контролы выключены”);
// Здесь можно добавить нужные действия
}
}
})
wb-mr6cv3_45/K- устройства при отключении которого насос wb-mr6cv3_101/K4 должен включаться но если все включены то насос только тогда отключается
А в какой строке это у вас происходит?
не понимаю как надо сделать вот и пишу искал в шаблонах с термостата пытался по разному писать не сохраняет ошибки. я первый раз работаю с правилами мне плоха пока даются правила пытаюсь в них никнуть но пока тяжело
два слэша
У вас в трех правилах проверяется одно и то же условие, лучше сделать все в одном правиле:
var KEYS = [
'wb-mr6cv3_45/K1',
'wb-mr6cv3_45/K2',
'wb-mr6cv3_45/K3',
'wb-mr6cv3_45/K4',
'wb-mr6cv3_45/K5',
'wb-mr6cv3_45/K6'
];
var CHANNELS = [1, 2, 3, 4, 5, 6];
defineRule('wb-mr6cv3_45_state', {
whenChanged: KEYS,
then: function () {
var onCount = 0;
CHANNELS.forEach(function (i) {
if (dev['wb-mr6cv3_45/K' + i]) {
onCount++;
}
});
if (onCount === 0) {
log.info('testdev1: все контролы выключены');
return;
}
if (onCount === CHANNELS.length) {
log.info('testdev1: все контролы включены');
return;
}
log.info('testdev1: частично включены (' + onCount + ')');
}
});
но нужно сделать так чтобы “все контролы выключены” насос ВКЛ “wb-mr6cv3_101/K4”
“все контролы включены” насос ВЫКЛ “wb-mr6cv3_101/K4”
“частично включены” насос ВКЛ “wb-mr6cv3_101/K4”
Допишите код, там же все тривиально.


