Перейти к содержанию

Навигация

BHT-6000 Series: различия между версиями

 
(не показано 40 промежуточных версий 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"
|+Распиновка разъёма
!Номер клеммы !!Описание
|-
|AC24V_L
| +24 В
|-
|AC24V_N
|GND
|-
|Red
|A
|-
|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">
{{Wbincludes:Modbus: Preparing for work}}
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>


== Настройка для работы с ПО ==
{{Wbincludes:Modbus Aliens}}
[[Image: Devices View BHT-6000 Series.png |300px|thumb|right| Представление BHT-6000 Series в веб-интерфейсе]]


=== Установка параметров подключения ===
=== Параметры порта ===
Вы можете перед началом работы с термостатом назначить ему modbus-адрес, но параметры подключения изменить нельзя.
По умолчанию устройство имеет настройки:
* Baud rate — 9600 бит/с,  
* Parity — None,
* Data bits — 8,
* Stop bits — 1.


По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 9600 бит/с, Четность — Even, Бит — 1.
Производитель не предоставил возможности их изменять.


Так как у всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость 9600 бит/с, Четность — None, Бит — 2, то мы не сможем использовать термостат на одной линии с ними без перенастройки устройств Wiren Board.
=== Modbus-адрес ===
По умолчанию в термостате задан modbus-адрес 1,  


Изменить modbus-адрес можно из сервисного меню. Настройка делается нажатием кнопок на корпусе термостата:
# Выключите термостат нажатием на кнопку <code>ON/OFF</code>.
# Зажмите одновременно кнопки <code>M</code> и <code>Clock</code> на 5 секунд — термостат войдет в сервисный режим.
# Кратким нажатием на кнопку <code>M</code> выберите параметр <code>C</code>.
# Кнопками <code>вверх ↑</code> и <code>вниз ↓</code> установите новый адрес термостата.
# После установки адреса подождите 5 секунд, термостат применит новые настройки и выйдет из сервисного режима.
# Включите термостат нажатием на кнопку <code>ON/OFF</code>.


=== Шаблон устройства ===
Теперь вы можете подключиться к термостату по-новому modbus-адресу.
'''ВНИМАНИЕ:''' шаблон пока не включен в поставку [[Драйвер wb-mqtt-serial|wb-mqtt-serial]], поэтому вам нужно самостоятельно скопировать шаблон на контроллер в папку <code>/usr/share/wb-mqtt-serial/templates</code>.


Шаблон <code>config-bht-6000-series.json</code>:
=== Карта регистров ===
<syntaxhighlight lang="json">
Таблица регистров термостата BHT-6000GALN. Значения температуры при чтении нужно умножить на <code>0.1</code>, а при записи разделить.
{
"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>:
{|class="wikitable sortable" style="text-align:center;"
<syntaxhighlight lang="bash">
! Регистр/ адрес
service wb-mqtt-serial restart
! '''Тип'''
</syntaxhighlight>
! Чтение/ запись
! '''Формат'''
! Назначение
|-
| 0
| holding
| RW
| 0 ­- 1
| style="text-align:left;" | Power<br>0 — OFF, 1 — ON
|-
| 1
| holding
| R
| u16
| style="text-align:left;" | Temperature from internal sensor
|-
| 2
| holding
| RW
| 0 ­- 1
| style="text-align:left;" | Manual mode<br>0 — Auto, 1 — Manual
|-
| 3
| holding
| R
| 0 ­- 1
| style="text-align:left;" | Heating status<br>0 — Not heating, 1 — Heating
|-
| 4
| holding
| RW
| u16
| style="text-align:left;" | Setting temperature
|-
| 5
| holding
| RW
| u16
| style="text-align:left;" | Weekly program setting temperature
|-
| 6
| holding
| RW
| 0 ­- 1
| style="text-align:left;" | Lock buttons<br>0 — Unlock, 1 — Lock
|}


Теперь выберите шаблон термостата в разделе '''Serial Device Driver Configuration''' веб-интерфейса:
== Полезные ссылки ==
# Откройте веб-интерфейс и перейдите '''Configs''' → '''Serial Device Driver Configuration'''.
[https://www.manualslib.com/manual/1420786/Welquic-Bht-6000-Series.html Описание термостата и руководство по настройке]
# Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 1.
# Нажмите на кнопку '''+ Device''' и в поле '''Device N''' выберите '''BHT-6000 Series''', где N — порядковый номер устройства.
# В поле '''Slave id''' укажите modbus-адрес термостата.
# Сохраните настройки нажатием на кнопку '''Save'''.


Теперь устройство будет доступно на вкладке '''Devices'''.
{{Wbincludes:Device Page Footer}}
 
Вы можете изменить шаблон по своему усмотрению — смотрите описание шаблонов в статье [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Драйвер wb-mqtt-serial]].
 
== Изменение настроек термостата ==
Все настройки термостала выведены в веб-интерфейс, но вы можете изменять их и из командной строки. Для этого нужно записать требуемые значения в [[#Таблица modbus-регистров | регистры термостата]].
 
В примерах термостат у подключен к интерфейсу <code>/dev/ttyRS485-1</code>, имеет настройки интерфейса <code>9600/None/1/8</code> и доступен по адресу <code>2</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-регистров==