Подключение Turkov Zenit500 к wb6

Думаю, они возникли в результате экспериментов с шаблонами и сохранились в MQTT. Проще всего будет удалить устройство из конфигурации, почистить mqtt-очередь для него, а потом создать заново

Создал заново. Редактируемый только один регистр - вкл/выкл

image

{
“path”: “/dev/ttyRS485-2”,
“devices”: [
{
“slave_id”: “8”,
“name”: “Turkov Zenit500”,
“channels”: [
{
“name”: “Power”,
“type”: “switch”,
“reg_type”: “holding”,
“address”: “1”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “temp_limit”,
“type”: “value”,
“reg_type”: “holding”,
“address”: “2”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “fan_mode”,
“type”: “value”,
“reg_type”: “holding”,
“address”: “3”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “fans_speed”,
“type”: “value”,
“reg_type”: “holding”,
“address”: “4”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “Supply_fan_speed”,
“type”: “value”,
“reg_type”: “holding_single”,
“address”: “5”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “Exhaust_fan_speed”,
“type”: “value”,
“reg_type”: “holding”,
“address”: “6”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “outdoor_temp”,
“type”: “temperature”,
“reg_type”: “holding_single”,
“address”: “0x101”,
“format”: “s16”,
“scale”: 10,
“offset”: 0
}
]
}
],
“baud_rate”: 9600,
“parity”: “N”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 20,
“enabled”: true
},

Добрый день!

А в чём сейчас вопрос?

Как сделать параметры редактируемыми?

