u236 / homed-service-zigbee

Your brand new bridge between ZigBee network and MQTT broker
https://wiki.homed.dev/page/ZigBee
GNU General Public License v3.0
39 stars 25 forks source link

add Linptech ES1ZZ(TY) initial support #167

Closed pavelrazuvalau closed 1 month ago

pavelrazuvalau commented 4 months ago

Данный 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

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

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

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

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](https://github.com/u236/homed-service-zigbee/files/15283757/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 их установить не получаются, сбрасываются в ноль

На всякий случай лог установки sensitivity с включенным debug для port и adapter

2024.05.19 10:22:06.333 (inf) zigbee: --> "0x2401" "65:41:01:01:02:e0:04:20:0f:07:10:00:02:05:e0:20:03" 2024.05.19 10:22:06.334 (inf) zigbee: Serial data sent: "fe:11:24:01:65:41:01:01:02:e0:04:20:0f:07:10:00:02:05:e0:20:03:0a" 2024.05.19 10:22:06.370 (inf) zigbee: Serial data received: "fe:01:64:01:00:64:fe:03:44:80:00:01:04:c2" 2024.05.19 10:22:06.371 (inf) zigbee: Packet received: "fe:01:64:01:00:64" 2024.05.19 10:22:06.371 (inf) zigbee: Packet received: "fe:03:44:80:00:01:04:c2" 2024.05.19 10:22:06.371 (inf) zigbee: <-- "0x6401" "00" 2024.05.19 10:22:06.372 (inf) zigbee: <-- "0x4480" "00:01:04" 2024.05.19 10:22:06.372 (inf) zigbee: Device "b0:c7:de:ff:fe:7e:1b:2c" sensitivity action request finished successfully 2024.05.19 10:22:06.373 (inf) zigbee: --> "0x2401" "65:41:01:01:02:e0:05:20:0f:05:10:05:00:05:e0" 2024.05.19 10:22:06.373 (inf) zigbee: Serial data sent: "fe:0f:24:01:65:41:01:01:02:e0:05:20:0f:05:10:05:00:05:e0:33" 2024.05.19 10:22:06.410 (inf) zigbee: Serial data received: "fe:18:44:81:00:00:02:e0:65:41:01:01:00:a0:00:fb:d0:21:00:00:04:18:00:04:00:65:41:1d:90:fe:01:64:01:00:64:fe:03:44:80:00:01:05:c3" 2024.05.19 10:22:06.410 (inf) zigbee: Packet received: "fe:18:44:81:00:00:02:e0:65:41:01:01:00:a0:00:fb:d0:21:00:00:04:18:00:04:00:65:41:1d:90" 2024.05.19 10:22:06.411 (inf) zigbee: Packet received: "fe:01:64:01:00:64" 2024.05.19 10:22:06.411 (inf) zigbee: Packet received: "fe:03:44:80:00:01:05:c3" 2024.05.19 10:22:06.411 (inf) zigbee: <-- "0x4481" "00:00:02:e0:65:41:01:01:00:a0:00:fb:d0:21:00:00:04:18:00:04:00:65:41:1d" 2024.05.19 10:22:06.412 (inf) zigbee: <-- "0x6401" "00" 2024.05.19 10:22:06.412 (inf) zigbee: <-- "0x4480" "00:01:05" 2024.05.19 10:22:06.433 (inf) zigbee: Serial data received: "fe:1c:44:81:00:00:02:e0:65:41:01:01:00:a0:00:2c:da:21:00:00:08:18:05:01:05:e0:00:20:03:65:41:1d:83" 2024.05.19 10:22:06.434 (inf) zigbee: Packet received: "fe:1c:44:81:00:00:02:e0:65:41:01:01:00:a0:00:2c:da:21:00:00:08:18:05:01:05:e0:00:20:03:65:41:1d:83" 2024.05.19 10:22:06.434 (inf) zigbee: <-- "0x4481" "00:00:02:e0:65:41:01:01:00:a0:00:2c:da:21:00:00:08:18:05:01:05:e0:00:20:03:65:41:1d" 2024.05.19 10:22:06.434 (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 5 2024.05.19 10:22:06.790 (inf) zigbee: Serial data received: "fe:1b:44:81:00:00:02:e0:65:41:01:01:00:9c:00:28:33:22:00:00:07:08:23:0a:05:e0:20:03:65:41:1d:64" 2024.05.19 10:22:06.790 (inf) zigbee: Packet received: "fe:1b:44:81:00:00:02:e0:65:41:01:01:00:9c:00:28:33:22:00:00:07:08:23:0a:05:e0:20:03:65:41:1d:64" 2024.05.19 10:22:06.791 (inf) zigbee: <-- "0x4481" "00:00:02:e0:65:41:01:01:00:9c:00:28:33:22:00:00:07:08:23:0a:05:e0:20:03:65:41:1d" 2024.05.19 10:22:06.791 (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 35 2024.05.19 10:22:06.792 (inf) zigbee: --> "0x2401" "65:41:01:01:02:e0:06:20:0f:05:18:23:0b:0a:00" 2024.05.19 10:22:06.792 (inf) zigbee: Serial data sent: "fe:0f:24:01:65:41:01:01:02:e0:06:20:0f:05:18:23:0b:0a:00:fa" 2024.05.19 10:22:06.829 (inf) zigbee: Serial data received: "fe:01:64:01:00:64:fe:03:44:80:00:01:06:c0" 2024.05.19 10:22:06.829 (inf) zigbee: Packet received: "fe:01:64:01:00:64" 2024.05.19 10:22:06.829 (inf) zigbee: Packet received: "fe:03:44:80:00:01:06:c0" 2024.05.19 10:22:06.830 (inf) zigbee: <-- "0x6401" "00" 2024.05.19 10:22:06.830 (inf) zigbee: <-- "0x4480" "00:01:06" 2024.05.19 10:22:06.858 (inf) zigbee: Serial data received: "fe:1b:44:81:00:00:02:e0:65:41:01:01:00:a0:00:a9:43:22:00:00:07:08:24:0a:05:e0:20:00:65:41:1d:ad" 2024.05.19 10:22:06.858 (inf) zigbee: Packet received: "fe:1b:44:81:00:00:02:e0:65:41:01:01:00:a0:00:a9:43:22:00:00:07:08:24:0a:05:e0:20:00:65:41:1d:ad" 2024.05.19 10:22:06.859 (inf) zigbee: <-- "0x4481" "00:00:02:e0:65:41:01:01:00:a0:00:a9:43:22:00:00:07:08:24:0a:05:e0:20:00:65:41:1d" 2024.05.19 10:22:06.859 (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 36 2024.05.19 10:22:06.860 (inf) zigbee: --> "0x2401" "65:41:01:01:02:e0:07:20:0f:05:18:24:0b:0a:00" 2024.05.19 10:22:06.861 (inf) zigbee: Serial data sent: "fe:0f:24:01:65:41:01:01:02:e0:07:20:0f:05:18:24:0b:0a:00:fc" 2024.05.19 10:22:06.897 (inf) zigbee: Serial data received: "fe:01:64:01:00:64:fe:03:44:80:00:01:07:c1" 2024.05.19 10:22:06.897 (inf) zigbee: Packet received: "fe:01:64:01:00:64" 2024.05.19 10:22:06.897 (inf) zigbee: Packet received: "fe:03:44:80:00:01:07:c1" 2024.05.19 10:22:06.898 (inf) zigbee: <-- "0x6401" "00" 2024.05.19 10:22:06.899 (inf) zigbee: <-- "0x4480" "00:01:07"

u236 commented 3 months ago

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

u236 commented 3 months ago

a magic request во время интервью нормально проходит? обычно вот такие глюки со сбросом значений бывают из-за него, точнее из-за его отсутствия

pavelrazuvalau commented 3 months ago

судя по логам magic request проходит

2024.05.11 19:24:58.878 (inf) zigbee:    Device "b0:c7:de:ff:fe:7e:1b:2c" magic request finished successfully

это из лог файла, что приаттачил.

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

u236 commented 3 months ago

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

ну, если есть лишний датчик - присылай, разберусь, кроме этого могу только одно предложить - посниффать трафик з2м и сравнить со своим (собственно это я буду делать, если у меня будет датчик)

pavelrazuvalau commented 3 months ago

спасибо! попробую для начала самостоятельно просниффить. знаний у меня конечно ноль, но попытаться стоит.

если же ни к чему не приду, то отправлю. такого же датчика в наличии у меня нет, но я бы заказал на ваш адрес. все же интересно докопаться до истины и понять, в чем же все-таки дело :)

кстати, датчик довольно хороший оказался, и стоит дешевле Акары. сейчас он у меня в z2m трудится.

по сути девайс совмещает в себе датчик присутствия и датчик движения, поэтому в моем сценарии со светом в ванной работает отлично. знаю, что некоторые датчики присутствия срабатывают с задержкой, поэтому в пару к нему еще берут датчик движения.

u236 commented 1 month ago

не удалось доломать устройство?

pavelrazuvalau commented 1 month ago

@u236 увы, нет. руки все никак не дойдут, и у меня нет лишнего донгла и времени этим заняться. думаю что можно закрыть этот ПР, чтобы не висел. в случае чего открою новый