Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Device Support Request] Silvercrest SAPZ A2 (TS011F par _TZ3000_ynmowqk2 ) #2708

Open
jacme31 opened this issue Nov 6, 2023 · 18 comments
Open
Labels
Tuya Request/PR regarding a Tuya device

Comments

@jacme31
Copy link

jacme31 commented Nov 6, 2023

Problem description

I try to pair a LIDL Device (Silvercrest SAPZ A2 : a new version sold in France with power consumption measuremenst of the SAPZ A1 which already works well with ZHA) .
During the pairing ZHA loads the quirk "zhaquirks.tuya.ts011f_plug.Plug" and everything seems to works, but the device stays in pairing mode, it disconnect/ reconnects multiple times before disconnecting defintevly.

Solution description

A well connected ZHA device ...

Screenshots/Video

Screenshots/Video

[
image
]

Device signature

Device signature
[{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x010a",
      "input_clusters": [
        "0x0000",
        "0x0003",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0702",
        "0x0b04",
        "0xe000",
        "0xe001"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZ3000_ynmowqk2",
  "model": "TS011F",
  "class": "zhaquirks.tuya.ts011f_plug.Plug"
}]


</details>


### Diagnostic information

<details><summary>Diagnostic information</summary>

```json
[{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.11.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/Paris",
    "os_name": "Linux",
    "os_version": "6.1.21-v8",
    "supervisor": "2023.10.1",
    "host_os": "Home Assistant OS 11.1",
    "docker_version": "24.0.6",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "signal_ecogaz": {
      "version": "0.1.0",
      "requirements": [
        "Async-OAuthlib==0.0.9"
      ]
    },
    "waste_collection_schedule": {
      "version": "1.43.0",
      "requirements": [
        "icalendar",
        "recurring_ical_events",
        "icalevents",
        "bs4",
        "lxml"
      ]
    },
    "rte_ecowatt": {
      "version": "0.6.3",
      "requirements": [
        "Async-OAuthlib==0.0.9"
      ]
    },
    "ha_strava": {
      "version": "3.2.28",
      "requirements": [
        "aiohttp>=3.6.1",
        "voluptuous>=0.11.7"
      ]
    },
    "pollens": {
      "version": "2023.06.01",
      "requirements": []
    },
    "metar": {
      "version": "2021.07.1",
      "requirements": [
        "metar"
      ]
    },
    "zha_toolkit": {
      "version": "v1.1.4",
      "requirements": [
        "pytz"
      ]
    },
    "myEnedis": {
      "version": "2.3.0",
      "requirements": [
        "packaging>=20.8"
      ]
    },
    "garmin_connect": {
      "version": "0.2.17",
      "requirements": [
        "garminconnect==0.2.3",
        "tzlocal"
      ]
    },
    "garbage_collection": {
      "version": "4.10.2",
      "requirements": [
        "python-dateutil>=2.8.2"
      ]
    },
    "scheduler": {
      "version": "v0.0.0",
      "requirements": []
    },
    "dreame_vacuum": {
      "version": "v1.0.1",
      "requirements": [
        "pillow",
        "numpy",
        "pybase64",
        "requests",
        "pycryptodome",
        "python-miio",
        "py-mini-racer",
        "tzlocal"
      ]
    },
    "resmed_myair": {
      "version": "0.1.11",
      "requirements": [
        "beautifulsoup4",
        "PyJWT"
      ]
    },
    "pyscript": {
      "version": "1.5.0",
      "requirements": [
        "croniter==1.3.8",
        "watchdog==2.3.1"
      ]
    },
    "holidays": {
      "version": "1.9.6",
      "requirements": [
        "python-dateutil>=2.8.2",
        "holidays>=0.14.2"
      ]
    },
    "hacs": {
      "version": "1.33.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp",
      "universal_silabs_flasher"
    ],
    "requirements": [
      "bellows==0.36.8",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.106",
      "zigpy-deconz==0.21.1",
      "zigpy==0.59.0",
      "zigpy-xbee==0.19.0",
      "zigpy-zigate==0.11.0",
      "zigpy-znp==0.11.6",
      "universal-silabs-flasher==0.0.14",
      "pyserial-asyncio-fast==0.11"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_uzg-01._tcp.local.",
        "name": "uzg-01*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 20544,
    "manufacturer": "_TZ3000_ynmowqk2",
    "model": "TS011F",
    "name": "_TZ3000_ynmowqk2 TS011F",
    "quirk_applied": true,
    "quirk_class": "zhaquirks.tuya.ts011f_plug.Plug",
    "quirk_id": "tuya.plug_on_off_attributes",
    "manufacturer_code": 4417,
    "power_source": "Mains",
    "lqi": 180,
    "rssi": -55,
    "last_seen": "2023-11-06T19:28:56",
    "available": false,
    "device_type": "Router",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x010a",
          "input_clusters": [
            "0x0000",
            "0x0003",
            "0x0004",
            "0x0005",
            "0x0006",
            "0x0702",
            "0x0b04",
            "0xe000",
            "0xe001"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        }
      },
      "manufacturer": "_TZ3000_ynmowqk2",
      "model": "TS011F"
    },
    "active_coordinator": false,
    "entities": [
      {
        "entity_id": "button.tz3000_ynmowqk2_ts011f_identifier",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "select.tz3000_ynmowqk2_ts011f_etat_de_mise_sous_tension",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "select.tz3000_ynmowqk2_ts011f_backlight_mode",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "sensor.tz3000_ynmowqk2_ts011f_courant",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "sensor.tz3000_ynmowqk2_ts011f_tension",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "sensor.tz3000_ynmowqk2_ts011f_puissance",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "sensor.tz3000_ynmowqk2_ts011f_summation_delivered",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "switch.tz3000_ynmowqk2_ts011f_commutateur",
        "name": "_TZ3000_ynmowqk2 TS011F"
      },
      {
        "entity_id": "switch.tz3000_ynmowqk2_ts011f_securite_enfants",
        "name": "_TZ3000_ynmowqk2 TS011F"
      }
    ],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "ON_OFF_PLUG_IN_UNIT"
      }
    ],
    "user_given_name": null,
    "device_reg_id": "b8806e3f5272d48c7aad1684c454b29c",
    "area_id": "cellier",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "ON_OFF_PLUG_IN_UNIT",
          "id": 266
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0001": {
                "attribute_name": "app_version",
                "value": 69
              },
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "_TZ3000_ynmowqk2"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "TS011F"
              },
              "0x0007": {
                "attribute_name": "power_source",
                "value": 1
              },
              "0xfffe": {
                "attribute_name": "reporting_status",
                "value": 0
              },
              "0x0000": {
                "attribute_name": "zcl_version",
                "value": 3
              }
            },
            "unsupported_attributes": {}
          },
          "0x0003": {
            "endpoint_attribute": "identify",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0006": {
            "endpoint_attribute": "on_off",
            "attributes": {
              "0x8001": {
                "attribute_name": "backlight_mode",
                "value": 1
              },
              "0x8000": {
                "attribute_name": "child_lock",
                "value": 0
              },
              "0x4002": {
                "attribute_name": "off_wait_time",
                "value": 0
              },
              "0x0000": {
                "attribute_name": "on_off",
                "value": 1
              },
              "0x4001": {
                "attribute_name": "on_time",
                "value": 0
              },
              "0x8002": {
                "attribute_name": "power_on_state",
                "value": 2
              }
            },
            "unsupported_attributes": {
              "0x4003": {
                "attribute_name": "start_up_on_off"
              }
            }
          },
          "0x0702": {
            "endpoint_attribute": "smartenergy_metering",
            "attributes": {
              "0x0000": {
                "attribute_name": "current_summ_delivered",
                "value": 0
              },
              "0x0302": {
                "attribute_name": "divisor",
                "value": 100
              },
              "0x0306": {
                "attribute_name": "metering_device_type",
                "value": 0
              },
              "0x0301": {
                "attribute_name": "multiplier",
                "value": 1
              },
              "0x0200": {
                "attribute_name": "status",
                "value": 0
              },
              "0x0303": {
                "attribute_name": "summation_formatting",
                "value": 0
              },
              "0x0300": {
                "attribute_name": "unit_of_measure",
                "value": 0
              }
            },
            "unsupported_attributes": {
              "0x0400": {
                "attribute_name": "instantaneous_demand"
              },
              "0x0100": {
                "attribute_name": "current_tier1_summ_delivered"
              },
              "0x0102": {
                "attribute_name": "current_tier2_summ_delivered"
              },
              "0x0104": {
                "attribute_name": "current_tier3_summ_delivered"
              },
              "0x0304": {
                "attribute_name": "demand_formatting"
              },
              "0x0106": {
                "attribute_name": "current_tier4_summ_delivered"
              },
              "0x0108": {
                "attribute_name": "current_tier5_summ_delivered"
              },
              "0x010a": {
                "attribute_name": "current_tier6_summ_delivered"
              }
            }
          },
          "0x0b04": {
            "endpoint_attribute": "electrical_measurement",
            "attributes": {
              "0x0603": {
                "attribute_name": "ac_current_divisor",
                "value": 1000
              },
              "0x0602": {
                "attribute_name": "ac_current_multiplier",
                "value": 1
              },
              "0x050b": {
                "attribute_name": "active_power",
                "value": 0
              },
              "0x0508": {
                "attribute_name": "rms_current",
                "value": 0
              },
              "0x0505": {
                "attribute_name": "rms_voltage",
                "value": 235
              }
            },
            "unsupported_attributes": {
              "0x0300": {
                "attribute_name": "ac_frequency"
              },
              "0x0601": {
                "attribute_name": "ac_voltage_divisor"
              },
              "0x0302": {
                "attribute_name": "ac_frequency_max"
              },
              "0x0600": {
                "attribute_name": "ac_voltage_multiplier"
              },
              "0x0604": {
                "attribute_name": "ac_power_multiplier"
              },
              "0x0605": {
                "attribute_name": "ac_power_divisor"
              },
              "0x0401": {
                "attribute_name": "ac_frequency_divisor"
              },
              "0x0507": {
                "attribute_name": "rms_voltage_max"
              },
              "0x0400": {
                "attribute_name": "ac_frequency_multiplier"
              },
              "0x050a": {
                "attribute_name": "rms_current_max"
              },
              "0x0000": {
                "attribute_name": "measurement_type"
              },
              "0x050d": {
                "attribute_name": "active_power_max"
              },
              "0x050f": {
                "attribute_name": "apparent_power"
              },
              "0x0510": {
                "attribute_name": "power_factor"
              },
              "0x0402": {
                "attribute_name": "power_multiplier"
              },
              "0x0403": {
                "attribute_name": "power_divisor"
              }
            }
          },
          "0xe000": {
            "endpoint_attribute": "tuya_manufacturer_specific_57344",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0xe001": {
            "endpoint_attribute": "tuya_external_switch_type",
            "attributes": {
              "0xd030": {
                "attribute_name": "external_switch_type",
                "value": 0
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}]

Logs

Logs
[ 
2023-11-06 17:40:48.340 DEBUG (MainThread) [zigpy.application] Device is initialized <Device model='TS011F' manuf='_TZ3000_ynmowqk2' nwk=0x9327 ieee=a4:c1:38:8a:59:c8:0e:a6 is_initialized=True>
2023-11-06 17:40:48.341 DEBUG (MainThread) [zigpy.quirks.registry] Checking quirks for _TZ3000_ynmowqk2 TS011F (a4:c1:38:8a:59:c8:0e:a6)
2023-11-06 17:40:48.341 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_switch.Tuya_1G_Switch'>
2023-11-06 17:40:48.341 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
2023-11-06 17:40:48.341 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_switch.Tuya_2G_Switch'>
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2, 242} {1, 242}
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.lidl.ts011f_plug.Lidl_Plug_3AC_4USB'>
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_2AC_var05'>
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2, 242} {1, 242}
2023-11-06 17:40:48.342 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_2AC_var03'>
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2} {1, 242}
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_v3'>
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Fail because device_type mismatch on at least one endpoint
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_v2'>
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1} {1, 242}
2023-11-06 17:40:48.343 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_4AC_2USB_Metering'>
2023-11-06 17:40:48.344 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {242, 1, 2, 3} {1, 242}
2023-11-06 17:40:48.344 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_4AC_2USB_cfnprab5'>
2023-11-06 17:40:48.344 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2, 3, 4, 5, 242} {1, 242}
2023-11-06 17:40:48.344 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_TZ3210_1AC'>
2023-11-06 17:40:48.344 DEBUG (MainThread) [zigpy.quirks.registry] Fail because input cluster mismatch on at least one endpoint
2023-11-06 17:40:48.345 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_TZ3210_2AC'>
2023-11-06 17:40:48.345 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2, 242} {1, 242}
2023-11-06 17:40:48.345 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_4AC_2USB'>
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {1, 2, 3, 4, 5, 242} {1, 242}
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_3AC_4USB'>
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {242, 1, 2, 3} {1, 242}
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug_1AC'>
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Fail because endpoint list mismatch: {242, 11} {1, 242}
2023-11-06 17:40:48.348 DEBUG (MainThread) [zigpy.quirks.registry] Considering <class 'zhaquirks.tuya.ts011f_plug.Plug'>
2023-11-06 17:40:48.349 DEBUG (MainThread) [zigpy.quirks.registry] Found custom device replacement for a4:c1:38:8a:59:c8:0e:a6: <class 'zhaquirks.tuya.ts011f_plug.Plug'>
2023-11-06 17:40:48.371 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:8a:59:c8:0e:a6, 1, 0, 4, '_TZ3000_ynmowqk2', datetime.datetime(2023, 11, 6, 16, 40, 48, 339603, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed
2023-11-06 17:40:48.372 DEBUG (MainThread) [zigpy.zcl] [0x9327:1:0x0006] Executing spell on Tuya device a4:c1:38:8a:59:c8:0e:a6
2023-11-06 17:40:48.373 DEBUG (MainThread) [zigpy.zcl] [0x9327:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=113, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>)
2023-11-06 17:40:48.374 DEBUG (MainThread) [zigpy.zcl] [0x9327:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4, 0, 1, 5, 7, 65534])
2023-11-06 17:40:48.389 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (a4:c1:38:8a:59:c8:0e:a6, 1, 0, 5, 'TS011F', datetime.datetime(2023, 11, 6, 16, 40, 48, 339707, tzinfo=datetime.timezone.utc)) params: FOREIGN KEY constraint failed
....
...
ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=129, command_id=7, *direction=<Direction.Client_to_Server: 1>)
2023-11-06 17:40:49.020 DEBUG (MainThread) [zigpy.zcl] [0x9327:1:0x0702] Decoded ZCL frame: TuyaZBMeteringCluster:Configure_Reporting_rsp(status_records=[ConfigureReportingResponseRecord(status=<Status.UNSUPPORTED_ATTRIBUTE: 134>, direction=<ReportingDirection.SendReports: 0>, attrid=258), ConfigureReportingResponseRecord(status=<Status.UNSUPPORTED_ATTRIBUTE: 134>, direction=<ReportingDirection.SendReports: 0>, attrid=260), ConfigureReportingResponseRecord(status=<Status.UNSUPPORTED_ATTRIBUTE: 134>, direction=<ReportingDirection.SendReports: 0>, attrid=262)])




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=119, command_id=<GeneralCommand.Default_Response: 11>, *direction=<Direction.Client_to_Server: 1>)
2023-11-06 17:41:00.883 DEBUG (MainThread) [zigpy.zcl] [0x9327:1:0x0000] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
2023-11-06 17:41:03.947 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(timestamp=datetime.datetime(2023, 11, 6, 16, 41, 3, 947821, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x9327), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=210, profile_id=0, cluster_id=2, data=Serialized[b'%\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=184, rssi=-54)
2023-11-06 17:41:03.949 DEBUG (MainThread) [zigpy.zdo] [0x9327:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
2023-11-06 17:41:03.949 DEBUG (MainThread) [zigpy.zdo] [0x9327:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000])
2023-11-06 17:41:08.942 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:08.959 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:08.968 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:08.985 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:08.992 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:08.999 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:09.006 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:09.019 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:09.026 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network
2023-11-06 17:41:09.034 INFO (MainThread) [zigpy.application] Device 0x9327 (a4:c1:38:8a:59:c8:0e:a6) left the network


]

Custom quirk

Custom quirk
[Paste your custom quirk here]

Additional information

No response

@TheJulianJES TheJulianJES added the Tuya Request/PR regarding a Tuya device label Nov 9, 2023
@mdeweerd
Copy link
Contributor

mdeweerd commented Nov 11, 2023

I just got several of these plugs too - same behavior.

For reference: HA forum discussion .

It indicates that this works with Z2M where it is declared in lidl.js .

I tested the Tuya Magic Spell - not working better.

@mdeweerd
Copy link
Contributor

Here are some decodings of relevant packets from a sniffer log.

_TZ3000_ynmowqk2.zip

It's the device that is requesting to leave the network.

@MattWestb
Copy link
Contributor

MattWestb commented Nov 11, 2023

I have only fast looking and the device is getting the network key OK and then the coordinator is requesting and getting the Node Descriptor Request, OK (R22 device) and the device is requesting the same and is getting R22 so shall being OK.
Then the device shall requesting updating the TC-Link key (R19 and higher is supporting it) but its not doing it so its policy is it must updating the TC-Link key => Leaving.

Must looking deeper of the flags and comparing with other device sniffs that is working OK.

PS Its one TELink choped devices so can being buggy.

@MattWestb
Copy link
Contributor

By the way is the Ti coordinator running on updated firmware (2023) ?

@mdeweerd
Copy link
Contributor

mdeweerd commented Nov 11, 2023

@MattWestb Thanks for checking!

It's not a TI coordinator for me - it's an EZSP.

I opened a topic to see if anybody has the way to update the EZSP:
https://community.home-assistant.io/t/how-bellows-zigbee-repairs-nv3-interface-not-available-in-this-firmware-please-upgrade/635319 .

I've seen and add-on that seems to help with that, but not much of a procedure.

@MattWestb
Copy link
Contributor

MattWestb commented Nov 11, 2023

Im very sorry but its only 2 frames with key and both looks the same only network key and the sender is 0x000= and its .. . .

Frame 83: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) on interface unknown, id 0
IEEE 802.15.4 Data, Dst: 0x0d6a, Src: 0x0000, Bad FCS
ZigBee Network Layer Data, Dst: 0x0d6a, Src: 0x0000
    Frame Control Field: 0x0008, Frame Type: Data, Discover Route: Suppress Data
    Destination: 0x0d6a
    Source: 0x0000
    Radius: 30
    Sequence Number: 239
    [Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)]
    [Origin: 4]
ZigBee Application Support Layer Command
    Frame Control Field: Command (0x21)
    Counter: 206
    ZigBee Security Header
        Security Control Field: 0x30, Key Id: Key-Transport Key, Extended Nonce
        Frame Counter: 552963
        Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)
        Message Integrity Code: f2f2bfe3
        [Key: 5a6967426565416c6c69616e63653039]
        [Key Label: ZigBeeAlliance09 Key]
    Command Frame: Transport Key


Frame 282: 73 bytes on wire (584 bits), 73 bytes captured (584 bits) on interface unknown, id 0
IEEE 802.15.4 Data, Dst: 0x0d6a, Src: 0x0000, Bad FCS
ZigBee Network Layer Data, Dst: 0x0d6a, Src: 0x0000
    Frame Control Field: 0x0008, Frame Type: Data, Discover Route: Suppress Data
    Destination: 0x0d6a
    Source: 0x0000
    Radius: 30
    Sequence Number: 188
    [Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)]
    [Origin: 4]
ZigBee Application Support Layer Command
    Frame Control Field: Command (0x21)
    Counter: 18
    ZigBee Security Header
        Security Control Field: 0x30, Key Id: Key-Transport Key, Extended Nonce
        Frame Counter: 552964
        Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)
        Message Integrity Code: a3e26415
        [Key: 5a6967426565416c6c69616e63653039]
        [Key Label: ZigBeeAlliance09 Key]
    Command Frame: Transport Key

Have you burning one new IEEE in the Silabs chip ?

Extended Source: TexasIns_00:01:6a:41:0c (00:12:4b:00:01:6a:41:0c)

@MattWestb
Copy link
Contributor

The latest EZSP and RCP 7.3.x / 4.3.x can loading one software IEEE that is not burned in the chip (stored in the NVM3) but its no problem running older firmware that cant do it only if migrating to one other hardware if not having that support ZHA is burning one new IEEE in the chip and cant being reverted (with SWD flashing its possible then its in user data that cant being OTA flashed normally).

@mdeweerd
Copy link
Contributor

mdeweerd commented Nov 11, 2023

Have you burning one new IEEE in the Silabs chip ?

Yes - I migrated from a CC2531.

An add-on I found to flash is: https://github.com/home-assistant/addons/tree/master/silabs_flasher .

@MattWestb
Copy link
Contributor

Shall working OK i have not testing it as addon only before in veritual env.
Try with different EZSP version if some is working OK. The 6.7.8.X is stable production and 6.10.X is candidate. All 6.8 and 6.9 is alpa and is not good for production.
The 7.1.X is little beta and the same with 7.2.X and normally is 7.3.2 the best if having one MG21 device.
Witch device is you using in your system is it any free firmware for it ?

@mdeweerd
Copy link
Contributor

I have SonOFF ZBDongle-E to enable - it had v6.10.3 .
I just made an update using the webflasher.

The Multiprotocol Add-on did not want to startup (did not find the port), so I have reboots the HAOS system (OS itself). It still complains about "Failed to connect, secondary seems unresponsive" .

Trying to find out what to do...

@mdeweerd
Copy link
Contributor

I did not program the correct firmware, it was Zigbee FW with new version.
After flashing the RCP version, the integration started.
However I have lost all related entities.

The insturctions indicate:

If you had an existing ZHA setup, you will need to remove this entirely. > Make sure to backup your network first!

So I removed it using the UI and then the configuration as well, but after restoration I do not have the entities .. Kind of furious...

However, I could pair the TS011F

@MattWestb
Copy link
Contributor

One very interesting question is the RCP using the original IEEE or the burned one from the CC2531 but now you shall also having the possibility changing it without burning the chip IF our Puddly have making all right.
Then if its using the original IEEE i think ZHA is thinking its one new instance and do not reusing all old saved devices.

@mdeweerd
Copy link
Contributor

It's using the TI IEEE address.

To recover entities (different than those I had), I:

  • Reflashed the key (as I could not reconfigure ZHA to connect to it after removing it);
  • Reconnected to the socket;
  • Restored from the stored backup (previously I recovered from a backup I downloaded using the UI).

Luckily I had an export of the critical devices in devices.csv with zha-toolkit which helped map the devices to their original entity names and locations.

@MattWestb
Copy link
Contributor

If the IEEE was the same in the "new network" and the old backup its likely the frame counter was set to zero and the network was throwing all frames from the coordinator as replay attack.

Great that you is up and running after some hardware digging (its little different for code digging but its more my thing as code is yours) !!

@jacme31
Copy link
Author

jacme31 commented Nov 12, 2023

@MattWestb and @mdeweerd : Thank you very much for your investigation into this issue.
I am not competent enough to understand all your exchanges in detail.
It seems to me that I have generally understood from your analyzes and experiences that the problem came from the zigbee coordinator and that a new radio firmware could solve the problem.
For my part I use an HA Yellow with the on-board radio chip:

"ezsp": {
                   "manufacturer": "Nabu Casa",
                   "board": "Yellow v1.2",
                   "version": "6.10.3.0 version 297",
                   "stack_version": 8,
                   "can_burn_userdata_custom_eui64": false,
                   "can_rewrite_custom_eui64": false
               }

I have no idea how this network firmware can be updated even though I saw the following links:
https://github.com/home-assistant/addons/tree/master/silabs_flasher.
https://github.com/NabuCasa/silabs-firmware/wiki/Flash-Silicon-Labs-radio-firmware-manually
Generally speaking, I'm a little fearful, and I'd rather not use my new SAPZ devices than lose my network and have to re-pair all existing devices...

@mdeweerd
Copy link
Contributor

If the IEEE was the same in the "new network" and the old backup its likely the frame counter was set to zero and the network was throwing all frames from the coordinator as replay attack.

I migrated many months ago already and the migration was flawless!

I think that changing to the RCP FW using the multiprotocol Add-on should also be don by initiating a migration rather than removing "everything" - the only issue being the port - ZHA might grab the port before the add-on does. So the trick would be to change the ZHA port to a bad port (currently by hacking) or disabling it until the add-on starts up I guess.

Great that you is up and running after some hardware digging (its little different for code digging but its more my thing as code is yours) !!

My things are HW and SW (I design HW boards and SW from FW to application level - I've also worked on design and verification of baseband ASICs for phones) !

However you noticed the Link key issue!

Generally speaking, I'm a little fearful, and I'd rather not use my new SAPZ devices than lose my network and have to re-pair all existing devices...

I'ld suggest you to stick with the Zigbee SW version.

Nabu Casa indicates there are no known issues with the current FW, but this is one!

https://skyconnect.home-assistant.io/firmware-update/

The add-on silabs-flasher seems to be an official method to update the key.

I'ld make sure to have a recent backup, then proceed with the upgrade (implies disabling - not removing - zha) and enable zha again. The network info is probably maintained and if not you can restore it.
IMHO the only reason for the issues I had was that the documentation for the alternative code said to remove zha... .
I did not have to repair the devices, but I did have to remap the devices to the entities I was using - and one of the side-effets there is that in several cases the entity_name postfix was incremented (_6 to _7 for instance).

Of course - up to you if and when you want to try the upgrade. And I would report this to Nabu Casa anyway. A Coordinator FW change fixes it so it can be argued that there is an issue with the coordinator FW.

@jacme31
Copy link
Author

jacme31 commented Dec 15, 2023

Finally I configured the Multi Protocol Support of my HA Yellow (even though I'm not using Thread at the moment)
After that, pairing worked well.
We might think that the multiprotocol has a different zigbee stack... (Micrologiciel : 7.3.1.0 build 0)

@MacDada
Copy link

MacDada commented Feb 15, 2024

During the pairing ZHA loads the quirk "zhaquirks.tuya.ts011f_plug.Plug" and everything seems to works, but the device stays in pairing mode, it disconnect/ reconnects multiple times before disconnecting defintevly.

I have the same exact issue with Nous A1Z Smart ZigBee Socket (identified by ZHA as TS011F by _TZ3000_2putqrmw, Firmware: 0x0000004d).

HA OS 2024.2.1
Sonoff Dongle–P (identified by ZHA as CC2652 by Texas Instruments, Firmware: Z-Stack 20230507)

  1. ZHA -> Add device
  2. Hold the button on the socket for a few seconds -> it starts flashing its led
  3. ZHA (re)discovers it
  4. It works! I can control the socket from HA (it is still flashing its led! even though the pairing should have completed [?])
  5. Finally, the led stops flashing -> the socket is not longer controllable from HA (and the values don't get updated)
  6. Go to 1 :-P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tuya Request/PR regarding a Tuya device
Projects
None yet
Development

No branches or pull requests

5 participants