ZigBee: Команды
Эта статья является дополнением к основной статье о структуре MQTT-топиков HOMEd и описывает команды топика command для сервиса HOMEd ZigBee.
setPermitJoin
Эта команда управляет режимом сопряжения, то есть разрешает или запрещает новым устройствам добавляться в сеть.
Пример сообщения:
{
"action": "setPermitJoin",
"enabled": true
}
| Параметр | Описание |
|---|---|
enabled |
разрешение добавления новых устройств в сеть: true - можно, false - нельзя |
togglePermitJoin
Эта команда включает режим сопряжения, если он был выключен и наоборот.
Пример сообщения:
{
"action": "togglePermitJoin"
}
removeDevice
Команда для удаления устройства из базы данных, например, если устройство больше не нужно. После удаления устройство может быть повторно добавлено.
Пример сообщения:
{
"action": "removeDevice",
"device": "kitchenWindowSensor",
"force": false
}
| Параметр | Описание |
|---|---|
device |
адрес или имя устройства, которое нужно удалить |
force |
принудительное удаление: true - удалить без отправки запроса на выход из сети, false - сначала отправить запрос |
Параметр device является обязательным.
Если параметр force отсутствует в сообщении, перед удалением устройства из базы данных ему будет отправлен запрос на выход из сети.
setupDevice
Эта команда позволяет повторно произвести настройку устройства, как это делается при добавлении устройства в сеть.
Пример сообщения:
{
"action": "setupDevice",
"device": "hallDoorSensor",
"reportings": false
}
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
reportings |
восстановление параметров отправки отчетов по умолчанию: true - восстановить, false - оставить как есть |
Параметр device является обязательным.
Если параметр reportings отсутствует в сообщении, параметры отправки отчетов не будут изменены.
setupReporting
Эта команда позволяет вручную настроить параметры отправки отчетов конечной точки устройства.
Пример сообщения:
{
"action": "setupReporting",
"device": "kitchenThermometer",
"endpointId": 2,
"reporting": "temperature",
"minInterval": 15,
"maxInterval": 300,
"valueChange": 10
}
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
endpointId |
конечная точка целевого устройства |
reporting |
название нужного отчета конечной точки, как в библиотеке устройств |
minInterval |
минимальный интервал отправки отчета в секундах |
maxInterval |
максимальный интервал отправки отчета в секундах |
valueChange |
минимальное изменение значения атрибута, необходимое для отправки отчета |
Параметр device является обязательным.
Если параметр endpointId и/или reporting отсутствуют в сообщении, новые параметры будут применены ко всем конечным точкам и/или отчетам соответственно. В случае отсутствия остальных параметров, соответствующие им параметры не будут изменены.
bindDevice
Эта команда позволяет настроить биндинг между двумя устройствами или между устройством и группой.
Биндинг это функция ZigBee сети, позволяющая устройствам управлять другими устройствами или группами напрямую, минуя координатор. Например, можно настроить биндинг между выключателем и лампочкой и выключатель сможет управлять лампочкой, даже если координатор будет выключен или сервис остановлен.
Пример сообщения:
{
"action": "bindDevice",
"device": "roomSwitch",
"endpointId": 2,
"clusterId": 6,
"dstDevice": "roomLight",
"dstEndpointId": 1
}
{
"action": "bindDevice",
"device": "hallSwitch",
"endpointId": 1,
"clusterId": 8,
"groupId": 7
}
Общие параметры:
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
endpointId |
конечная точка целевого устройства (которое будет отправлять команды) |
clusterId |
идентификатор кластера, для которого осуществляется биндинг |
Параметры для биндинга между устройствами:
| Параметр | Описание |
|---|---|
dstDevice |
адрес или имя устройства, которое будет принимать команды |
dstEndpointId |
конечная точка устройства, которое будет принимать команды |
Параметры для биндинга между устройством и группой:
| Параметр | Описание |
|---|---|
groupId |
идентификатор группы, которая будет принимать команды |
Все параметры, кроме dstAddress и dstEndpointId, являются обязательными.
В случае, если параметр dstAddress отсутствует в сообщении, устройством, принимающим команды, будет назначен координатор. Если отсутствует параметр dstEndpointId, то конечной точкой устройства, принимающего команды, будет назначена конечная точка по умолчанию - 1.
unbindDevice
Эта команда позволяет удалить биндинг между двумя устройствами или между устройством и группой.
Пример сообщения:
{
"action": "unbindDevice",
"device": "roomSwitch",
"endpointId": 2,
"clusterId": 6,
"dstDevice": "hallLight",
"dstEndpointId": 1
}
{
"action": "unbindDevice",
"ieeeAddress": "hallSwitch",
"endpointId": 1,
"clusterId": 8,
"groupId": 7
}
Все параметры этой команды идентичны параметрам команды настройки биндинга.
addGroup
Команда для добавления конечной точки устройства в группу.
Группы это функция ZigBee сети, позволяющая управлять несколькими конечными точками разных устройств при помощи одиночных команд. Одна и та же конечная точка может одновременно находиться в нескольких группах.
Пример сообщения:
{
"action": "addGroup",
"device": "kitchenLight",
"endpointId": 2,
"groupId": 6
}
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
endpointId |
конечная точка целевого устройства, которую нужно добавить в группу |
groupId |
идентификатор группы |
Все параметры, кроме endpointId являются обязательными.
Если параметр endpointId отсутствует в сообщении, в группу будет добавлена конечная точка по умолчанию - 1.
removeGroup
Команда для удаления конечной точки устройства из группы. Пример сообщения:
{
"action": "removeGroup",
"device": "bathroomLight",
"endpointId": 2,
"groupId": 6
}
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
endpointId |
конечная точка целевого устройства, которую нужно удалить из группы |
groupId |
идентификатор группы |
Все параметры, кроме endpointId являются обязательными.
Если параметр endpointId отсутствует в сообщении, из группы будет удалена конечная точка по умолчанию - 1.
removeAllGroups
Команда для удаления конечной точки устройства из всех групп. Пример сообщения:
{
"action": "removeAllGroups",
"device": "hallLight",
"endpointId": 2
}
| Параметр | Описание |
|---|---|
device |
адрес или имя целевого устройства |
endpointId |
конечная точка целевого устройства, которую нужно удалить из группы |
Параметр device является обязательным.
Если параметры endpointId отсутствует в сообщении, из всех групп будет удалена конечная точка по умолчанию, то есть 1.
touchLinkScan
Эта команда позволяет определить адреса и каналы устройств, находящихся в непосредственной близости к координатору, при помощи технологии TouchLink, если координатор и устройства ее поддерживают.
Пример сообщения:
{
"action": "touchLinkScan"
}
К сожалению текущая реализация сервиса позволят увидеть результат сканирования только в логе, а выглядит это так:
...
2022.09.28 11:03:40.798 (inf) zigbee: TouchLink scan started...
2022.09.28 11:03:40.862 (inf) zigbee: TouchLink scan response received from device "84:2e:14:ff:fe:fb:ef:b5" at channel 11
2022.09.28 11:03:41.967 (inf) zigbee: TouchLink scan finished successfully
...
touchLinkReset
Эта команда позволяет осуществить сброс устройства, находящегося в непосредственной близости к координатору, к заводским настройкам при помощи техногогии TouchLink, если координатор и устройство ее поддерживают.
Пример сообщения:
{
"action": "touchLinkReset",
"ieeeAddress": "84:2e:14:ff:fe:fb:ef:b5",
"channel": 11
}
| Параметр | Описание |
|---|---|
ieeeAddress |
адрес целевого устройства |
channel |
номер канала ZigBee, который использует устройство |
Все поля являются обязательными.