|
|
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Термостат BAC-6000 Series}} | | {{DISPLAYTITLE: Термостат BAC-6000 Series}} |
| [[Image: BAC-6000 Series.png|300px|thumb|right| Термостат BAC-6000 Series, черный]] | | [[Image: BAC-6000 Series.png|300px|thumb|right| Термостат BAC-6000 Series, белый]] |
| == Работа по Modbus ==
| |
| Термостатом можно управлять по протоколу [[Протокол_Modbus|Modbus RTU]]. На физическом уровне он подключается через интерфейс [[RS-485]].
| |
|
| |
|
| Настраивать термостат можно с помощью утилиты [[Modbus-client|modbus_client]], использовать [[Working with WB devices without a controller|приложение для компьютера на ОС Windows]] или из веб-интерфейса контроллера Wiren Board.
| | == Представление в веб-интерфейсе == |
| | | [[Image: Devices View BAC-6000 Series.png |300px|thumb|right| Представление BAC-6000 Series в веб-интерфейсе]] |
| В этой статье мы будем использовать утилиту <code>modbus_client</code>, а подключаться к контроллеру через [[SSH]]. Синтаксис и параметры командной строки можно посмотреть на странице утилиты в разделе [[Modbus-client#Аргументы командной строки|Аргументы командной строки]].
| | [[Image: BAC-6000 Series, Connecting to the web interface.png |300px|thumb|right| Выбор шаблона и установка параметров подключения в WebUI 2.0]] |
|
| |
|
| == Подготовка к работе ==
| | Для отображения устройства в веб-интерфейсе контроллера Wiren Board вам нужно добавить новое serial-устройство и выбрать шаблон '''BAC-6000 Series'''. |
| {{Wbincludes:Modbus: Preparing for work}}
| |
|
| |
|
| == Изменение настроек термостата ==
| | Смотрите также: |
| Все настройки, доступные для изменения через RS-485 выведены в [[#Настройка для работы с ПО | веб-интерфейс]], но вы можете их изменять из командной строки с помощью утилиты <code>modbus_client</code>. Для этого нужно записать значения в [[#Таблица modbus-регистров | регистры термостата]]. Если вы никогда не использовали утилиту <code>modbus_client</code>, смотрите раздел [[#Подготовка к работе | Подготовка к работе]].
| | * [[RS-485:Configuration via Web Interface | Начальное конфигурирование устройств через веб-интерфейс]] |
| | * [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Примеры написания шаблонов]] |
|
| |
|
| В примерах термостат подключен к интерфейсу <code>/dev/ttyRS485-1</code>, имеет настройки интерфейса <code>9600/None/1/8</code> и доступен по адресу <code>2</code>.
| | {{Wbincludes:Modbus Aliens}} |
|
| |
|
| === Установка параметров подключения === | | === Параметры порта === |
| Вы можете перед началом работы с термостатом назначить ему modbus-адрес, но параметры подключения изменить нельзя.
| | По умолчанию устройство имеет настройки: |
| | * Baud rate — 9600 бит/с, |
| | * Parity — None, |
| | * Data bits — 8, |
| | * Stop bits — 1. |
|
| |
|
| По умолчанию в термостате заданы параметры: Адрес — 1, Скорость — 9600 бит/с, Четность — Even, Бит — 1.
| | Производитель не предоставил возможности их изменять. |
|
| |
|
| У всех устройств Wiren Board параметры интерфейса по умолчанию: Скорость — 9600 бит/с, Четность — None, Бит — 2. Поэтому для использования термостата на одной линии с ними, в устройствах Wiren Board нужно установить параметр <code>Бит = 1</code>.
| | === Modbus-адрес === |
| | По умолчанию в термостате задан modbus-адрес — 1, |
|
| |
|
| '''Modbus-адрес''' термостата устанавливается из сервисного меню и не может быть изменен через RS-485. Настройка делается нажатием кнопок на корпусе термостата:
| | Изменить modbus-адрес можно из сервисного меню. Настройка делается нажатием кнопок на корпусе термостата: |
| # Выключите термостат нажатием на кнопку <code>ON/OFF</code>. | | # Выключите термостат нажатием на кнопку <code>ON/OFF</code>. |
| # Зажмите одновременно кнопки <code>M</code> и <code>Fan</code> на 5 секунд — термостат войдет в сервисный режим. | | # Зажмите одновременно кнопки <code>M</code> и <code>Fan</code> на 5 секунд — термостат войдет в сервисный режим. |
Строка 33: |
Строка 36: |
| Теперь вы можете подключиться к термостату по-новому modbus-адресу. | | Теперь вы можете подключиться к термостату по-новому modbus-адресу. |
|
| |
|
| === Общий алгоритм настройки === | | === Карта регистров === |
| # Ищете адрес регистра и функцию записи.
| | Таблица регистров термостата BAC-6000ALN. Значения температуры при чтении нужно умножить на <code>0.5</code>, а при записи разделить. |
| # Смотрите возможные значения.
| |
| # Записываете в регистр значение, которое попадает в диапазон возможных.
| |
| | |
| === Блокировка кнопок ===
| |
|
| |
|
| Мы хотим заблокировать физические кнопки на термостате:
| | {|class="wikitable sortable" style="text-align:center;" |
| # Состояние блокировки хранится в регистре '''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 -r0x05 1
| |
| Data to write: 0x1
| |
| Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
| |
| [03][06][00][05][00][01][59][E9]
| |
| Waiting for a confirmation...
| |
| <03><06><00><05><00><01><59><E9>
| |
| SUCCESS: written 1 elements!
| |
| </syntaxhighlight>
| |
| | |
| Кнопки термостата заблокированы. Для разблокировки запишите в регистр '''Lock buttons''' значение 0 — Unlock.
| |
| | |
| ===Чтение и запись значений температуры===
| |
| Значение температуры нужно конвертировать перед записью или после чтения.
| |
| | |
| Прочитаем значение текущей уставки из регистра '''Set 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)
| |
| [03][03][00][04][00][01][C4][29]
| |
| Waiting for a confirmation...
| |
| <03><03><02><00><32><40><51>
| |
| SUCCESS: read 1 of elements:
| |
| Data: 0x0032
| |
| </syntaxhighlight>
| |
| | |
| В документации к термостату указан '''коэффициент конвертации — 0.5'''. Это значит, что при чтении мы должны умножить полученное значение на коэффициент, а при записи разделить.
| |
| | |
| Нами было считано значение <code>0x0032</code> — это число 50, умножим его на коэффициент: <code>50 × 0.5 = 25 °С</code>
| |
| | |
| Теперь запишем в регистр значение 12°C: <code>12 / 0.5 = 24</code>:
| |
| <syntaxhighlight lang="bash">
| |
| ~# modbus_client --debug -mrtu -pnone -s1 /dev/ttyRS485-1 -a2 -t0x06 -r0x04 24
| |
| Data to write: 0x18
| |
| Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 1)
| |
| [03][06][00][04][00][18][C9][E3]
| |
| Waiting for a confirmation...
| |
| <03><06><00><04><00><18><C9><E3>
| |
| SUCCESS: written 1 elements!
| |
| </syntaxhighlight>
| |
| | |
| == Настройка для работы с ПО ==
| |
| [[Image: Devices View BAC-6000 Series.png |300px|thumb|right| Представление BAC-6000 Series в веб-интерфейсе]]
| |
| | |
| Перед настройкой термостата в веб-интерфейсе, установите в нем [[#Установка параметров подключения | параметры подключения]].
| |
| | |
| === Шаблон устройства ===
| |
| '''ВНИМАНИЕ:''' шаблон пока не включен в поставку [[Драйвер wb-mqtt-serial|wb-mqtt-serial]], поэтому вам нужно самостоятельно сохранить шаблон в файл и загрузить на контроллер в папку <code>/usr/share/wb-mqtt-serial/templates</code>. | |
| | |
| Шаблон <code>config-bac-6000-series.json</code>:
| |
| <syntaxhighlight lang="json">
| |
| {
| |
| "device_type": "BAC-6000 Series",
| |
| "device": {
| |
| "name": "BAC-6000 Series",
| |
| "id": "bac-6000-series",
| |
| "channels": [
| |
| {
| |
| "name": "Lock buttons",
| |
| "reg_type": "holding",
| |
| "address": "0x05",
| |
| "type": "wo-switch",
| |
| "format": "s16"
| |
| },
| |
| {
| |
| "name": "Room temperature",
| |
| "reg_type": "holding",
| |
| "address": "0x03",
| |
| "type": "temperature",
| |
| "format": "s16",
| |
| "scale": 0.5
| |
| },
| |
| {
| |
| "name": "Fan Speed: 0 — Auto",
| |
| "reg_type": "holding",
| |
| "address": "0x01",
| |
| "type": "range",
| |
| "format": "s16",
| |
| "max": 3
| |
| },
| |
| {
| |
| "name": "Set Mode",
| |
| "reg_type": "holding",
| |
| "address": "0x02",
| |
| "type": "range",
| |
| "format": "s16",
| |
| "max": 2
| |
| },
| |
| {
| |
| "name": "Set temperature [10 … 30]",
| |
| "reg_type": "holding",
| |
| "address": "0x04",
| |
| "type": "range",
| |
| "format": "s16",
| |
| "scale": 0.5,
| |
| "max": 30
| |
| }
| |
| ]
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| После копирования шаблона на контроллер перезапустите службу <code>wb-mqtt-serial</code>:
| |
| <syntaxhighlight lang="bash">
| |
| service wb-mqtt-serial restart
| |
| </syntaxhighlight>
| |
| | |
| Теперь выберите шаблон термостата в разделе '''Serial Device Driver Configuration''' веб-интерфейса:
| |
| # Откройте веб-интерфейс и перейдите '''Configs''' → '''Serial Device Driver Configuration'''.
| |
| # Выберите один из двух интерфейсов связи и установите параметры интерфейса: Baud rate — 9600 бит/с, Parity — N, Data bits — 8, Stop bits — 1.
| |
| # Нажмите на кнопку '''+ Device''' и в поле '''Device N''' выберите '''BAC-6000 Series''', где N — порядковый номер устройства.
| |
| # В поле '''Slave id''' укажите modbus-адрес термостата.
| |
| # Сохраните настройки нажатием на кнопку '''Save'''.
| |
| | |
| Теперь устройство будет доступно на вкладке '''Devices'''.
| |
| | |
| Вы можете изменить шаблон по своему усмотрению — смотрите описание шаблонов в статье [[Драйвер wb-mqtt-serial:Примеры написания шаблонов | Драйвер wb-mqtt-serial]].
| |
| | |
| == Таблица modbus-регистров==
| |
| Таблица регистров термостата BAC-6000ALN.
| |
| | |
| {|class="wikitable sortable"
| |
| ! Назначение | | ! Назначение |
| ! Длина, байт
| |
| ! Адрес, Hex
| |
| ! Функция чтения
| |
| ! Функция записи
| |
| ! Возможные значения
| |
| |- | | |- |
| | Power | | | 0 |
| | 1 | | | holding |
| | 0x00 | | | RW |
| | 0x03 | | | 0x005a - 0x00a5 |
| | 0x06 | | | style="text-align:left;" | Power <br> 0x005a — OFF, 0x00a5 — ON |
| | 0x005a — OFF, 0x00a5 — ON | |
| |- | | |- |
| | Fan Speed
| |
| | 1 | | | 1 |
| | 0x01 | | | holding |
| | 0x03 | | | RW |
| | 0x06 | | | u16 |
| | 0 — Auto, 1 — Hign, 2 — Mid, 3 — Low | | | style="text-align:left;" | Fan Speed <br> 0 — Auto, 1 — Hign, 2 — Mid, 3 — Low |
| |- | | |- |
| | Set Mode | | | 2 |
| | 1 | | | holding |
| | 0x02 | | | RW |
| | 0x03 | | | 0 - 1 |
| | 0x06 | | | style="text-align:left;" | Set Mode <br> 0 — Cooling, 1 — Heating, 2 — Ventilation |
| | 0 — Cooling, 1 — Heating, 2 — Ventilation | |
| |- | | |- |
| | Room temperature | | | 3 |
| | 1 | | | holding |
| | 0x03 | | | R |
| | 0x03 | | | 0 - 1 |
| | - | | | style="text-align:left;" | Room temperature |
| | - | |
| |- | | |- |
| | Set temperature | | | 4 |
| | 1 | | | holding |
| | 0x04 | | | RW |
| | 0x03 | | | u16 |
| | 0x06 | | | style="text-align:left;" | Set temperature<br>10…30 |
| | 10…30 | |
| |- | | |- |
| | Lock buttons | | | 5 |
| | 1 | | | holding |
| | 0x05 | | | RW |
| | 0x03 | | | 0 - 1 |
| | 0x06 | | | style="text-align:left;" | Lock buttons<br>0 — Unlock, 1 — Lock |
| | 0 — Unlock, 1 — Lock | |
| |} | | |} |
|
| |
|
| == Документация == | | == Ссылки на документацию == |
| [https://aliexpress.ru/item/1005001730852715.html Описание термостата на Aliexpress] | | [https://aliexpress.ru/item/1005001730852715.html Описание термостата на Aliexpress] |