W100 zigbee firmware inconsistencies

hi @peterChengg
Thanks for the answer.

I’ve worked on the Zigbee2mqtt converter integration for the w100.
But if the PTMSD protocol is limited to integer, then why on the W100 device can we set float values ?

Is there another endpoint we can use to get/set thermostat float setpoint value instead of using PTMSD ?
Do you have some technical information to share that could help us to improve the current Z2M support ?

When the W100 is connected to the W400 or W600, it supports floating-point control (these devices do not use PTMSD but can control temperature directly).
The W100 needs to be compatible with both PTMSD and direct control, but since it cannot determine the device’s control unit, it defaults to floating-point control.

I’m sorry, but if that’s the case, you may have to wait for the next version.
I’ve already reported this issue to the project team. The exact release date for the next version depends on the team’s schedule, so I can’t give you a definite answer at this time. We’ll fix this issue as soon as possible.

Any update on this @peterChengg? - It’s been over 20d and no fix yet.
It also affects the device in Aqara app (not only in HA).

At least a fw downgrade option should be. made available @peterChengg!

My solution for ZHA: filter out rounded values using a Template Sensor.

You can create a template sensor that only accepts values with a decimal part and ignores rounded ones.

Steps

  1. Go to:
    Settings → Devices & services → Helpers

  2. Click:
    Create helper → Template → Sensor

  3. Fill in:

Name: Filtered Temperature
State template (replace zaltemphum_temperatura to your W100 sensor):

{% set v = states('sensor.zaltemphum_temperatura') %}
{% if v not in ['unknown','unavailable',''] %}
  {% set f = v | float %}
  {% if (f * 10) % 10 != 0 %}
    {{ f }}
  {% else %}
    {{ this.state }}
  {% endif %}
{% else %}
  {{ this.state }}
{% endif %}

Unit of measurement: °C
Device class: Temperature
State class: Measurement
Device: Select W100 device to link

How it works

  • Values like 23.0 are ignored
  • Values like 23.7 are accepted
  • The sensor keeps the last valid (non-rounded) value

Result

You get a stable temperature sensor that updates only with real measurements and ignores the faulty rounded updates.

The downside is that if the actual temperature is a whole number (without decimals), it will also be ignored. However, this is still preferable for use in a virtual thermostat, as it prevents unstable fluctuations in the readings.

Use this new sensor in your automations instead of the original one.


Zal T - virtual sensor
Zal Temp - real sensor

Now we just have to wait for a firmware update.

Additional note: the sensor actually reports values with two decimal places, so the chance of receiving a true integer value is extremely low.


1 Like

Thanks of the share @sedmit.

Anyhow - a “workaround” like fw downgrade should be the minimum Aqara should provide in these cases. Not acceptable the introduce a main bug and not act/correct it during weeks.