Подключение внутрипольного конвектора

Здравствуйте, появилась задача-подключить конвектор. По умолчанию он управляется термостатом через RS485. В помещении будет стоять датчик WB-MSW v.4 ( подключенный , соответственно, к Wirenboard 7). Подскажите можно ли подключить конвектор напрямую к контроллеру?

Добрый день.
Попытался найти карту регистров, для интеграции по Modbus, которую можно сделать согласно статье.
Но видимо нет в открытом доступе, нужно запрашивать у производителя.

Если честно, немного не понятная инструкция, как вы видите интеграцию не по Modbus?

Протокол обмена VT601 с модулем FCM версия 2022_1.pdf (312,9 КБ)

сейчас интеграцию никак не вижу, но хочу через modbus. Смущает такой момент -
сам конвектор не имеет адреса на шине, а управляется широковещательной командой.Отсюда вопрос-как это отобразить в шаблоне?

Судя по протоколу обмена — там не modbus.
Можно воспользоваться прямой записью в порт с помощью RPC — GitHub - wirenboard/wb-mqtt-serial: Wiren Board MQTT serial protocol driver
В качестве примера — Примеры правил — Wiren Board

// Подключаем библиотеку для работы с Modbus
const modbus = require(‘modbus’);

// Адрес устройства на шине RS485
const DEVICE_ADDRESS = 0xFF; // Широковещательный адрес (или конкретный адрес устройства)

// Функция для создания пакета данных
function createPacket(regOffset, value) {
const preamble = 0x55;
const len = 0x04; // Длина тела пакета
const comm = 0x01; // Команда записи
const payload = [DEVICE_ADDRESS, len, comm, regOffset, value];
const cs = payload.reduce((acc, byte) => acc ^ byte, 0); // Контрольная сумма
return Buffer.from([preamble, …payload, cs]);
}

// Функция для отправки данных на устройство
function sendData(regOffset, value) {
const packet = createPacket(regOffset, value);
modbus.write(DEVICE_ADDRESS, packet, (err) => {
if (err) {
console.error(“Ошибка отправки данных:”, err);
} else {
console.log(“Данные успешно отправлены:”, packet);
}
});
}

// Функция для чтения данных с устройства
function readData(regOffset, callback) {
modbus.read(DEVICE_ADDRESS, regOffset, 1, (err, data) => {
if (err) {
console.error(“Ошибка чтения данных:”, err);
} else {
console.log(“Данные успешно получены:”, data);
callback(data);
}
});
}

// Пример использования
defineVirtualDevice(“fan_controller”, {
title: “Fan Controller”,
cells: {
fan_speed: {
type: “range”,
value: 0,
max: 255,
readonly: false
},
valve_state: {
type: “range”,
value: 0,
max: 255,
readonly: false
}
}
});

// Обработка изменения скорости вентилятора
defineRule(“fan_speed_change”, {
whenChanged: “fan_controller/fan_speed”,
then: function (newValue) {
sendData(0x00, newValue); // Отправляем значение ШИМ для вентилятора
}
});

// Обработка изменения состояния клапана
defineRule(“valve_state_change”, {
whenChanged: “fan_controller/valve_state”,
then: function (newValue) {
sendData(0x01, newValue); // Отправляем состояние клапана
}
});

// Периодическое чтение данных с устройства
setInterval(() => {
readData(0x00, (data) => {
dev[“fan_controller/fan_speed”] = data[0]; // Обновляем значение скорости вентилятора
});
readData(0x01, (data) => {
dev[“fan_controller/valve_state”] = data[0]; // Обновляем состояние клапана
});
}, 5000); // Опрос каждые 5 секунд

В продолжение темы- такая конструкция может работать?

То есть этот код я закидываю в wb-rules, и получаю виртуальное устройство?

Меня тут кто-нибудь читает? Алё!

Вы задаете вопросы в закрытой (решенной) теме - техподдержка (обычно они отвечают в рабочие дни в рабочее время) такие темы может не заметить.

Создание виртуальных устройств происходит вот так Примеры правил — Wiren Board
Для работы с протоколом modbus нет необходимости в дополнительных манипуляциях (коде) - этот протокол поддерживается драйверами контроллера “из коробки”.

Если у вас на шине RS-485 устройство с “нестандартным modbus`ом” или иным протоколом и вам необходимо посылать команды и принимать ответы (не modbus), то это можно делать вот так Примеры правил — Wiren Board

Также для своих (отсутствующих “в комплекте” шаблонов) устройств, вы можете написать свой шаблон - Как писать шаблоны для сторонних Modbus-устройств — Wiren Board

1 лайк

Спасибо за ответ!