homed-service-zigbee icon indicating copy to clipboard operation
homed-service-zigbee copied to clipboard

add Linptech ES1ZZ(TY) initial support

Open pavelrazuvalau opened this issue 9 months ago • 0 comments

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

Только начинаю разбираться что к чему, поэтому в моих изменениях могут быть неточности.

Пробую добавить поддержку датчика присутствия Linptech Presence Sensor ES1 (ES1ZZ(TY)) Модель _TZ3218_awarhusb (встречается также _TZ3218_t9ynfz4x) https://www.aliexpress.com/item/1005006101306384.html

{
  "active": true,
  "cloud": true,
  "description": "Linptech ES1ZZ(TY) Human Presence Sensor",
  "discovery": true,
  "endpoints": [
    {
      "deviceId": 1026,
      "endpointId": 1,
      "inClusters": [
        0,
        3,
        4,
        5,
        57346,
        16384,
        61184,
        1280
      ],
      "outClusters": [
        10,
        25
      ],
      "profileId": 260
    }
  ],
  "ieeeAddress": "b0:c7:de:ff:fe:7e:1b:2c",
  "interviewFinished": true,
  "lastSeen": 1715448417,
  "linkQuality": 84,
  "logicalType": 1,
  "manufacturerCode": 4098,
  "manufacturerName": "_TZ3218_awarhusb",
  "modelName": "TS0225",
  "networkAddress": 55185,
  "powerSource": 1,
  "supported": true,
  "version": 70,
  "name": "b0:c7:de:ff:fe:7e:1b:2c"
}

Устройство поддерживается z2m https://www.zigbee2mqtt.io/devices/ES1ZZ(TY).html https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/src/devices/linptech.ts

Топик с обсуждением, так как поддержка появилась относительно недавно https://github.com/Koenkk/zigbee2mqtt/issues/18637

ID кластеров, атрибутов, типов данных, а также минимальные и максимальные значения настроек брал оттуда. Так как в z2m используется имена кластеров, то ID брал отсюда: https://github.com/Koenkk/zigbee-herdsman/blob/924c45c724c929002490b04beeb40d77ffff6ec4/src/zspec/zcl/definition/cluster.ts

Увы, некоторые функции работают некорректно.

Из того, что точно работает:

  • occupancy
  • illuminance
  • targetDistance
  • presenceKeepTime (добавил для себя в /usr/share/homed-common/expose.json) "presenceKeepTime": {"type": "sensor", "unit": "min", "icon": "mdi:timer"}

Из того, что не работает корректно:

  • fadingTime. устройство получает настройку, что видно по изменению occupancy спустя заданное время, но нет обратного ответа с состоянием, из-за чего всегда отображается unknown. Единственный атрибут из tuyaDataPoints
  • motionSensitivity и sensitivity. Motion detection sensitivity и Static detection sensitivity соответственно. После сброса устройства и подключения имеют значение 5, что соответствует максимальному (от 0 до 5). Если попробовать изменить настройки, то команда отправляется, и приходит ответ с тем же значением. Однако почему-то сразу же приходит состояние 0, поэтому невозможно настроить статическую чувствительность и чувствительность движения
2024.05.11 19:26:14.886 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" sensitivity action request finished successfully
2024.05.11 19:26:14.957 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe005" report received with type "0x20" and data "03" and transaction id 27
2024.05.11 19:26:15.307 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe005" report received with type "0x20" and data "03" and transaction id 70
2024.05.11 19:26:15.375 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe005" report received with type "0x20" and data "00" and transaction id 71
2024.05.11 19:26:16.277 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" motionSensitivity action request finished successfully
2024.05.11 19:26:16.348 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe004" report received with type "0x20" and data "03" and transaction id 31
2024.05.11 19:26:16.698 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe004" report received with type "0x20" and data "03" and transaction id 72
2024.05.11 19:26:16.767 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe004" report received with type "0x20" and data "00" and transaction id 73
  • motionDetectionDistance (добавил для себя в /usr/share/homed-common/expose.json) "motionDetectionDistance": {"type": "number", "unit": "m", "icon": "mdi:arrow-left-right"}, то же самое что и с чувствительностью, приходит максимальное изначальное состояние (600 см или 6м если конвертировать). после изменения настройки - сброс до нуля.
2024.05.11 19:26:17.847 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" motionDetectionDistance action request finished successfully

2024.05.11 19:26:17.925 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe00b" report received with type "0x21" and data "58:02" and transaction id 35
2024.05.11 19:26:18.508 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" endpoint "0x01" cluster "0xe002" attribute "0xe00b" report received with type "0x21" and data "00:00" and transaction id 75

Основной кластер: 0xe002

Лог файл: homed.log Предварительно почистил строчки, не связанные с данным устройством.

Координатор: Sonoff ZBDongle-P

[zigbee]
adapter=znp
port=/dev/ttyUSB0
baudrate=115200
panid=0x1011
channel=11
reset=soft
write=false

У меня только один координатор, поэтому проверять работу в z2m не стал, дабы не сбрасывать настройки и не перепривязывать устройства заново.

Было бы здорово, если поможете проверить конфигурацию, возможно я что-то упускаю. Если нужно больше логов или включить debug для port или adapter, прошу дать знать. Заранее огромное спасибо!

UPD: Проверил работу устройства в z2m. настройки устанавливаются как положено, и даже после подключения к homed они же и принимаются, но в самом homed их установить не получаются, сбрасываются в ноль

pavelrazuvalau avatar May 11 '24 17:05 pavelrazuvalau