|
|
(не показаны 34 промежуточные версии 3 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Термостат BHT-6000 Series}} | | {{DISPLAYTITLE: Термостат BHT-6000 Series}} |
| [[Image: BHT-6000 Series.png|300px|thumb|right| Термостат BHT-6000 Series, белый]] | | [[Image: BHT-6000 Series.png|300px|thumb|right| Термостат BHT-6000 Series, белый]] |
| == Работа по Modbus ==
| |
| Термостатом можно управлять по протоколу [[Протокол_Modbus|Modbus RTU]]. На физическом уровне он подключается через интерфейс [[RS-485]].
| |
|
| |
|
| Настраивать термостат можно с помощью утилиты [[Modbus-client|modbus_client]], использовать [[Working with WB devices without a controller|приложение для компьютера на ОС Windows]] или из веб-интерфейса контроллера Wiren Board.
| | == Подключение к контроллеру == |
| | Подключите устройство к шине [[RS-485]] с соблюдением распиновки. |
|
| |
|
| В этой статье мы будем использовать утилиту <code>modbus_client</code>, а подключаться к контроллеру через [[SSH]]. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе [[Modbus-client#Аргументы командной строки|Аргументы командной строки]]. | | {| class="wikitable noclear" |
| | | |+Распиновка разъёма |
| == Подготовка к работе ==
| | !Номер клеммы !!Описание |
| {{Wbincludes:Modbus: Preparing for work}}
| | |- |
| | | |AC24V_L |
| == Настройка для работы с ПО ==
| | | +24 В |
| [[Image: Devices View BHT-6000 Series.png |300px|thumb|right| Представление BHT-6000 Series в веб-интерфейсе]]
| | |- |
| | | |AC24V_N |
| === Установка параметров подключения === | | |GND |
| Вы можете перед началом работы с термостатом назначить ему modbus-адрес, но параметры подключения изменить нельзя.
| | |- |
| | | |Red |
| По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 9600 бит/с, Четность — Even, Бит — 1.
| | |A |
| | | |- |
| Так как у всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость — 9600 бит/с, Четность — None, Бит — 2, то мы не сможем использовать термостат на одной линии с ними без перенастройки устройств Wiren Board.
| | |White |
| | |B |
| | |} |
| | == Представление в веб-интерфейсе == |
| | === Выбор шаблона === |
| | {{SupportedSinceRelease |
| | | release= wb-2110 |
| | | deb= wb-mqtt-serial |
| | | version= 2.28.1 |
| | }}{{WebUIAddDevice |
| | | template=BHT-6000 Series |
| | }} |
|
| |
|
| === Шаблон устройства === | | <gallery mode="traditional" widths ="340px" heights="200px"> |
| '''ВНИМАНИЕ:''' шаблон пока не включен в поставку [[Драйвер wb-mqtt-serial|wb-mqtt-serial]], поэтому вам нужно самостоятельно скопировать шаблон на контроллер в папку <code>/usr/share/wb-mqtt-serial/templates</code>.
| | Image: Devices View BHT-6000 Series.png| Представление BHT-6000 Series в веб-интерфейсе контроллера Wiren Board |
| | Image: BHT-6000 Series, Connecting to the web interface.png| Выбор шаблона и установка параметров подключения в WebUI 2.0 |
| | </gallery> |
|
| |
|
| Шаблон <code>config-bht-6000-series.json</code>:
| | {{Wbincludes:Modbus Aliens}} |
| <syntaxhighlight lang="json">
| |
| {
| |
| "device_type": "BHT-6000 Series",
| |
| "device": {
| |
| "name": "BHT-6000 Series",
| |
| "id": "bht-6000-series",
| |
| "channels": [
| |
| {
| |
| "name": "Power",
| |
| "reg_type": "holding",
| |
| "address": "0x00",
| |
| "type": "switch",
| |
| "format": "s16"
| |
| },
| |
| {
| |
| "name": "Lock buttons",
| |
| "reg_type": "holding",
| |
| "address": "0x06",
| |
| "type": "wo-switch",
| |
| "format": "s16"
| |
| },
| |
| {
| |
| "name": "Temperature for internal sensor",
| |
| "reg_type": "holding",
| |
| "address": "0x01",
| |
| "type": "temperature",
| |
| "format": "s16",
| |
| "scale": 0.1
| |
| },
| |
| {
| |
| "name": "Weekly program setting temperature",
| |
| "reg_type": "holding",
| |
| "address": "0x05",
| |
| "type": "temperature",
| |
| "format": "s16",
| |
| "scale": 0.1
| |
| },
| |
| {
| |
| "name": "Heating status",
| |
| "reg_type": "holding",
| |
| "address": "0x03",
| |
| "type": "switch",
| |
| "format": "s16",
| |
| "readonly": true
| |
| },
| |
| {
| |
| "name": "Manual mode",
| |
| "reg_type": "holding",
| |
| "address": "0x02",
| |
| "type": "switch",
| |
| "format": "s16"
| |
| },
| |
| {
| |
| "name": "Setting temperature",
| |
| "reg_type": "holding",
| |
| "address": "0x04",
| |
| "type": "range",
| |
| "format": "s16",
| |
| "scale": 0.1,
| |
| "max": 35
| |
| }
| |
| ]
| |
| }
| |
| } | |
| </syntaxhighlight>
| |
|
| |
|
| После копирования шаблона на контроллер перезапустите службу <code>wb-mqtt-serial</code>:
| | === Параметры порта === |
| <syntaxhighlight lang="bash">
| | По умолчанию устройство имеет настройки: |
| service wb-mqtt-serial restart
| | * Baud rate — 9600 бит/с, |
| </syntaxhighlight>
| | * Parity — None, |
| | * Data bits — 8, |
| | * Stop bits — 1. |
|
| |
|
| Теперь выберите шаблон термостата в разделе '''Serial Device Driver Configuration''' веб-интерфейса:
| | Производитель не предоставил возможности их изменять. |
| # Откройте веб-интерфейс и перейдите '''Configs''' → '''Serial Device Driver Configuration'''.
| |
| # Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 1.
| |
| # Нажмите на кнопку '''+ Device''' и в поле '''Device N''' выберите '''BHT-6000 Series''', где N — порядковый номер устройства.
| |
| # В поле '''Slave id''' укажите modbus-адрес термостата.
| |
| # Сохраните настройки нажатием на кнопку '''Save'''.
| |
|
| |
|
| Теперь устройство будет доступно на вкладке '''Devices'''.
| | === Modbus-адрес === |
| | По умолчанию в термостате задан modbus-адрес — 1, |
|
| |
|
| Вы можете изменить шаблон по своему усмотрению — смотрите описание шаблонов в статье [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Драйвер wb-mqtt-serial]].
| | Изменить modbus-адрес можно из сервисного меню. Настройка делается нажатием кнопок на корпусе термостата: |
| | |
| == Изменение настроек термостата ==
| |
| Все настройки, доступные для изменения через RS-485 выведены в веб-интерфейс, но вы можете изменять их и из командной строки. Для этого нужно записать требуемые значения в [[#Таблица modbus-регистров | регистры термостата]].
| |
| | |
| В примерах термостат подключен к интерфейсу <code>/dev/ttyRS485-1</code>, имеет настройки интерфейса <code>9600/None/1/8</code> и доступен по адресу <code>2</code>.
| |
| | |
| === Установка modbus-адреса ===
| |
| Modbus-адрес термостата устанавливается из сервисного меню и не может быть изменен через RS-485:
| |
| # Выключите термостат нажатием на кнопку <code>ON/OFF</code>. | | # Выключите термостат нажатием на кнопку <code>ON/OFF</code>. |
| # Зажмите одновременно кнопки <code>M</code> и <code>Clock</code> на 5 секунд — термостат войдет в сервисный режим. | | # Зажмите одновременно кнопки <code>M</code> и <code>Clock</code> на 5 секунд — термостат войдет в сервисный режим. |
Строка 123: |
Строка 60: |
| Теперь вы можете подключиться к термостату по-новому modbus-адресу. | | Теперь вы можете подключиться к термостату по-новому modbus-адресу. |
|
| |
|
| === Общий алгоритм настройки === | | === Карта регистров === |
| # Ищете адрес регистра и функцию записи.
| | Таблица регистров термостата BHT-6000GALN. Значения температуры при чтении нужно умножить на <code>0.1</code>, а при записи разделить. |
| # Смотрите возможные значения.
| |
| # Записываете в регистр значение, которое попадает в диапазон возможных.
| |
| | |
| === Блокировка кнопок ===
| |
| | |
| Мы хотим заблокировать все физические кнопки на термостате:
| |
| # Состояние блокировки хранится в регистре '''Lock buttons''' с адресом <code>0x06</code>. Функция записи — <code>0x06</code>.
| |
| # Возможные значения: 0 — Unlock, 1 — Lock.
| |
| # Теперь запишите значение '''1''' в регистр '''Lock buttons''':
| |
| #:<syntaxhighlight lang="bash">
| |
| ~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x06 -r0x06 1
| |
| Data to write: 0x1
| |
| Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
| |
| [02][06][00][06][00][01][A8][38]
| |
| Waiting for a confirmation...
| |
| <02><06><00><06><00><01><A8><38>
| |
| SUCCESS: written 1 elements!
| |
| </syntaxhighlight>
| |
| | |
| Кнопки термостата заблокированы. Для разблокировки запишите в регистр '''Lock buttons''' значение 0 — Unlock.
| |
| | |
| ===Чтение и запись значений температуры===
| |
| Значение температуры нужно конвертировать перед записью или после чтения.
| |
| | |
| Прочитаем значение текущей уставки из регистра '''Setting temperature''', 0x04 — получим:
| |
| <syntaxhighlight lang="bash">
| |
| ~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x03 -r0x04
| |
| Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
| |
| [02][03][00][04][00][01][C5][F8]
| |
| Waiting for a confirmation...
| |
| <02><03><02><01><2C><FC><09>
| |
| SUCCESS: read 1 of elements:
| |
| Data: 0x012c
| |
| </syntaxhighlight>
| |
| | |
| В документации к термостату указан '''коэффициент конвертации — 0.1'''. Это значит, что при чтении мы должны умножить полученное значение на коэффициент, а при записи разделить.
| |
| | |
| Нами было считано значение <code>0x012с</code> — это число 300, умножим его на коэффициент: <code>300 × 0.1 = 30 °С</code>
| |
| | |
| Теперь запишем в регистр значение 12°C: <code>12 / 0.1 = 120</code>:
| |
| <syntaxhighlight lang="bash">
| |
| ~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x06 -r0x04 120
| |
| Data to write: 0x78
| |
| Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
| |
| [02][06][00][04][00][78][C8][1A]
| |
| Waiting for a confirmation...
| |
| <02><06><00><04><00><78><C8><1A>
| |
| SUCCESS: written 1 elements!
| |
| </syntaxhighlight>
| |
|
| |
|
| == Таблица modbus-регистров==
| | {|class="wikitable sortable" style="text-align:center;" |
| {|class="wikitable sortable" | | ! Регистр/ адрес |
| | ! '''Тип''' |
| | ! Чтение/ запись |
| | ! '''Формат''' |
| ! Назначение | | ! Назначение |
| ! Длина, байт
| |
| ! Адрес, Hex
| |
| ! Функция чтения
| |
| ! Функция записи
| |
| ! Возможные значения
| |
| |- | | |- |
| | Power | | | 0 |
| | 1 | | | holding |
| | 0x00 | | | RW |
| | 0x03 | | | 0 - 1 |
| | 0x06 | | | style="text-align:left;" | Power<br>0 — OFF, 1 — ON |
| | 0 — OFF, 1 — ON | |
| |- | | |- |
| | Temperature for internal sensor
| |
| | 1 | | | 1 |
| | 0x01 | | | holding |
| | 0x03 | | | R |
| | 0x06 | | | u16 |
| | 5…45 | | | style="text-align:left;" | Temperature from internal sensor |
| |- | | |- |
| | Manual mode | | | 2 |
| | 1 | | | holding |
| | 0x02 | | | RW |
| | 0x03 | | | 0 - 1 |
| | 0x06 | | | style="text-align:left;" | Manual mode<br>0 — Auto, 1 — Manual |
| | 0 — Auto, 1 — Manual | |
| |- | | |- |
| | Heating status | | | 3 |
| | 1 | | | holding |
| | 0x03 | | | R |
| | 0x03 | | | 0 - 1 |
| | - | | | style="text-align:left;" | Heating status<br>0 — Not heating, 1 — Heating |
| | 0 — Not heating, 1 — Heating | |
| |- | | |- |
| | Setting temperature | | | 4 |
| | 1 | | | holding |
| | 0x04 | | | RW |
| | 0x03 | | | u16 |
| | 0x06 | | | style="text-align:left;" | Setting temperature |
| | 5…45 | |
| |- | | |- |
| | Weekly program setting temperature | | | 5 |
| | 1 | | | holding |
| | 0x05 | | | RW |
| | 0x03 | | | u16 |
| | 0x06 | | | style="text-align:left;" | Weekly program setting temperature |
| | 5…45 | |
| |- | | |- |
| | Lock buttons | | | 6 |
| | 1 | | | holding |
| | 0x06 | | | RW |
| | 0x03 | | | 0 - 1 |
| | 0x06 | | | style="text-align:left;" | Lock buttons<br>0 — Unlock, 1 — Lock |
| | 0 — Unlock, 1 — Lock | |
| |} | | |} |
|
| |
|
| == Документация == | | == Полезные ссылки == |
| [https://www.manualslib.com/manual/1420786/Welquic-Bht-6000-Series.html Описание термостата и руководство по настройке] | | [https://www.manualslib.com/manual/1420786/Welquic-Bht-6000-Series.html Описание термостата и руководство по настройке] |
| | |
| | {{Wbincludes:Device Page Footer}} |