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.
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
Go to: Settings → Devices & services → Helpers
Click: Create helper → Template → Sensor
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.
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.