Файл конфигурации
Конфигурация HOMEd ZigBee хранится в файле /etc/homed/homed-zigbee.conf. Пример файла конфигурации:
[log]
enabled=true
file=/var/log/homed.log
[mqtt]
host=localhost
port=1883
username=zigbee
password=secret
prefix=homed
instance=
names=false
debounce=true
[homeassistant]
enabled=true
prefix=homeassistant
status=homeassistant/status
[default]
discovery=true
cloud=true
[device]
database=/opt/homed-zigbee/database.json
properties=/opt/homed-zigbee/properties.json
options=/opt/homed-zigbee/options.json
external=/opt/homed-zigbee/external
library=/usr/share/homed-zigbee
join=disabled
[gpio]
status=71
blink=83
boot=109
reset=23
[zigbee]
adapter=znp
port=/dev/ttyUSB0
baudrate=115200
panid=0x1010
channel=11
reset=flow
write=false
[security]
key=0x000102030405060708090a0b0c0d0e0f
[debug]
port=false
adapter=false
zigbee=false
При изменении содержимого файла конфигурации сервис автоматически перезапускается.
Параметры
[log]
| параметр | описание |
|---|---|
| enabled | включение/выключение записи логов в файл |
| file | путь к файлу лога |
[mqtt]
| параметр | описание |
|---|---|
| host | адрес брокера |
| port | порт брокера |
| username | имя пользователя для авторизации на брокере (может быть пустым) |
| password | пароль для авторизации на брокере (может быть пустым) |
| prefix | корневой топик |
| instance | уникальное имя сервиса (может быть пустым), подробности ниже |
| names | использование имен устройств вместо адресов в топиках homed/fd/zigbee
|
| debounce | отключение повторной публикации данных в случае, если они не изменились |
[homeassistant]
| параметр | описание |
|---|---|
| enabled | включение/выключение функции Home Assistant MQTT Discovery |
| prefix | корневой топик для Home Assistant MQTT Discovery |
| status | топик для отслеживания состояния Home Assistant |
[default]
| параметр | описание |
|---|---|
| discovery | состояние функции Home Assistant MQTT Discovery для новых устройств по умолчанию |
| cloud | состояние функции HOMEd Cloud для новых устройств по умолчанию |
[device]
| параметр | описание |
|---|---|
| library | путь к папке библиотеки устройств |
| database | путь к файлу базы данных |
| properties | путь к файлу, в котором будут храниться аеткуальные (последние известные) состояния устройств |
| options | путь к файлу настройки индивидуальных опций устройств |
| external | путь к папке пользовательских расширений библиотеки устройств |
| join | состояние режима сопряжения после запуска координатора, возможные значения: previous, enabled, disabled
|
[gpio]
| параметр | описание |
|---|---|
| status | порт светодиода для индикации режима добавления устройств |
| blink | порт светодиода для индикации активности в сети |
| boot | порт, к которому подключен вывод управления загрузчиком координатора |
| reset | порт, к которому подключен вывод управления перезагрузкой координатора |
[zigbee]
| параметр | описание |
|---|---|
| adapter | тип адаптера, возможные значения: ezsp, zboss, zigate, znp
|
| port | последовательный порт, к которому подключен координатор или адрес для сетевого подключения |
| baudrate | скорость последовательного порта (при локальном подключении) |
| panid | идентификатор сети (в шестнадцатеричом формате, 2 байта) |
| channel | номер канала ZigBee |
| power | мощность передачи для адаптеров ezsp и znp в dBm |
| reset | способ управления перезагрузкой координатора, возможные значения: gpio, flow, soft
|
| write | разрешение/запрет перезаписывать конфигурацию координатора, подробности ниже |
[security]
| параметр | описание |
|---|---|
| key | ключ сети (в шестнадцатеричом формате, 16 байт) |
[debug]
| параметр | описание |
|---|---|
| port | вывод в лог дампов данных последовательного порта |
| adapter | вывод в лог дампов обмена данными с координатором |
| zigbee | вывод в лог дампов входящих данных от устройств |
GPIO
Управление GPIO осуществляется через драйвер /sys/class/gpio.
В качестве значения для каждого параметра в секции [gpio] может быть указан либо номер порта, либо путь к файлу управления портом, например: /sys/class/gpio/gpio32/value. Если используется путь к файлу управления, порт должен быть заведомо инициализирован.
Параметры status и blink могут содержать одинаковое значение, в этом случае для обоих функций будет использоваться один и тот же светодиод.
В случае, когда управление GPIO не поддерживается системой или просто не требуется, нужно либо указать значение -1 для ненужного порта, либо удалить из файла конфигурации соответствующие строки.
Сетевое подключение
HOMEd ZigBee поддерживает работу с координатором по сети, через TCP сокет, например, через ser2net в режиме RAW.
Для использования этой функции в качестве значения параметра port в секции [zigbee] нужно указать строку в формате tcp://address:port, например:
[zigbee]
...
port=tcp://192.168.1.23:4832
...
Кластеризация
HOMEd ZigBee позволяет использовать несколько "инстансов" сервиса внутри одного корневого топика, это нужно, например, для централизованного управления всеми "инстансами" из одного веб-интерфейса или для организации перекрестных автоматизаций между "инстансами".
Конфигурация координатора
При каждом запуске HOMEd ZigBee проверяет настройки координатора и сравнивает их с настройками, заданными в файле конфигурации. В случае, если настройки НЕ совпадают, дальнейшее поведение сервиса определяется параметром write в секции [zigbee]. Если параметр настроен как true, сервис перезапишет настройки координатора и продолжит запуск, в противном случае в логе появится запись о несовпадающем параметре и работа сервиса будет приостановлена.
Не рекомендую оставлять параметр write настроенным как true, поскольку это может привести к случайному изменению настроек координатора и необходимости повторного добавления всех устройств в сеть.
Примеры конфигурации
HOMEd Gateway Nano
[log]
enabled=false
file=/var/log/homed.log
[mqtt]
host=localhost
port=1883
username=
password=
prefix=homed
names=false
debounce=true
[homeassistant]
enabled=true
prefix=homeassistant
status=homeassistant/status
[default]
discovery=true
cloud=true
[device]
database=/opt/homed-zigbee/database.json
properties=/opt/homed-zigbee/properties.json
options=/opt/homed-zigbee/options.json
external=/opt/homed-zigbee/external
library=/usr/share/homed-zigbee
[gpio]
status=/sys/class/leds/amber:act/brightness
blink=/sys/class/leds/blue:zb/brightness
boot=/sys/class/gpio/zb:boot/value
reset=/sys/class/gpio/zb:reset/value
join=disabled
[zigbee]
adapter=znp
port=/dev/ttyS0
baudrate=115200
panid=0x1010
channel=11
reset=gpio
write=true
[security]
key=0x000102030405060708090a0b0c0d0e0f
[debug]
port=false
adapter=false
zigbee=false
HOMEd Gateway Pico
[log]
enabled=false
file=/var/log/homed.log
[mqtt]
host=localhost
port=1883
username=
password=
prefix=homed
names=false
debounce=true
[homeassistant]
enabled=true
prefix=homeassistant
status=homeassistant/status
[default]
discovery=true
cloud=true
[device]
database=/opt/homed-zigbee/database.json
properties=/opt/homed-zigbee/properties.json
options=/opt/homed-zigbee/options.json
external=/opt/homed-zigbee/external
library=/usr/share/homed-zigbee
join=disabled
[gpio]
status=/sys/class/leds/amber:status/brightness
[zigbee]
adapter=znp
port=/dev/ttyS2
baudrate=115200
panid=0x1010
channel=11
reset=soft
write=true
[security]
key=0x000102030405060708090a0b0c0d0e0f
[debug]
port=false
adapter=false
zigbee=false
Perenio PEACG01
[log]
enabled=false
file=/var/log/homed.log
[mqtt]
host=localhost
port=1883
username=
password=
prefix=homed
names=true
debounce=true
[homeassistant]
enabled=true
prefix=homeassistant
status=homeassistant/status
[default]
discovery=true
cloud=true
[device]
database=/opt/homed-zigbee/database.json
properties=/opt/homed-zigbee/properties.json
options=/opt/homed-zigbee/options.json
external=/opt/homed-zigbee/external
library=/usr/share/homed-zigbee
join=disabled
[gpio]
status=/sys/class/leds/white:power/brightness
blink=/sys/class/leds/white:wlan/brightness
reset=/sys/class/gpio/zigbee:reset/value
[zigbee]
adapter=ezsp
port=/dev/ttyUSB0
baudrate=115200
panid=0x1010
channel=11
reset=gpio
write=true
[security]
key=0x000102030405060708090a0b0c0d0e0f
[debug]
port=false
adapter=false
zigbee=false
Xiaomi DGNWG05LM
[log]
enabled=false
file=/var/log/homed.log
[mqtt]
host=localhost
port=1883
username=
password=
prefix=homed
names=false
debounce=true
[homeassistant]
enabled=true
prefix=homeassistant
status=homeassistant/status
[default]
discovery=true
cloud=true
[device]
database=/opt/homed-zigbee/database.json
properties=/opt/homed-zigbee/properties.json
options=/opt/homed-zigbee/options.json
external=/opt/homed-zigbee/external
library=/usr/share/homed-zigbee
join=disabled
[gpio]
boot=40
reset=41
[zigbee]
adapter=zigate
port=/dev/ttymxc1
baudrate=115200
panid=0x1010
channel=11
reset=gpio
write=true
[security]
key=0x000102030405060708090a0b0c0d0e0f
[debug]
port=false
adapter=false
zigbee=false
Что дальше?
После настройки HOMEd ZigBee можно приступать к добавлению устройств в сеть, при помощи веб-интерфейса или вручную.