zha-device-handlers
zha-device-handlers copied to clipboard
[Device Support Request] - Moes Thermostat - TS0601
Problem description
Hi,
I'm submitting this request following the conversation on this ticket:
https://community.home-assistant.io/t/popular-moes-thermostat-not-showing-entities-after-zha-pairing/641041/1
I bought a Moes thermostat (gas boiler + zigbee version), that pairs with Zigbee but doesn't show any proper entities.
I have a friend with what I thought was an identical model but it seems there are lots of subvariants of this one. Either way, it should definitely work.
I have also done all the troubleshooting outlined in this, including removing and re-pairing several times: https://community.home-assistant.io/t/guide-for-zigbee-interference-avoidance-and-network-range-coverage-optimization/515752
I'm not sure what other info is required here, but please don't hesitate to ask :)
EDIT: After learning a lot about quirks since I posted this, I'm adding the actual model number to the post for searchability as I can't see it anywhere - _TZE204_aoclfnxz
Thank you very very much in advance for any help!
Solution description
As far as I understand, something to do with quirks is required for this to work properly with Zigbee Home Assistant, and the device needs to be opted into ZHA. I think that's all that's necessary?
Screenshots/Video
Screenshots/Video
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": "0x0051",
"input_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0xef00"
],
"output_clusters": [
"0x000a",
"0x0019"
]
},
"242": {
"profile_id": "0xa1e0",
"device_type": "0x0061",
"input_clusters": [],
"output_clusters": [
"0x0021"
]
}
},
"manufacturer": "_TZE204_aoclfnxz",
"model": "TS0601",
"class": "zigpy.device.Device"
}
Diagnostic information
Diagnostic information
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2023.11.2",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.11.6",
"docker": true,
"arch": "aarch64",
"timezone": "Europe/London",
"os_name": "Linux",
"os_version": "6.1.21-v8",
"supervisor": "2023.11.3",
"host_os": "Home Assistant OS 11.1",
"docker_version": "24.0.6",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {
"hildebrandglow_dcc": {
"version": "1.0.3",
"requirements": [
"pyglowmarkt==0.5.5"
]
},
"localtuya": {
"version": "5.2.1",
"requirements": []
},
"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": 20963,
"manufacturer": "_TZE204_aoclfnxz",
"model": "TS0601",
"name": "_TZE204_aoclfnxz TS0601",
"quirk_applied": false,
"quirk_class": "zigpy.device.Device",
"quirk_id": null,
"manufacturer_code": 4417,
"power_source": "Mains",
"lqi": 168,
"rssi": -58,
"last_seen": "2023-11-16T10:49:51",
"available": true,
"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": "0x0051",
"input_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0xef00"
],
"output_clusters": [
"0x000a",
"0x0019"
]
},
"242": {
"profile_id": "0xa1e0",
"device_type": "0x0061",
"input_clusters": [],
"output_clusters": [
"0x0021"
]
}
},
"manufacturer": "_TZE204_aoclfnxz",
"model": "TS0601"
},
"active_coordinator": false,
"entities": [],
"neighbors": [
{
"device_type": "Coordinator",
"rx_on_when_idle": "On",
"relationship": "Parent",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x0000",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "85"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xA2BB",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "88"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x6306",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "39"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x8C83",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "42"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xEA58",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "63"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x7116",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "121"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x49A8",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "54"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x1E36",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "54"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xC22D",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "151"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xD0E7",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "121"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xBCB6",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "106"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xA389",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "51"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xBF90",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "75"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x1611",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "0"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x282F",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "36"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xC28E",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "81"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x27E4",
"permit_joining": "Unknown",
"depth": "0",
"lqi": "30"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x8F41",
"permit_joining": "Unknown",
"depth": "2",
"lqi": "88"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x0321",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "33"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x1A2B",
"permit_joining": "Unknown",
"depth": "1",
"lqi": "42"
}
],
"routes": [],
"endpoint_names": [
{
"name": "SMART_PLUG"
},
{
"name": "PROXY_BASIC"
}
],
"user_given_name": "Thermostat ",
"device_reg_id": "0d0091547b465de705a470161d62295f",
"area_id": "kitchen",
"cluster_details": {
"1": {
"device_type": {
"name": "SMART_PLUG",
"id": 81
},
"profile_id": 260,
"in_clusters": {
"0x0004": {
"endpoint_attribute": "groups",
"attributes": {},
"unsupported_attributes": {}
},
"0x0005": {
"endpoint_attribute": "scenes",
"attributes": {},
"unsupported_attributes": {}
},
"0xef00": {
"endpoint_attribute": null,
"attributes": {},
"unsupported_attributes": {}
},
"0x0000": {
"endpoint_attribute": "basic",
"attributes": {
"0x0001": {
"attribute_name": "app_version",
"value": 74
},
"0x0004": {
"attribute_name": "manufacturer",
"value": "_TZE204_aoclfnxz"
},
"0x0005": {
"attribute_name": "model",
"value": "TS0601"
}
},
"unsupported_attributes": {}
}
},
"out_clusters": {
"0x0019": {
"endpoint_attribute": "ota",
"attributes": {},
"unsupported_attributes": {}
},
"0x000a": {
"endpoint_attribute": "time",
"attributes": {},
"unsupported_attributes": {}
}
}
},
"242": {
"device_type": {
"name": "PROXY_BASIC",
"id": 97
},
"profile_id": 41440,
"in_clusters": {},
"out_clusters": {
"0x0021": {
"endpoint_attribute": "green_power",
"attributes": {},
"unsupported_attributes": {}
}
}
}
}
}
}```
</details>
### Logs
<details><summary>Logs</summary>
```python
[Paste the logs here]
Custom quirk
Custom quirk
[Paste your custom quirk here]
Additional information
No response
I have the same device and managed to make it working using this quirk: https://github.com/jacekk015/zha_quirks/blob/main/ts0601_thermostat_avatto.py
however this device has a number of issues not dependent on Home Assistant or the ZigBee protocol itself, see here https://github.com/jacekk015/zha_quirks/issues/29
@glcos Thank you.
Have gotten this model as well [gotten it with the 11.11 sale, at a steep discount], with this the 3 most important features are now working for me
One question: Do you know if its possible to FULLY deactivate the build in programming/scedule
I have a Avatto one as well, of which this is possible. Having it only be In Manual modus.
https://www.aliexpress.com/item/1005002960679997.html? And want to know if its possible on the MOES one as well
One question: Do you know if its possible to FULLY deactivate the build in programming/scedule
@darknessblade I'm not sure I'm getting your question right, anyway I use the MOES one only in manual mode, and let Home Assistant to do the schedule and advanced programming such as temperature setting based on occupancy.
@glcos What I mean is: That you deactivate the Schedule modus completely, so its always in Manual modus. and the mode-change button essentially doesn't do anything.
It should be possible trough the advanced menu "screen off+ hold mode+clock" Trough this I already deactivated the 2nd temp-sensor. But I cannot find anywhere what each other variable means in the menu.
Not sure what caused it, but For some reason the thermostat wants to heat to over 9-90 times the surface temperature of the sun
@glcos Contacted the seller for the advanced menu instructions, and It does not look like its possible to disable the build in scedule
Now I only needs to find out why HASS thinks I want to heat my room to a temperature hotter than the sun
See following log [Due large file size and randomness in the spikes, I cut the section of the most recent spike with roughly 3 temp/set checks before the spike]
Thanks for all the time and research guys, I really appreciate it 😄
I don't think I put it anywhere in the original post so I edited to reflect what I now understand to be the specific model identifier: _TZE204_aoclfnxz
@DJ-Specter Do you have the same issue with those Solar-flare temperature spikes?
I certainly do!
This request came off the back of my HA Community post: https://community.home-assistant.io/t/popular-moes-thermostat-not-showing-entities-after-zha-pairing/641041/19?u=dj-specter
This also seems like a good opportunity to flag another post that much to my distress hasn't had any traction, but which I'm pretty sure must be related:
https://community.home-assistant.io/t/call-service-set-target-temperature-only-sets-temporarily/649184
@DJ-Specter @darknessblade in my installation I don't see these spikes in temperature. I use ZHA and a ZigBee coordinator based on Texas Instruments CC2652P
@glcos I use the "Sonoff Zigbee 3.0 plus type E" with ZHA.
Currently have changed the build in scedule to have everything set at 00:00 and 15C. Did this as a test to see if this would have any effect on the spikes.
The weirdest part is that I have not touched or interacted with the Climate card/integration or panel. yet it still has spikes
Does anyone know how long these kind of device support requests take to be actioned?
I'm wondering now about just using the smelly Smart Life app to unlock the full content of these and some TRVs I got, but I really don't want to.
@darknessblade I received a new Avatto thermostat and tested, now I think I understand what you ment for disabling scheduling mode. I want my thermostat to be in manual mode, but once in while for some reason it goes into this screen by itself:
I could not find a way to completely disable scheduling or advanced programming mode and put it into manual. I cannot understand if it's Home Assistant that is pushing this mode for some reason or it's the thermostat itself.
Not sure waht causes that blank screen. it might be because you turned the thermostat OFF trough the off button/turn of heating which turns of the screen.
Also a small update regarding My moes thermostat
after updating the zigbee coordinator, it still gives the same spikes as I had before.
One benefit is that the thermostat does not instantly turn ON when it gets such a spike, since it turns on roughly 10 seconds after a temp-change trigger
Do the spikes only happen when the mode is switched from heat to off, or vice versa?
Or are they when the temperature is changed, maybe? It's hard for me to see from the graphs, but I feel like it's possible to test.
I'm also convinced this is the thing that's causing my thermostat to gradually decrease the temperature it's set to, per the HA community ticket I linked above...
@DJ-Specter the spikes happen when the device is ON
Display/heat=ON Set-temp=below current temp Mode: Manual Automatic mode= all times= 00:00/ 15C Floor sensor=disabled
Caught the error in action:
It is only on HASS its side, as the thermostat itself does not show strange behavior or try to turn on even though hass thinks it is set to 2133C
So is this a manufacturer problem then? How can we move forward to get it fixed?
@DJ-Specter The only way I can think of is that HASS needs to Ignore ALL inputs/data changes that are above 50C Like in my Image 2133C. would be cut off to 50C.
This way the "bug" still is present, but the log data is more readable, as the spikes are cut off at 50C instead of UNCAPPED. which results in rare spikes of 1.3BILLION degrees Celsius.
My reason for 50C, is because nobody would use a set temp above 30C ""under normal use"". [Unless people use it for a Infared sauna, trough the floor sensor with the electric heating panel].
As I am not well versed in coding, I am not sure if its possible to do this with the custom quirks.
I have contacted the manufacturer/seller to see if I can get the Xcell files/custom cluster information. [will update when I get a response]
@DJ-Specter tried contacting the manufacturer/seller, for the tuya cluster information, but they do not want to give this information.
Would it be possible to hardlock the max reported set-temp to 50C, in the custom quirk? where it ignores anything above said value
That's very annoying, damn. Nice one for getting in contact with them!
I strongly endorse your suggestion but have no idea how to make it happen I'm afraid 😅
Hopefully it can be factored into the official ZHA quirk when this ticket gets actioned?
Or some enterprising dev can swoop in to the rescue with an amendment to the custom quirks listed above, or something fresh if that's more constructive?
On Sat, 20 Jan 2024, 07:47 darknessblade, @.***> wrote:
@DJ-Specter https://github.com/DJ-Specter tried contacting the manufacturer/seller, for the tuya cluster information, but they do not want to give this information.
Would it be possible to hardlock the max reported set-temp to 50C, in the custom quirk? where it ignores anything above said value
— Reply to this email directly, view it on GitHub https://github.com/zigpy/zha-device-handlers/issues/2755#issuecomment-1901795713, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADNDXYDE2F24C4GMJGILEKTYPNR6PAVCNFSM6AAAAAA7N6L636VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBRG44TKNZRGM . You are receiving this because you were mentioned.Message ID: @.***>
@DJ-Specter
True, luckily the thermostat has a roughly 10 second delay before activating the relay. so the 1MS "false positive" update isn't the biggest issue in terms of function, its only annoying for logging purposes, as it KILLS the graph.
In my opinion they should HARD-limit all thermostats recording/messages to a default limit. This will prevent the same from happening on any future different thermostat.
It is indeed a shame that MOES doesn't want to share the Tuya cluster info.
Last dev/shop {AVATTO}, I contacted for a different panel, did share it without issue. [though in my case they did promise it being functional with homeassistant under ZHA], so that may have played a factor.
Fixed quirk at repo: https://github.com/jacekk015/zha_quirks
All target room temp spikes over 50 degrees are not reported to HA.
Whoa, out of nowhere, a new hero swoops in!
Amazing, thank you so much dude! I've just added it and will keep an eye on my temps over the next week and report back.
Fixed quirk at repo: https://github.com/jacekk015/zha_quirks
All target room temp spikes over 50 degrees are not reported to HA.
added it to my HASS,
It looks to be working slightly better than the one I used before, Instead of spikes I now get dips to 0-4C. even if its slightly annoying it still has issues like this, its still better than spikes of 100MIL C
in 7 hours I got 3 dips
Will report back in 72 hours if I get massive spikes or dips again.
Those spikes are seen in your previous log, so device send it, unfortunately.
2023-12-05 10:14:49.413 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(timestamp=datetime.datetime(2023, 12, 5, 9, 14, 49, 413554, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xEA98), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=25, profile_id=260, cluster_id=61184, data=Serialized[b'\tU\x02t\xb9\x10\x02\x00\x04\x00\xaa\x04\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=152, rssi=-62)
2023-12-05 10:14:49.414 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Received ZCL frame: b'\tU\x02t\xb9\x10\x02\x00\x04\x00\xaa\x04\x00'
2023-12-05 10:14:49.414 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=85, command_id=2, *direction=<Direction.Client_to_Server: 1>)
2023-12-05 10:14:49.415 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Decoded ZCL frame: AvattoManufCluster:set_data_response(param=Command(status=116, tsn=185, command_id=528, function=0, data=[4, 0, 170, 4, 0]))
2023-12-05 10:14:49.415 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Received command 0x02 (TSN 85): set_data_response(param=Command(status=116, tsn=185, command_id=528, function=0, data=[4, 0, 170, 4, 0]))
2023-12-05 10:14:49.415 DEBUG (MainThread) [zhaquirks.tuya] [0xea98:1:0xef00] Received value [0, 170, 4, 0] for attribute 0x0210 (command 0x0002)
2023-12-05 10:14:49.416 DEBUG (MainThread) [homeassistant.components.zha.core.cluster_handlers] [0xEA98:1:0x0201]: Attribute report 'AvattoThermostat'[occupied_heating_setpoint] = 1114214400
2023-12-05 10:14:49.416 DEBUG (MainThread) [homeassistant.components.zha.core.cluster_handlers] [0xEA98:1:0x0201]: Attribute report 'AvattoThermostat'[occupied_heating_setpoint] = 1114214400
2023-12-05 10:14:49.418 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Sending reply 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=85, command_id=<GeneralCommand.Default_Response: 11>, *direction=<Direction.Client_to_Server: 1>)
2023-12-05 10:14:49.418 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Sending reply: Default_Response(command_id=2, status=<Status.SUCCESS: 0>)
2023-12-05 10:14:49.419 DEBUG (MainThread) [bellows.zigbee.application] Sending packet ZigbeePacket(timestamp=datetime.datetime(2023, 12, 5, 9, 14, 49, 419008, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xEA98), dst_ep=1, source_route=None, extended_timeout=False, tsn=85, profile_id=260, cluster_id=61184, data=Serialized[b'\x18U\x0b\x02\x00'], tx_options=<TransmitOptions.ACK: 1>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-12-05 10:14:49.419 DEBUG (MainThread) [bellows.ezsp.protocol] Send command sendUnicast: (<EmberOutgoingMessageType.OUTGOING_DIRECT: 0>, 0xea98, EmberApsFrame(profileId=260, clusterId=61184, sourceEndpoint=1, destinationEndpoint=1, options=<EmberApsOption.APS_OPTION_RETRY|APS_OPTION_ENABLE_ROUTE_DISCOVERY: 320>, groupId=0, sequence=85), 64, b'\x18U\x0b\x02\x00')
2023-12-05 10:14:49.419 DEBUG (MainThread) [homeassistant.components.zha.entity] climate.tze204_moes_ts0601_thermostat: Attribute 'occupied_heating_setpoint' = 1114214400 update
2023-12-05 10:14:49.420 DEBUG (MainThread) [homeassistant.components.zha.entity] climate.tze204_moes_ts0601_thermostat: Attribute 'occupied_heating_setpoint' = 1114214400 update
Can verify I am only getting DIPS that drop the set_temp to 0-8C
Still slightly annoying, but still better than spikes of 100MIL+, especially for logging data
From the logs: {Isolated the section of the DIP}
You know that you have a broken device. There's no cure for that. Those 3 commands below were sent under half of the second. Your Zigbee mesh is probably totally overloaded with those messages. I can't make the quirk to omit the 15 degrees setting - it's still in the usable range. We can play more and count time and omit incoming messages within 1 second, but that's on the HA side. Zigbee Mesh will still be utilizing a ton of trash messages.
2024-03-12 13:04:05.141 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.194 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 0] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.242 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)
I use the "Sonoff Zigbee 3.0 plus type E" with ZHA.
Did you upgrade the firmware of the dongle or are you on stock version? I did upgrade my Sonoff-E with, I think, version 7.3.1 at https://darkxst.github.io/silabs-firmware-builder/