Тип value - это readonly (https://github.com/contactless/homeui/blob/master/conventions.md).
Чтобы изменять значения, нужно делать тип range (пример https://wirenboard.com/wiki/index.php/Драйвер_wb-mqtt-serial:Примеры_написания_шаблонов#WB-MRGBW-D)

1 Симпатия

На данный момент смотрю, как управляется VAV. Эти регистры пока не настроены.

{
“path”: “/dev/ttyRS485-2”,
“devices”: [
{
“slave_id”: 8,
“name”: “Turkov Zenit500”,
“channels”: [
{
“name”: “Power”,
“type”: “switch”,
“reg_type”: “holding”,
“address”: 1,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “Heater temp”,
“type”: “range”,
“reg_type”: “holding_single”,
“address”: “2”,
“format”: “s16”,
“scale”: 1,
“offset”: 0,
“max”: 50
},
{
“name”: “Fan mode”,
“type”: “range”,
“reg_type”: “holding_single”,
“address”: “3”,
“format”: “s8”,
“scale”: 1,
“offset”: 0,
“max”: “4”
},
{
“name”: “Street temp (D1)”,
“type”: “temperature”,
“reg_type”: “input”,
“address”: 257,
“format”: “u16”,
“scale”: 0.1,
“offset”: 0
},
{
“name”: “Incoming air temp (D2)”,
“type”: “temperature”,
“reg_type”: “input”,
“address”: 258,
“format”: “s16”,
“scale”: 0.1,
“offset”: 0
},
{
“name”: “Outgoing air temp (D5)”,
“type”: “temperature”,
“reg_type”: “input”,
“address”: 261,
“format”: “s16”,
“scale”: 0.1,
“offset”: 0
},
{
“name”: “Filter dirty”,
“type”: “value”,
“reg_type”: “input”,
“address”: “262”,
“format”: “s16”,
“scale”: 1,
“offset”: 0,
“max”: “100”
},
{
“name”: “Error code”,
“type”: “value”,
“reg_type”: “input”,
“address”: “263”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “Incoming fan amperage”,
“type”: “value”,
“reg_type”: “input”,
“address”: “265”,
“format”: “s16”,
“scale”: 0.01,
“offset”: 0
},
{
“name”: “Outgoing fan amperage”,
“type”: “value”,
“reg_type”: “input”,
“address”: “266”,
“format”: “s16”,
“scale”: 0.01,
“offset”: 0
},
{
“name”: “Temp D7”,
“type”: “temperature”,
“reg_type”: “input”,
“address”: “267”,
“format”: “s16”,
“scale”: 0.1,
“offset”: 0
},
{
“name”: “Humidity D7”,
“type”: “rel_humidity”,
“reg_type”: “input”,
“address”: “268”,
“format”: “s16”,
“scale”: 0.1,
“offset”: 0
},
{
“name”: “Working mode”,
“type”: “value”,
“reg_type”: “input”,
“address”: “269”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “Fans speed”,
“type”: “range”,
“reg_type”: “holding”,
“address”: 4,
“format”: “u16”,
“scale”: 1,
“offset”: 0,
“max”: 100
},
{
“name”: “Set VAV”,
“type”: “value”,
“reg_type”: “holding”,
“address”: “7”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
},
{
“name”: “VAV pressure”,
“type”: “range”,
“reg_type”: “holding”,
“address”: “8”,
“format”: “s16”,
“scale”: 1,
“offset”: 0
}
]
}

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

Чётность, количество стоп-бит правильное?
Возможно, устройство не может быстро отвечать на запросы контроллера, попробуйте выставить guard_interval_us побольше: https://github.com/contactless/wb-mqtt-serial

Это с рекуператора

],
“baud_rate”: 19200,
“parity”: “E”,
“data_bits”: 8,
“stop_bits”: 2,
“poll_interval”: 20,
“enabled”: true
},

Это из файла настроек

Документация от производителя

Подключение автоматики к системам «Умный дом» производится по протоколу Modbus RTU (физический уровень RS485). Подключение осуществляется через пульт управления (клеммы 5 и 6).

Регистры Holding. Доступно чтение регистров (функциональный код 0x03), запись одного регистра (функциональный код 0х06), запись нескольких регистров (функциональный код 0x10)

Название регистра Адрес Примечание
Вкл/выкл 0x01 0 — выкл, 1 - вкл
Уставка по температуре 0x02 Допускаются значения от 0 до 50 градусов Цельсия при работе электрического нагревателя, от 16 до 50 при работе водяного нагревателя, от 15 до 50 в режиме кондиционирования.
Скорость вентилятора 0х03 1 — минимальная, 2 — средняя, 3 — максимальная, 4 режим авто
Скорость вентиляторов в процентах 0х04 Допускаются значения в диапазоне от 28 до 100
Скорость приточного вентилятора в процентах 0х05 Допускаются значения в диапазоне от 28 до 100
Скорость вытяжного вентилятора в процентах 0х06 Допускаются значения в диапазоне от 28 до 100
Уставка вав системы 0х07
Уставка давления в вытяжном канале 0х08
Скорость связи по Modbus 0x09 0 — 9600 бод (по умолчанию), 1- 19200, 2 — 38400, 3 — 57600, 4 — 115200.
Адрес устройства по Modbus 0x0A Допускаются адреса от 1 до 247. По умолчанию 1.
Настройки контроля четности и количества стоп-битов 0х0B 0 — без контроля четности и 1 стоп-бит (по умолчанию), 1 — контроль четности Even и 1 стоп-бит, 2 - контроль четности Odd и 1 стоп-бит, 3 — контроль четности Even и 2 стоп-бита, 4 - контроль четности Odd и 2 стоп-бита.

Регистры Input. Доступно только чтение (функциональный код 0х04). Сдвиг адресации 256, то есть к адресу регистра необходимо добавить 256.

Название регистра Адрес Примечание
Температура уличного воздуха (датчик D1) 0x01 Значение передается в виде целого числа без запятой, где 235 равно 23,5 градусов Цельсия.
Температура приточного воздуха (датчик D2) 0х02 См. примечание к регистру 0х01
Температура обратной воды водяного нагревателя (датчик D3) 0х03 См. примечание к регистру 0х01
Температура поверхности водяного нагревателя (датчик D4) 0х04 См. примечание к регистру 0х01
Температура вытяжного воздуха (датчик D5) 0х05 См. примечание к регистру 0х01
Уровень загрязненности фильтра в процентах 0х06
Код ошибки 0х07
Тип установки 0х08 0 — Capsule, 1 — I-Vent, 2 — Block, 3 — Zenit
Ток приточного вентилятора 0х09 Значение передается в формате числа без запятой, где 123 равно 1,23 ампера.
Ток вытяжного вентилятора 0х0А См. примечание к регистру 0х09
Температура с датчика D7 0x0B См. примечание к регистру 0х01
Влажность с датчика D7 0x0C
Текущий режим работы вентустановки 0x0D 0 — вентиляция, 1 — зимний режим (нагрев), 2 — летний режим (кондиционирование)
Индикация состояния режима (для летнего и зимнего режимов) 0x0E 0 — неактивен, 1 - активен
Комплектация установки 0x0F Установленный нулевой бит — электронагреватель, первый бит — водяной нагреватель, второй бит — кондиционер, третий бит — осушитель/увлажнитель
Режим работы вентиляторов в установке 0x10 0 — режим управления вентиляторами по Modbus, 1- ручной режим, 2 — автоматический режим, 3 — ручной и автоматический режимы.
Серийный номер (первая цифра) 0х12
Серийный номер (вторая цифра) 0х13
Серийный номер (третья цифра) 0х14
Серийный номер (четвертая цифра) 0х15
Серийный номер (пятая цифра) 0х16
Серийный номер (шестая цифра) 0х17
Серийный номер (седьмая цифра) 0х18
Серийный номер (восьмая цифра) 0х19
Серийный номер (девятая цифра) 0х1А

ПРИМЕЧАНИЕ: примеры посылок и ответов на них можно удалить из документации т. к. посылки и ответы соответствуют спецификации Modbus.

Может быть количество стоп-битов отличается?

Пробовал разное количество стопов. Везде количество ошибок заметно на глаз :frowning:

Пробуйте modbus_client использовать, чтобы удостовериться, что дело не в параметрах связи

Его и использую.
Ниже один из примеров:

root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
ERROR Connection timed out: select
<08><04><02><00><65><31>ERROR occured!
root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
ERROR Connection timed out: select
<95>ERROR occured!
root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
ERROR Connection timed out: select
<08><04><02><00>ERROR occured!
root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
ERROR Connection timed out: select
<08><04><02><00><65>ERROR occured!
root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
<08><03><02><00><64><65>
SUCCESS: read 1 of elements:
Data: 0x0064
root@wirenboard-AH4OLZNI:~# ^C
root@wirenboard-AH4OLZNI:~# modbus_client --debug -mrtu /dev/ttyRS485-2 -b9600 -peven -s1 -d8 -a8 -t3 -r4
Opening /dev/ttyRS485-2 at 9600 bauds (E, 8, 1)
[08][03][00][04][00][01][C5][52]
Waiting for a confirmation…
<08><04><02><00><34><64>
Received function not corresponding to the request (4 != 3)
ERROR occured!

Выглядит, конечно, странно.

Вижу два варианта:

  1. Либо лезть в линию осциллографом.
  2. Либо идти в техподдержку Turkov.

И я бы ещё точно считал из самого устройства настройки: скорость, чётность, стоп-биты.

Подключал отдельным кабелем - результат тот же. На этом порту rs485 у меня больше ничего нет.

Настройки на фото ниже.
Бит четности пробовал и 1 и два ставить.

Поменял failsafe bias config на disable и результат стал лучше. Тестирую.

Как оказалось лучше только через консоль.
в web-client все равно доступность плохая.

Хм, интересно. Напишите про результаты, пожалуйста.

Ещё что вспомнил:

  1. По фото не очень понял: у вас для A и для B используется по одной жиле или по две? Правильнее по одной, и эти жилы должны быть свиты между собой.
  2. Для подключения по RS-485 нужно соединять не только A и B, но и GND модулей - это официальная рекомендация, которая не всегда критична, но может быть важна. У вас в Turkov на плате есть разъём GND?