Термостат BHT-6000 Series

Материал из Wiren Board
Версия от 19:39, 13 января 2021; A.Degtyarev (обсуждение | вклад) (Создал страницу)

Термостат BHT-6000 Series, белый

Работа по Modbus

Термостатом можно управлять по протоколу Modbus RTU. На физическом уровне он подключается через интерфейс RS-485.

Настраивать термостат можно с помощью утилиты modbus_client, использовать приложение для компьютера на ОС Windows или из веб-интерфейса контроллера Wiren Board.

В этой статье мы будем использовать утилиту modbus_client, а подключаться к контроллеру через SSH. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе Аргументы командной строки.

Подготовка к работе

Wbincludes:Modbus: Preparing for work

Настройка для работы с ПО

Представление BHT-6000 Series в веб-интерфейсе

Установка параметров подключения

Вы можете перед началом работы с термостатом назначить ему modbus-адрес, но параметры подключения изменить нельзя.

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

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


Шаблон устройства

ВНИМАНИЕ: шаблон для термостата BHT-6000 Series включен в поставку драйвера wb-mqtt-serial, начиная с версии 2.7.0. Текущую версию шаблона можно также скачать из нашего репозитория: config-bht-6000-series.json.

Выберите шаблон термостата в разделе «Serial Device Driver Configuration» веб-интерфейса:

  1. Откройте веб-интерфейс и перейдите ConfigsSerial Device Driver Configuration.
  2. Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 1.
  3. Нажмите на кнопку + Device и в поле Device N выберите BHT-6000 Series, где N — порядковый номер устройства.
  4. В поле Slave id укажите modbus-адрес термостата.
  5. Сохраните настройки нажатием на кнопку Save.

Теперь устройство будет доступно на вкладке Devices.

Вы можете изменить шаблон по своему усмотрению — смотрите описание шаблонов в статье Драйвер wb-mqtt-serial.


Изменение настроек термостата

Все настройки термостала выведены в веб-интерфейс, но вы можете изменять их и из командной строки. Для этого нужно записать требуемые значения в регистры термостата.

В примерах термостат у подключен к интерфейсу /dev/ttyRS485-1, имеет настройки интерфейса 9600/None/1/8 и доступен по адресу 2.

Общий алгоритм настройки

  1. Ищете адрес регистра и функцию записи.
  2. Смотрите возможные значения.
  3. Записываете в регистр значение, которое попадает в диапазон возможных.

Блокировка кнопок

Мы хотим заблокировать все физические кнопки на термостате:

  1. Состояние блокировки хранится в регистре Lock buttons с адресом 0x06. Функция записи — 0x06.
  2. Возможные значения: 0 — Unlock, 1 — Lock.
  3. Теперь запишите значение 1 в регистр Lock buttons:
    ~#  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!
    

Кнопки термостата заблокированы. Для разблокировки запишите в регистр Lock buttons значение 0 — Unlock.

Чтение и запись значений температуры

Значение температуры нужно конвертировать перед записью или после чтения.

Прочитаем значение текущей уставки из регистра Setting temperature, 0x04 — получим:

~#  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

В документации к термостату указан коэффициент конвертации — 0.1. Это значит, что при чтении мы должны умножить полученное значение на коэффициент, а при записи разделить.

Нами было считано значение 0x012с — это число 300, умножим его на коэффициент: 300 × 0.1 = 30 °С

Теперь запишем в регистр значение 12°C: 12 / 0.1 = 120:

~#  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!

Таблица modbus-регистров