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

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, который использует устройство

Все поля являются обязательными.