Wie ZHA Zigbee Geräte manuell konfigurieren - SNZB-02_EFEKTA

Hallo zusammen,

ich habe ein Zigbee-Netzwerk über ZHA realisiert.

Nachdem alle Sensoren eingebunden waren, habe ich einen SNZB-02 Temperatur- & Luftfeuchtesensor mit einer alternativen Firmware geflashed: Custom Firmware for Sonoff SNZB-02 Zigbee Temperature and Humidity Sensor | Blakadder's Smarthome Shenanigans

Der Sensor, den ich danach neu paaren musste und der dabei den gleichen Namen und die gleichen Entitäten erhalten hat, hat danach fast unverändert funktioniert.
Der Plan war, irgendwann einmal den Sensoren über zigbee2mqtt zu testen, wozu ich aber noch nicht gekommen bin.

Nach der Umstellung des generellen Zigbee-Kanals (anderes Projekt) hatte ich ein paar Probleme und musste unter anderem diesen Sensor aus ZHA löschen, resetten und neu anlegen: Keine Aktualisierung nach ZHA Kanalwechsel von Sonoff-SNZB-02 - #11 von silberfuxx

Die Sensoren mit der originalen Firmware haben danach wie gehabt funktioniert, der Sensor mit geänderter Firmware zeigt mit nach dem paaren keine Temperatur- und Luftfeuchte mehr als Sensor an.

Nun hat sich ja an der Firmware nichts geändert und wir wissen, dass dieser Sensor, als er fälschlicher Weise noch als original Sonoff in ZHA eingebunden war mit allen Sensoren funktioniert hat. Somit sollte sich das Problem auch über den Home Assistant oder ZHA gelöst werden können.

Ich habe beispielsweise gelesen, dass man das Gerät über die configuration.yamlbearbeiten kann, aber ob das der richtige Weg ist, weiß ich auch nicht …

Vielen Dank für einen guten Tipp :slight_smile:

für den Sensor speziell kann ich dir nicht helfen.

Für den Quirk hab ich unter /config/ einen Ordner ‘custom_zha_quirks’ angelegt. Die configuration.yaml um

#ZHA Quirks
zha:
  custom_quirks_path: /config/custom_zha_quirks/

ergänzt und die quirk_xyz.py in den Ordner kopiert.

https://github.com/zigpy/zha-device-handlers/issues war für mich ein guter Tip, wo ich fündig wurde für meine Thermostatköpfe. Einfach mal nach der Gerätebezeichnung dort suchen, wie sie unter Geräteinfo von ZHA angezeigt wird. In meinem Fall führte der Suchbegriff “TZE200_6rdj8dzm” zum Erfolg.

LG
Mike

@Onkel_Mikke
Hab vielen Dank für Deine Antwort. Leider bin ich nicht fündig geworden. Generell scheint aber das Gerät erkannt zu werden.

Ich habe jetzt mal die Logdatei vom Entfernen aus dem Netzwerk bis zum Join aufgenommen (in diesem Beispiel ohne zuvor zu löschen) - vielleicht kann ja jemand hieraus was erkennen:

Device 0xe173 (00:12:4b:00:29:22:83:65) left the network
[0xE173](SNZB-02_EFEKTA): Update device availability -  device available: True - new availability: False - changed: True
[0xE173](SNZB-02_EFEKTA): Device availability changed and device became unavailable
Device 0xe173 (00:12:4b:00:29:22:83:65) joined the network
Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE173), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=0, source_route=None, extended_timeout=False, tsn=6, profile_id=0, cluster_id=19, data=Serialized[b'\x00s\xe1e\x83")\x00K\x12\x00\x80'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=132, rssi=-67)
Device 0xe173 (00:12:4b:00:29:22:83:65) joined the network
[0xE173](SNZB-02_EFEKTA): Update device availability -  device available: False - new availability: True - changed: True
[0xE173](SNZB-02_EFEKTA): Device availability changed and device became available, reinitializing channels
[0xe173:zdo] ZDO request ZDOCmd.Device_annce: [0xE173, 00:12:4b:00:29:22:83:65, 128]
[0xE173](SNZB-02_EFEKTA): started initialization
[0xE173:ZDO](SNZB-02_EFEKTA): 'async_initialize' stage succeeded
[0xE173:1:0x0000]: initializing channel: from_cache: False
[0xE173:1:0x0000]: finished channel initialization
[0xE173:1:0x0006]: initializing channel: from_cache: False
[0xE173:1:0x0006]: initializing cached channel attributes: ['start_up_on_off']
[0xE173:1:0x0006]: Reading attributes in chunks: ['start_up_on_off']
[0xE173:1:0x0006]: initializing uncached channel attributes: ['on_off'] - from cache[False]
[0xE173:1:0x0006]: Reading attributes in chunks: ['on_off']
[0xE173:1:0x0006] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=84, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Client_to_Server: 1>)
[0xE173:1:0x0006] Sending request: Read_Attributes(attribute_ids=[0])
[0xe173] Extending timeout for 0x54 request
[0xE173:1:0x0006]: initializing channel: from_cache: False
[0xE173:1:0x0006]: finished channel initialization
Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE173), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=0, source_route=None, extended_timeout=False, tsn=8, profile_id=0, cluster_id=54, data=Serialized[b'\x02\xb4\x01'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=132, rssi=-67)
[0xe173:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [180, <Bool.true: 1>]
Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE173), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=255, source_route=None, extended_timeout=False, tsn=10, profile_id=260, cluster_id=3, data=Serialized[b'\x11\x07\x01'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=132, rssi=-67)
Ignoring message (b'110701') on cluster 3: unknown endpoint or cluster id: 'No cluster ID 0x0003 on (00:12:4b:00:29:22:83:65, 1)'
Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE173), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=12, profile_id=260, cluster_id=6, data=Serialized[b'\x10T\x01\x00\x00\x86'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=132, rssi=-67)
[0xE173:1:0x0006] Received ZCL frame: b'\x10T\x01\x00\x00\x86'
[0xE173:1:0x0006] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Server_to_Client: 0>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=84, command_id=1, *direction=<Direction.Server_to_Client: 0>)
[0xE173:1:0x0006] Decoded ZCL frame: OnOff:Read_Attributes_rsp(status_records=[ReadAttributeRecord(attrid=0x0000, status=<Status.UNSUPPORTED_ATTRIBUTE: 134>)])
[0xE173:1:0x0006]: finished channel initialization
[0xE173:1:0x0000]: 'async_initialize' stage succeeded
[0xE173:1:0x0006]: 'async_initialize' stage succeeded
[0xE173:1:0x0006]: 'async_initialize' stage succeeded
[0xE173](SNZB-02_EFEKTA): power source: Battery or Unknown
[0xE173](SNZB-02_EFEKTA): completed initialization
[0xE173](SNZB-02_EFEKTA): Update device availability -  device available: True - new availability: True - changed: False
Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE173), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=255, source_route=None, extended_timeout=False, tsn=66, profile_id=260, cluster_id=3, data=Serialized[b'\x11"\x01'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=144, rssi=-64)
Ignoring message (b'112201') on cluster 3: unknown endpoint or cluster id: 'No cluster ID 0x0003 on (00:12:4b:00:29:22:83:65, 1)'

Und schaue ich mir unter Neukonfiguration das aktuelle Setup an, sind Temperatur und Luftfeuchte vorhanden

config

Nachtrag: Und so schau die Geräteinfo aus:

geräteinfo