Tiemme 4Heat Stove WiFi Controller

I couldn’t get it working. I saw some code in the service.js but it did not work right away. My main interest is to be able to automate the stove and monitor it conditions.

2 Likes

Intgration is ready to test, let me know how it’s behaving.

3 Likes

will test it as soon as i get at home :slight_smile:
I checked the code, i think the error notification should be added to the todo list :slight_smile:

Thanks for the effort!
I have added the integration, quite often the sensors are “Unavailable” for some reason is it the same for you?

What about all “Stove UNxxxx” do we have to find the names of those?

Same here, maybe i have to build a better pull mechanism.

Right, I were not able to find any info. Some model / serial number information would be great as well.

The error information is available as sensor so you are able to send notifications via automation.
I might have to update the sensor to display the text.
Or did you mean of something different?

@zauberertz
…regarding the error readback

This is the normal communication:

Tx: [“SEL”,“0”]
Rx: [“SEL”,“11”,“J30001000000000000”,“J30002000000000000”,“J30005000000000027”,“J30006000000000000”,“J30011000000000110”,“J30012000000000000”,“J30017000000000029”,“J30020000000000000”,“B20180000000000070”,“B20005000000000030”,“B20006000000000080”]

But when there is an error, the communication looks like this:
Tx: [“SEL”,“0”]
Rx: [“ERR”,“1”,“5”]

It says only that there is an error, but this is not the error number (the cause)
To get the err number (the cause) this is the next step after receiving : [“ERR”,“1”,“5”]

Tx: [“SEC”,“3”,“I30001000000000000”,“I30002000000000000”,“I30017000000000000”]
Rx: [“SEC”,“3”,“J30001000000000009”,“J30002000000000012” ,“J30017000000000038”]

and there is the error number at J30002 attribute
This is the only way to find the error number, that I managed to find out.

The error list is at this post:

I have the integration running for 2 days now.

I might have might hit a rate limit now.

Error fetching 4heat data: Invalid response from API: [Errno 111] Connection refused

I’ll try to change the the poll interval from 20 to 60 sec

1 Like

For me it’s still working, although from time to time the device itself seems to struggle with something in general because i have ping responses coming from it with up to 2-3sec, while usually should be 2-3ms

like here for example:

Request timeout for icmp_seq 21
Request timeout for icmp_seq 22
Request timeout for icmp_seq 23
Request timeout for icmp_seq 24
icmp_seq=23 ttl=64 time=2020.794 ms
icmp_seq=24 ttl=64 time=1017.730 ms
icmp_seq=25 ttl=64 time=13.670 ms
icmp_seq=26 ttl=64 time=3.466 ms
icmp_seq=27 ttl=64 time=4.125 ms
...

@azos, probably it is the network, maybe WiFi too far away?

Installed it… and it is running smoothly :slight_smile:
I checked… the error number is not working, but this is a good job already,
kudos @zauberertz

image

image

On my stove it is working OK.
I’ll check what i can do.

1 Like

@zauberertz i figured out the errors, now that is working. However, the switches are not working, coz the codes are different. Any idea to overcome this? Maybe selecting the stove type at the setup window?

@11125 i have pushed yesterday a update this is might the reason the errors are working.

The commands for the buttons are coming from the JSON and these are the same of your and my decode. be aware the buttons lag heavily.

Last thing not implemented yet is to set parameter like boiler temp or room temp.

Is an option, but as said I have not found the proper commands.

By the way my stove is:

Update Data ["CF5","0"]
0
Done, Data:
CF5,5,SYEVO0000562,000000000001,H10204050721000133,4,64
55
['CF5', '5', 'SYEVO0000562', '000000000001', 'H10204050721000133', '4', '64']

The commands at my stove for turning it on and turning it off are in the upper post

It would be nice to have 2 attributes separately for the errors
Error_Number
Error_Description

so people may choose and use it as they want without adding additional code.

Thats what i said and implemented:

UNBLOCK_CMD = b'["SEC","1","J30255000000000001"]' # Unblock
OFF_CMD = b'["SEC","1","J30254000000000001"]' # OFF
ON_CMD = b'["SEC","1","J30253000000000001"]' # ON

The numeric value is present as attribute on state and error.

Or whats your point?

at my stove these are the commands:

UNBLOCK_CMD = (cannot find it, probably it doesnt even exist)

OFF_CMD = ["SEC","1","1"]
ON_CMD = ["SEC","1","0"]

and small suggestion: when there is no errors, instead only “No”, to be changed to “No error”

This is my picture element, i have esp32 sensors on the pipes (hot, cold and exhaust pipe temp) and additional differential temp statistic

@zauberertz
Set Boiler thermostat temperature is missing too:

command:
Send: [“SEC”,“1”,“B20180000000000080”]
Receive: [“SEC”,“1”,“A20180000000000080”]

Hello,

I have a 4heat controller as well but not for a boiler but rather for a pellet stove and I have been looking for months how to control it so I am very interested in this integration…

Has anyone tested it with a pellet stove?

1 Like

@11125
the set Service in general is missing cause all values read with
[“SEL”,“0”]
and starting with “B” are changeable ones. The “A” values are the response for updates.
Starting with a “J” are just values and “I” are the query for this values.

So my intention is to create a service which is able to set all B-values.

Hope that makes sense.

1 Like

I Have as well a Pellet stove with water pocket.
My Model (Oranier / Carus Aqua 2.0)