Думаю, они возникли в результате экспериментов с шаблонами и сохранились в MQTT. Проще всего будет удалить устройство из конфигурации, почистить mqtt-очередь для него, а потом создать заново
Создал заново. Редактируемый только один регистр - вкл/выкл
{
“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)
На данный момент смотрю, как управляется 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.
Может быть количество стоп-битов отличается?
Пробовал разное количество стопов. Везде количество ошибок заметно на глаз
Пробуйте 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!
Выглядит, конечно, странно.
Вижу два варианта:
- Либо лезть в линию осциллографом.
- Либо идти в техподдержку Turkov.
И я бы ещё точно считал из самого устройства настройки: скорость, чётность, стоп-биты.
Подключал отдельным кабелем - результат тот же. На этом порту rs485 у меня больше ничего нет.
Настройки на фото ниже.
Бит четности пробовал и 1 и два ставить.
Хм, интересно. Напишите про результаты, пожалуйста.
Ещё что вспомнил:
- По фото не очень понял: у вас для A и для B используется по одной жиле или по две? Правильнее по одной, и эти жилы должны быть свиты между собой.
- Для подключения по RS-485 нужно соединять не только A и B, но и GND модулей - это официальная рекомендация, которая не всегда критична, но может быть важна. У вас в Turkov на плате есть разъём GND?