zha-device-handlers icon indicating copy to clipboard operation
zha-device-handlers copied to clipboard

[Device Support Request] - Moes Thermostat - TS0601

Open DJ-Specter opened this issue 1 year ago • 33 comments

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

Thermostat Home Assistant

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

DJ-Specter avatar Nov 16 '23 10:11 DJ-Specter

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 avatar Nov 20 '23 12:11 glcos

@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

darknessblade avatar Dec 04 '23 12:12 darknessblade

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 avatar Dec 04 '23 13:12 glcos

@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.

darknessblade avatar Dec 04 '23 13:12 darknessblade

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

moes temp

darknessblade avatar Dec 04 '23 18:12 darknessblade

@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

moes

darknessblade avatar Dec 05 '23 12:12 darknessblade

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]

home-assistant log [CUT].log

darknessblade avatar Dec 05 '23 13:12 darknessblade

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 avatar Dec 05 '23 13:12 DJ-Specter

@DJ-Specter Do you have the same issue with those Solar-flare temperature spikes?

darknessblade avatar Dec 05 '23 14:12 darknessblade

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

DJ-Specter avatar Dec 05 '23 14:12 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 avatar Dec 05 '23 14:12 DJ-Specter

@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 avatar Dec 05 '23 19:12 glcos

@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

darknessblade avatar Dec 05 '23 20:12 darknessblade

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.

DJ-Specter avatar Dec 11 '23 16:12 DJ-Specter

@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:

avatto-thermostat

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.

glcos avatar Dec 18 '23 18:12 glcos

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

darknessblade avatar Dec 27 '23 14:12 darknessblade

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 avatar Jan 09 '24 18:01 DJ-Specter

@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

darknessblade avatar Jan 09 '24 18:01 darknessblade

Caught the error in action: thermostat error

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

darknessblade avatar Jan 12 '24 13:01 darknessblade

So is this a manufacturer problem then? How can we move forward to get it fixed?

DJ-Specter avatar Jan 12 '24 16:01 DJ-Specter

@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]

darknessblade avatar Jan 12 '24 16:01 darknessblade

@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

darknessblade avatar Jan 20 '24 06:01 darknessblade

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 avatar Jan 20 '24 17:01 DJ-Specter

@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.

darknessblade avatar Jan 20 '24 19:01 darknessblade

Fixed quirk at repo: https://github.com/jacekk015/zha_quirks

All target room temp spikes over 50 degrees are not reported to HA.

jacekk015 avatar Mar 10 '24 21:03 jacekk015

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.

DJ-Specter avatar Mar 11 '24 07:03 DJ-Specter

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.

darknessblade avatar Mar 11 '24 14:03 darknessblade

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

jacekk015 avatar Mar 11 '24 15:03 jacekk015

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}

Log Temp dip.txt

darknessblade avatar Mar 12 '24 12:03 darknessblade

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/

jacekk015 avatar Mar 12 '24 18:03 jacekk015