TRVs horribly inaccurate - any suggestions?
I've just added my first Tado TRV to my system and have noticed that the TRV is reporting a far, far higher temperature than the room actually is. As of now, the TRV is reporting 24C but my (separate) room temperature monitor is reporting 19C (which is definitely about right, based on other temperatures in the house).
My assumption is that the TRV is picking up radiated heat from the adjacent radiator and, if so, I can't actually see this working very well for my needs. I've attached a photo of the stat in-situ:
Any suggestions?
Answers
-
Yes. Vote this: https://community.tado.com/en-gb/discussion/459/launch-an-external-temperature-sensor-for-the-smart-radiator-thermostats#latest
But, while you're waiting, you can either set a measurement offset (meaning you will have innacurate measurements when the radiator is cold) or install one more smart thermostat (or TRV) in each room and use that device as the measuring device (meaning you will have substantialy less money :p).
Best,
Andrei1 -
Thanks Andrei.
Unfortunately, I don't think a measuring offset will not really help as the radiator will be constantly calling for demand when it doesn't need to.
i.e. real temperature 19C, recorded temperature 24C, so apply a 5C offset. This means that the set point will need to be 24C (effective 19C), but when the radiator is off, the stat will believe it is seeing a temperature much lower than is really there and will attempt to warm the room up again, thus forcing the system into an inefficient "hunting" state.
Will see what Tado say, but I suspect that the TRVs are about to be returned!
0 -
Just to show why an offset doesnt work:
That graph shows two TRVs in the same room. The purple one on a radiator, the red one 1m away from it, on my desk (and used as trigger).
0 -
I have had good improvements by mounting the TRV horizontally; if you have some plumbing skills, you need to rotate (or change in your case) the Trv body0
-
You wait till you fit one in your bedroom, I fitted my first last night, so loud, at 5 in the morning I was removing it and refitted standard TRV.0
-
I agree with jacoscar, fitting the valves horizontally does make a huge difference, moves the head just that little bit further away from the radiator, also there is already temperature compensation built in the software to account for them being close to the radiator, if you have had the old style wax TRV’s in the past, these work in a similar way to account for them being close to an heat source.
As for the system not heating the room fully to the set point, there are several things that can cause this too, not just tado.
Is the whole heating system balanced properly so each radiator in the system gets the correct temperature of water (lots of videos on youtube explaining this), again this can make a huge difference to how well an heating system performs, are there any cold spots on the radiator indicating possible blockage or air locks, has the TRV valve pin stuck in one position, what temperature is the boiler set at for the heating?
I’ve had tado for 2 years now and was a little disappointed at first, but after a little patience got it working really well across the whole house with comfortable even temperatures in each room.
As for how loud they are, to be fair to tado they are no louder than other electronic TRV’s, (not smart) have had 3 different brands in the past and they all sounded the same, problem is the metal pipes and radiators amplify them.1 -
At least the Tado vertical TRV has two temperature sensors (not sure about the horizontal model) which Tado claim help prevent the heat problems of being right next to the radiator. However posts in this and other threads suggest this is not adequate.
If you have two (or more) radiators in a single room each with a Tado TRV then you are supposed to group them as a room and you can get Tado to nominate one of them as the 'master' for the room.
Another suggestion is to have an additional Tado Smart Thermostat in the room and link the Tado TRVs to it so they use that Tado Smart Thermostat rather then their own internal sensors. This solution is exactly that proposed in the discussion linked to by @andreig1978 however a Tado Smart Thermostat costs a lot more than the proposed solution, partially due to having a display and touch controls.
0 -
I'm struggling with mine, fitted last week. Vertically mounted. Played with offsets but wasn't happy. Now have zero offset but have them set very high to account for the innacurate high temps due to their proximity of the radiator. Only current issue is in the living room where the max 25 degrees isn't really enough... As the actual is probably only 21degrees. Love the concept but a little frustrated.
0 -
Instead of a Tado wall thermostat to measure the temperature, you could sacrifice another radiator valve and put it somewhere else in the room0
-
Thanks all, some good suggestions here. It does sound like a horizontally fitted install might work better, but none of my radiators are setup to work like this and I don't really want to change the pipework just at the moment. Being honest, an external temperature sensor would be the thing, so it could be installed a the other end of the room. I've already got one (self-built ESP8266 thing), but sadly no way to integrate this with the Tado, and I don't really see the need to purchase either an additional smart thermostat, or TRV to fix this.
I'm still pondering how to move forward with this, but at the moment the TRV has been taken off.
0 -
I am thinking of using home assistant to constantly check the offset between the TRV and an external sensor, then using the Tado web app to dynamically update the the offset; this should work in theory but:
1- you can only apply full degree offsets
2- it’s not an instantaneous change
However I’ve noticed that the history graph probably do some smoothing of the temperature trend so it might work in our favour and not upset the Tado algorithm too much
But I don’t know how to make the http request or use the API to set the offset
If anyone does, please get in contact and let me know1 -
I've successfully updated the offset via the API in Postman, not yet got as far as using it.
(Used info on https://shkspr.mobi/blog/2019/02/tado-api-guide-updated-for-2019/ )
First login...
You need client secret, I believe this stays static, but is found at https://my.tado.com/webapp/env.js
You also need to replace 'zzz' with your own email & password for tado
POST https://auth.tado.com/oauth/token
Authentication - None
Header
Content-Type: application/x-www-form-urlencoded
Body
client_id=tado-web-app
grant_type=password
scope=home.user
username=zzz
password=zzz
client_secret=wZaRN7rpjn3FoNyF5IFuxg9uMzYJcvOoQ8QWiIqS3hfk6gLhVlG57j5YNoZL2Rtc
From the response retrieve the access_token with the test script...
var data = pm.response.json();
pm.environment.set("Ttoken", data.access_token);
Assuming that you create an environment variable 'Ttoken' to hold the Tado token
Then use GET your home ID...
Authentication - Bearer Token
Token {{Ttoken}}
and then use that to GET your device serial
https://my.tado.com/api/v2/homes/{{homeID}}/zones
And finally PUT the offset you want...
https://my.tado.com/api/v2/devices/{{device_id}}/temperatureOffset
Body
{
celsius: 2.0
}
Note that you can use one decimal place
If anyone successfully uses this in Home Assistant, please post here!
ps I'm also going to attempt to do it directly with an ESP32, but not sure if it's possible to get the authentication to work properly. If I do I'll post it.
Jonathan
ps be care with copy/paste of " , it seems to often use the wrong type and fail
0 -
Hi, I also successfully wrote a python script to update the offset based on an external sensor integrated in home assistant
I noticed that I can write an offset with 2 decimal places and it looks like it is stored with 2 decimal places; however I’m still not sure if the corrected temperature accounts for the decimal places or just rounds it up to the nearest integer
Anyway, this is what I obtain when calling for heat from 13 to 16 degrees on a valve that would normally pickup the heat from the radiator
Not bad, right?1 -
2
-
Great, any chance you can share the script?0
-
Ok, so I've had a play, and written some code that directly sends information from an ESP8266 to Tado
It's not great code, but it does work. It's probably a bad idea to use more than one.
I intend to replace it with several feeding into Home Assistant, to reduce the number of API calls
https://github.com/jon-riches/ESP8266-TADO
ps, I hesitated to publish this, if you don't understand it, it's probably not for you ;-)
0 -
Quick update - 1st version of code failed to incorporate any existing offset, so I've amended and re-posted to github.
To re-create this, you need and ESP8266, a DHT22 and enough knowledge to flash firmware onto the ESP8266 using either Platformio or the Arduino IDE.
If you use Arduino IDE you'll need to remove the #include <Arduino.h> at the beginning of the code, but other than that it should compile.
You also need your home ID, and I've just found a way to get it without needing to code: -
Login to Tado.
Open More Tools.. 'Developer Tools' in Chrome (probably similar in other browsers)
Goto 'Network' tab
Hover over any of the 'state' entries, and see the url e.g.
https://my.tado.com/api/v2/homes/12345/zones/1/state
The '12345' will be your home ID
I also now think you could use multiple devices without an issue, having seen how often Home Assistant calls the Tado API without issue!
1 -
Great stuff, just need someone to start building and selling these on eBay 😉
0 -
Pretty sure that if you used a Wemos D1 it's just 3 wires to the DHT 22, with power via USB.
Other than that it's a matter of setting up Platformio or Arduino IDE for esp8266, add the libraries, add your config to the code, compile and upload.0 -
I keep getting Authorization: Bearer _client","error_description":"Bad client credentials"}
u/n & p/w is correct, set home number and zone id.
Changed password to something a little easier and same issue. Got any ideas? Using an 8266 & DHT22.
0 -
@Rossco from the serial output, is the bearer being shown properly?0
-
Have you got any special character in your username or password? That was my problem when I got that message0
-
@Jon_On_A_Bike Output from one loop below. Stared out anything personal.
@Jacopo2 No special characters at all in either un, pw.
18:17:52.559 -> Connecting........
Connected to *******
IP address: ********
Temperature: 22.80°C
actTemp: 22.40°C
auth.tado.com
Using fingerprint 'A3 D1 64 E8 F4 FE 55 A9 05 32 D4 15 A3 15 32 22 3F 9A 8A 70'
HTTPS ConnectingConnected to web
requesting URL: auth.tado.com
HTTP request is:
POST /oauth/token HTTP/1.1
Host: auth.tado.com
Content-Type: application/x-www-form-urlencoded
Accept: */*
Cache-Control: no-cache
Host: auth.tado.com
Content-Length: 191
Connection: keep-alive
client_id=tado-web-app&grant_type=password&scope=home.user&username=****@****.co.uk&password=******&client_secret=wZaRN7rpjn3FoNyF5IFuxg9uMzYJcvOoQ8QWiIqS3hfk6gLhVlG57j5YNoZL2RtcConnection: close
request sent
headers received
==========
my.tado.com
Using fingerprint 'E3 F4 F5 81 49 0A 2D 49 BD 2C EE F6 E9 CA 9C B3 CE DE 39 8D'
HTTPS ConnectingConnected to web
requesting URL: my.tado.com
HTTP request is:
GET /api/v2/homes/*****/zones/2/state HTTP/1.1
Host: my.tado.com
Authorization: Bearer _client","error_description":"Bad client credentials"}
Accept: */*
Cache-Control: no-cache
Host: my.tado.com
Connection: close
request sent
headers received
reply was:
==========
lineT2
deserializeJson() failed: IncompleteInput
0 -
Apologies, I appear to have a regression in my code
The content-length field needs to be accurate, not fixed at 191, and is therefore dependent on the length of the password & username.
To start with I hard-coded it, than later calculated it and added it in dynamically.
Somehow the version on github doesn't do this...
Doubt I'll get it done today, but at some point I'll amend. in the meantime the value to the length of the body manually should fix it
This bit...
client_id=tado-web-app&grant_type=password&scope=home.user&username=****@****.co.uk&password=******&client_secret=wZaRN7rpjn3FoNyF5IFuxg9uMzYJcvOoQ8QWiIqS3hfk6gLhVlG57j5YNoZL2Rtc
1 -
No apology required, I've set the content length to the string size and is now working.
1 -
Code on GitHub now updated - see line 162 onward for the change
1 -
Forked it and made a couple of changes.
1 -
As an aside I'm working on a version using the ESP32 based TTGO-Display, as I picked some up from Banggood for $6.
I intend to do the automation via MQTT / Home Assistant, but as I've already ported the existing code I'll probably publish a stand alone version, too.
0 -
Working version for ESP32 TTGO-display now posted on github
Displays room name, temperature, radiator temperature and offset on screen
0 -
hi, I haven't had a look at your work yet, but I have a couple of questions (since I'm using a python script to do the same thing):
- I have noticed that when using the API I can apply offset with decimal places (unlike the Tado App), but I still haven't understood if the decimal places are ignored or actually used; do you have any idea?
- how often do you update the offset? I've noticed that every time I send an update, the valve makes a noise (like it's closing and opening) and this could be an issue for battery life (and comfort); have you noticed this problem?
0