I have a few temperature sensors from Hue and Xiaomi, but they all show different temperatures. Sure, the variations are not that big, around 1 degree Celsius, but I would like to calibrate them before placing them in various rooms. To do that I first placed them all in the same room, then I left them there for a few hours along with a thermostat from my underfloor heating, and then I planned to set them all to the temperature of the thermostat.
If you use their hubs you probably have a way to calibrate the sensors using their native apps, but I'm using a Conbee II with deCONZ, so I have two methods, the REST API or the deconz.configure service from Home Assistant. The easiest method is the deconz.configure service, I know because I used both of them. If you're interested in the REST method, I can follow up with that, but in this article, I'll show you how you can use only the deconz.configure service.
The first thing you have to do is open Home Assistant and navigate to Developer Tools -> SERVICES. In the Service input use "deconz.configure", and click on "Fill example data". Once you did that you just have to replace the values with real ones.
First, find the entity id of the sensor you want to modify. I used "sensor.office_temperature" for my example.
Then you have to specify the field you want to modify. Here, use the value '/config'. This is an object that has the 'offset' field which we need to modify. By default, the 'offset' is set to 0, but we will change it according to our needs. For example, if you want your sensor to report a temperature higher with 1 degree, then you will set the offset to 100, or to -100 if you want a temperature lower with 1 degree. If you want to increase it by 0.1, then you set the offset to 10. I think you understand how it works by now. In my example, I found out that my sensor is reporting a temperature that is 0.3 degrees Celsius higher than my thermostat, so I used -30 to bring it down to the same value as the thermostat.
The last value is the bridge ID, which you can find in the integration name from Home Assistant.
In the end, our request looks like this.
entity: sensor.office_temperature field: '/config' data: 'offset': -30 bridgeid: 01212E03D36B
Just hit on "Call service" and the temperature of your sensor will be adjusted immediately.
I have a video with all the steps in case you prefer video over reading.