Skip to content
This repository has been archived by the owner on Oct 4, 2021. It is now read-only.

RC300 - setpoint temp is 0.0 C when mode is set (day, night, auto) #256

Closed
ekivel opened this issue Dec 9, 2019 · 77 comments
Closed

RC300 - setpoint temp is 0.0 C when mode is set (day, night, auto) #256

ekivel opened this issue Dec 9, 2019 · 77 comments
Labels
bug Something isn't working

Comments

@ekivel
Copy link

ekivel commented Dec 9, 2019

Hello,

Here is the info from the console of the device:
Thermostat stats:
Thermostat: RC300/RC310/Moduline 3000/Bosch CW400/W-B Sense II (DeviceID:0x10 ProductID:158 Version:33.04)
Thermostat time is 13:23:14 09/12/2019
Heating Circuit 1
Current room temperature: 21.9 C
Setpoint room temperature: 0.0 C
Mode is set to auto
Day Mode is set to night

I am ready to help with the debug, just let me know pls which telegrams to capture.

Here are the current logs with log t:

(13:40:07) Thermostat -> UBAMaster, type 0x35, telegram: 90 08 35 00 11 01 (CRC=A9) #data=2
(13:40:07) Thermostat -> UBAMaster, type 0x35, telegram: 90 08 35 03 37 (CRC=74) #data=1
(13:40:10) Thermostat -> All, type 0x01A5, telegram: 90 00 FF 0F 01 A5 01 91 (CRC=FD) #data=2
Publishing thermostat data via MQTT
(13:40:10) Thermostat -> All, type 0x01A5, telegram: 90 00 FF 0D 01 A5 00 4F (CRC=01) #data=2
Publishing thermostat data via MQTT
(13:40:10) Thermostat -> All, type 0x01A5, telegram: 90 00 FF 08 01 A5 00 4F (CRC=51) #data=2
Publishing thermostat data via MQTT
Fetching data from EMS devices
Publishing boiler data via MQTT
Publishing hot water and heating states via MQTT
Publishing thermostat data via MQTT
(13:40:13) Thermostat -> Me, type 0x01A5, telegram: 90 0B FF 00 01 A5 00 DB 23 00 00 00 00 2E 00 4F 01 01 03 00 4F 01 91 00 00 11 01 00 08 8E 00 (CRC=A8) #data=25
Publishing thermostat data via MQTT
(13:40:14) Thermostat -> Me, telegram: 90 0B FF 00 01 A6 (CRC=18)
(13:40:14) Thermostat -> Me, telegram: 90 0B FF 00 01 A7 (CRC=19)
(13:40:14) Thermostat -> Me, telegram: 90 0B FF 00 01 A8 (CRC=16)
(13:40:14) Thermostat -> Me, type 0x06, telegram: 90 0B 06 00 13 0C 0D 09 29 07 00 00 10 FF 00 (CRC=95) #data=11

thx

@proddy
Copy link
Collaborator

proddy commented Dec 9, 2019

ah, not this issue again! It'll be great if you can help. What we need is the data from the 0x01A5 telegram. You can track these using log w 1a5. Then using this table we're looking for the temperature which will be stored is a single hex value. Check your thermostat for the real setpoint temp and then see if you can find it somewhere in that block of 25 bytes.

For example I see you received 90 0B FF 00 01 A5 00 DB 23 00 00 00 00 2E 00 4F 01 01 03 00 4F 01 91 00 00 11 01 00 08 8E 0

The data block is therefore 00 DB 23 00 00 00 00 2E 00 4F 01 01 03 00 4F 01 91 00 00 11 01 00 08 8E 0 and my code reads the setpoint temperature value from positions 4 and/or 7 depending. I don't look at the modes which I think is the problem. So in your example this would be values 0 and 0, hence why you are seeing 0 degrees. The real values could be 0x23 = 17.5 (night temp) or 0x2E = 23.0 (auto mode temp) - can you check and I'll modify the code?

@proddy proddy added the bug Something isn't working label Dec 9, 2019
@proddy proddy changed the title Setpoint temp is 0.0 C when day mode is set to night Setpoint temp is 0.0 C when day mode is set to night (EMS+) Dec 9, 2019
@ekivel
Copy link
Author

ekivel commented Dec 9, 2019

Looks like thermostat is sending 00 in byte 4 and 6 when predefined night and day temps are used in auto mode (it is called temperature levels in the manual). I don't see the required data in any of the telegrams.
Now I configured the thermostat in another way: not to use the temp levels but freely adjustable temp values it is solved this issue.
Thanks anyway.

@proddy
Copy link
Collaborator

proddy commented Dec 10, 2019

the correct method I think is for EMS-ESP to detect which mode its in and then extract the data from the telegram depending on the mode type. So in your example when day mode is night it should take the data at position 3 (like 0x23 in the example above). Can you check so I can implement it so that it works for everyone?

@ekivel
Copy link
Author

ekivel commented Dec 10, 2019

I played with settings yesterday, changed night temp multiple times, but 0x23 did not change.

@moustic999
Copy link

@ekivel Can you tell me which brand/model is your thermostat ? Also which modes are really available on it ( I expect auto and manual ).
Regarding the auto mode, how did you configure your calendar ? does it use absolute or relative temp ?
do you switch between mode or between temp ? What are the mode you have ( eco, comfort1, comfort2, comfort3 , .. ) not all should be there...

What is the behavior when being in Eco mode ? in the heater setting you can choose that heating is stopped when mode is eco ? is it the case in your heater ? that could explain ...

which heater is it ? heat pump , gas boiler ?

the 01A5 message does not provide the mode configured and their temperature setting.
only current mode and next mode can be retrieved, and the current setpoint temp.

in you case the message tells that you are in eco, that next setpoint will be confort2. but no temperature setpoint and the byte 2 ( value 23 ) is quite strange, each time it is 2x... we get nothing in the current setpoint ...

@moustic999
Copy link

Can you try to send this :
send 0B 90 F7 00 0F FF 01 A5
and provide me the output returned by your thermostat.

This is a byte mapping representing which value are really used by your thermostat for the message 01A5 .

@ekivel
Copy link
Author

ekivel commented Dec 11, 2019

It is a Bosch CW400. Two modes are manual and auto. In auto mode you can specify heating temp (day) and setback temp (night) it is so called temperature levels and it is changes automatically based on schedule. I need to enter absolute temp values.
During setback period no set temperature is reported via the bus (see the logs sent earlier). During heating all parameters are there as in the wiki.
The boiler is a gas boiler (Bosch Condens 3000W).

@moustic999
Copy link

in this document (sorry french) which is the profesional installation guide, at page 22 they explain what are the different mode for "type d'abaissement" (lowering type)
depending on what is set for you, you can have or not the value filled in the message. So can you check how is it configured for you

@moustic999
Copy link

moustic999 commented Dec 11, 2019

the explanation extracted from installation guide in french :

Si le chauffage doit être arrêté pendant les phases d’abaissement (la protection antigel reste active), régler dans le menu principal Chauff. -- Réglages de la température -- Abaissement -- Arrêt (mode arrêt, le réglage du type d’abaissement n’est plus pris en compte dans le comportement du
régulateur).

@glitter-ball
Copy link

I have a W-B Sense II and have also seen this happen. I'm running my system with discrete temperature settings for each period rather than three fixed temperatures : frost, eco and comfort. I assumed this was why the system was reporting zero overnight, when the temperature is actually set at 15ºC.

Happy to send some logs if that helps.

@tbr
Copy link

tbr commented Jan 3, 2020

On my Buderus RC300, I also have this issue.

@proddy
Copy link
Collaborator

proddy commented Jan 3, 2020

@moustic999 any idea how to fix this?

@glitter-ball
Copy link

Have looked a bit more at this today. I set the heating down to 15C for a couple of hours while we went out. HA tracked the setpoint change and showed the system in Manual.

Overnight the system stays in Auto (which is reasonable) but HA reports 0C as the setpoint. I’ve a feeling the Sense II controller also reports zero overnight - I’ll try and check it if I remember. This is odd because I’d expect it to report the frost protection setpoint at least. That said, there are a couple of threshold temperature settings which might be causing this - I never fully got my head around them. I’ll read the manual again.

I guess there may be another locations to get this data from. On my system, the full 0x15A telegram from the Sense II spans two messages so there’s a lot of other info. One of the bytes shows the next setpoint temp so I may look and see what it’s transmitting in that.

@moustic999
Copy link

moustic999 commented Jan 3, 2020 via email

@glitter-ball
Copy link

glitter-ball commented Jan 5, 2020

I played with my Sense II with this. There's a setting for setback threshold on the user's heating menu. If you set a temperature below this, the system appears to switch off and reports a set temperature of zero and status as 'Off'. If you set a temperature above this, the system then reports the set temperature and status as 'Setback'. I remember struggling to get my head around the purpose of this when I set the system up and an e-mail from W-B tech support helped a bit.

@proddy
Copy link
Collaborator

proddy commented Jan 31, 2020

so fix is when using an RC300 and its in day or night mode, just don't show the setpoint temp???

@grappa24
Copy link

grappa24 commented Feb 1, 2020

same problem with my RC300 type thermostat:
When setting mode to auto then seltemp goes to "0" (using 1.9.5b23)

topic "thermostat_data" only has the values "seltemp" and "mode"

@proddy
Copy link
Collaborator

proddy commented Feb 2, 2020

@grappa24 did you ever see a setpoint temp shown in EMS-ESP with any other mode setting?

The problem is that we're reading the values from the 0x1A5 telegram and for some reason they all have 0 values. So depending on the mode I'll need to find the temperatures from some other telegram. If you can provide some example telegrams (like 0x1A5) that would be helpful.

@proddy proddy changed the title Setpoint temp is 0.0 C when day mode is set to night (EMS+) RC300 - setpoint temp is 0.0 C when mode is set (day, night, auto) Feb 2, 2020
@grappa24
Copy link

grappa24 commented Feb 3, 2020

with peasure I will support finding a solution for this issue. But since I'm not really experienced in sniffing and telegrams could you please give me a hint how to produce the telegrams you need?

@proddy
Copy link
Collaborator

proddy commented Feb 3, 2020

ok in telnet, log w 1a5. This should show all the 0x1A5 traffic. Then change modes on the thermostat and capture the logging making note on when the changes were made.

@grappa24
Copy link

grappa24 commented Feb 3, 2020

my boiler has two internal temp levels, called daytemp and nightemp (Heizen and Absenken in german). In my case daytemp is set to 23, nightemp set to 20. As I see it, daytemp and nighttemp can't be set via EMS.

When the boilers internal clock is on "daytemp", the EMS command "set auto" works fine and sets the seltemp to 23 (in my case):
telnet log 1a5 set auto daytemp (23).log

But when the boilers internal clock is on "nighttemp", the EMS command "set auto" sets seltemp to 0:
telnet log 1a5 set auto nighttemp (20).log

@proddy
Copy link
Collaborator

proddy commented Feb 3, 2020

I see in "auto nighttemp" file the line (43:17:02.544) 90 0B FF 00 01 A5 80 00 01 00 3D 00 00 2E 02 6B 01 01 03 02 6B 04 25 00 00 11 01 00 FF FF 00 which has 0 for the seltemp. The value of 20 degrees should be a hex value of 0x28 hidden in telegram but its not there. What I can do is just ignore any temps that are 0 - maybe that'll work?

@grappa24
Copy link

grappa24 commented Feb 3, 2020

yes, please try this, I will test again, but on wednesday first ...
but beware: the log above was produced with 1.9.4 - sorry
will test with 1.9.5b then ...

@proddy
Copy link
Collaborator

proddy commented Feb 4, 2020

should be the same as 1.9.5

@sq4bja
Copy link

sq4bja commented Feb 7, 2020

I had the same problem with RC310. I noticed that EMS-ESP changes the way the heating temperature is switched. Before connecting the EMS-ESP, the daytime temperature was 21, the night temperature 20. After connecting, the daytime temperature remained 21, the night temperature 0. After entering the RC310 controller settings, I noticed that the way of selecting the circulation temperature was changed. Earlier indoor temperature was taken into account. Currently outside temperature. This causes the RC310 itself to switch to 0C at night. After changing the operating mode with reduced temperature, EMS-ESP shows the correct temperature set day and night.

@proddy
Copy link
Collaborator

proddy commented Feb 7, 2020

This needs to looking into by someone who has an RC300/RC310 and willing to invest some time looking into the telegrams and adjusting the code. There's not much I can do here, unless someone wants to loan me a thermostat. Just saying.

@tbr
Copy link

tbr commented Feb 7, 2020

I'll try to monitor the values at my place (RC310). Just as a side-note, I scripted HA to not accept 0 as valid temp and just show 17 (or whatever value I use at night time). It's a hack, but for me it's good enough.

@sq4bja
Copy link

sq4bja commented Feb 9, 2020

I don't know, when Hot tap water indicator is working, but now i`m running warm wather heating manualy and indicator still shows off::
Hot tap water: off

@martinSezman
Copy link

I think EMS-ESP should get Setpoint room temperature from telegram 01A5,01A6..
send 0B 90 FF 03 01 01 A6 - get current Setpoint room temperature
send 0B 90 FF 07 01 01 A6 - get next Setpoint room temperature ( should be hide for manual mode)

I noticed also some new value in offset 10 of 01A6 telegram if is set temporary temperature (works if thermostat is in Auto mode only) by

send 0B 10 FF 08 01 BA 27 ( set temporary 19.5)

Request send 0B 90 FF 0A 01 01 A6

10 00 FF 0A 01 A6 05

bit3: 1-temporary temp ?

@moustic999
Copy link

@proddy 1.9.5b30 do not show Setpoint room temperature if thermostat is in Auto mode. there is question mark.
After switch to Manual mode is OK. But after switch again to Auto, temperature value stay on Manual setpoint.

I don't have the same behavior on my system, The setpoint temp is always shown And I use it a lot.
I remain always in auto mode and I increase the setpoint when I need

@martinSezman
Copy link

I don't have the same behavior on my system, The setpoint temp is always shown And I use it a lot.
I remain always in auto mode and I increase the setpoint when I need

It worked for me when I had b28 or earlier, but for b29 and b30 it don't

@moustic999
Copy link

It worked for me when I had b28 or earlier, but for b29 and b30 it don't
everything works fine for me in b29, not yet tried b30

@proddy
Copy link
Collaborator

proddy commented Feb 11, 2020

I made a change in b30 that only the setpoint would be read (offset 4) from 0x01A5 when its in day mode. So this is probably why it shows as ? when in Auto. I'm not sure where to find the setpoint when in Auto - could this offset 7?

Can someone help?

e.g.

10 00 FF 00 01 A5 80 00 01 30 28 00 30 28 01 54 03 03 01 01 54 02 A8 00 00 11 01 03 FF FF 00
                                    ^
                                    |
                                 offset 7

@moustic999
Copy link

moustic999 commented Feb 11, 2020 via email

@proddy
Copy link
Collaborator

proddy commented Feb 11, 2020

in 01A5 there's also the next setpoint temp when in auto mode, at offset 8 (data[7] in my code). Maybe this is the one?

https://emsesp.github.io/docs/#/RC3xx-Thermostats?id=type-01a5

@moustic999
Copy link

moustic999 commented Feb 11, 2020 via email

@martinSezman
Copy link

@proddy the telegram 01A5 is well documented on your wiki [https://emsesp.github.io/docs/#/RC3xx-Thermostats?id=type-01a5].
And RC300/RC310 thermostat works exactly in this way

no matter what is current mode (manual or auto,) telegram 01A5 contain current and next set point.
offset 3 = current set point - known also as comport or day temperature
offset 7 = next temperature set point. known also as eco or night temperature
For manual mode offset3=offset7.

in addition
offset 9 + offset 10 - give remaining time until nearest change point in the schedule

You can also get temperature levels from telegram 01B9:
offset 2 - comfort2 level = Auto Day temp
offset 4 - eco level = Auto Night temp
offset 8 - temporary setpoint temperature = Auto - temporary temp changed by user . it will be valid until nearest change point in the schedule
offset 10 - manual setpoint temperature

@martinSezman
Copy link

Please look at logs from my RC310. HC2 (01A6) in manual mode. offset3=offset7=20 = 16
(22:01:55) 10 0B FF 00 01 A6 00 A4 21 20 15 00 20 20 05 A0 02 01 03 02 57 01 69 00 00 11 01 02 06 64 00

HC2 (01A6) in auto mode (night/eco). current=offset3=1C=14 offset7=1D=14.5
(22:08:55) 10 0B FF 00 01 A6 00 A4 21 1C 15 00 1C 1D 02 50 01 01 03 02 50 01 70 00 00 11 01 04 06 64 00

and also telegram 01BA (for HC2) - look at offset 2,4 and 10.
22:15:42) 10 0B FF 00 01 BA FF 28 1D 28 1C 03 00 FF FF 00 20 01 E1 20 01 0F 05 00 00 01 22

@proddy
Copy link
Collaborator

proddy commented Feb 12, 2020

thanks @martinSezman , this is all starting to make sense now.

So $1M question is: what should be displayed in the telnet window and what should be published in the MQTT topic?

  • is showing the mode Manual and Auto important?
  • is showing eco/night and comfort important?
  • there is always a 'current setpoint' and a 'next temperature' (offsets 3 & 7). Should both be displayed and sent in the MQTT package?
  • I've seen examples where offset 3 is 0x00, e.g. 10 00 FF 00 01 A5 00 D7 21 00 00 00 00 30 01 84 01 01 03 01 84 01 F1 00 00 11 01 00 08 63 0 which is actually the origin of this github issue. Do you in which scenario this can happen?

@moustic999
Copy link

moustic999 commented Feb 12, 2020 via email

@martinSezman
Copy link

For now I'm operate via telnet only , so for me is very important to have current and full information status in telnet. For me:

  • the mode Manual and Auto - important
  • eco/night and comfort - important - should be visible in Auto mode only
  • 'current setpoint' - (offsets 3) - important
  • 'next temperature' (offsets 7) - important - should be visible in Auto mode only

of course I would like to see more informations like HC Summer/Winter/Auto mode (telegram 01AF), temporary temperature change in Auto mode, hour of next temperature change, hour of previous temperature change and so on. I believe that it will be possible to add these functions in the future.

Regarding MQTT, I'm using this protocol to collecting data in influxdb and visualise them in Grafana. For now I have everything what I need.
I think is worth considering to give users configuration option to choice values present in MQTT.

proddy added a commit that referenced this issue Feb 13, 2020
@proddy
Copy link
Collaborator

proddy commented Feb 13, 2020

1.9.5b32 has the first changes based on your comments above

@sq4bja
Copy link

sq4bja commented Feb 13, 2020

Boiler temperature still doesn`t work:
Outside temperature: 0.4 C
Boiler temperature: ? C
Exhaust temperature: ? C
Pump modulation: 64 %

@proddy
Copy link
Collaborator

proddy commented Feb 13, 2020 via email

@sq4bja
Copy link

sq4bja commented Feb 13, 2020

Sorry, but in beta 28 it works. I`m using Buderus GB072 and RC310 controller.

@proddy
Copy link
Collaborator

proddy commented Feb 13, 2020

@sq4bja I want to keep this issue focused on fixing the setpoint issue on an RC3x0 thermostat, as the title indicates. If there is a bug with the boiler temp then great that you found it but please create a separate issue. Otherwise we'll be mixing up topics.

@moustic999
Copy link

works fine for me : (1.9.5b32)
Thermostat data:
Thermostat: RC300/RC310/Moduline 3000/Bosch CW400/W-B Sense II (DeviceID:0x10 ProductID:158 Version:11.08)
Thermostat time is 20:47:24 13/02/2020
Heating Circuit 1
Current room temperature: ? C
Setpoint room temperature: 21.0 C
Mode is set to auto
Mode type is set to comfort

@martinSezman
Copy link

martinSezman commented Feb 13, 2020

many thanks @proddy

there is some issue. info shows setpoint 16 when currently for auto mod is 14. Please find below info result and 01A6 telegram for HC2.
Heating Circuit 2
Current room temperature: 16.5 C
Setpoint room temperature: 16.0 C
Mode is set to auto
Mode type is set to eco
(22:35:53) 10 0B FF 00 01 A6 00 A5 21 1C 11 00 1C 1D 02 35 01 01 03 02 35 01 8B 00 00 11 01 04 06 77 00

@sq4bja is right. setpoint works correctly in b28:
Heating Circuit 2
Current room temperature: 16.5 C
Setpoint room temperature: 14.0 C
Mode is set to auto
Day Mode is set to night

@martinSezman
Copy link

I suspect issue in commit 55225f7 in this place:
// setpoint as in position 3 and also 6 (EMS_OFFSET_RCPLUSStatusMessage_currsetpoint). We're sticking to 3 for now. // don't fetch temp if in nightmode if (EMS_Thermostat.hc[hc].day_mode) { _setValue8(EMS_RxTelegram, &EMS_Thermostat.hc[hc].setpoint_roomTemp, EMS_OFFSET_RCPLUSStatusMessage_setpoint); // convert to single byte, value is * 2 }

@proddy
Copy link
Collaborator

proddy commented Feb 14, 2020

@martinSezman ok, now you're confusing me! You said earlier

'current setpoint' - (offsets 3) - important
'next temperature' (offsets 7) - important - should be visible in Auto mode only

But there can only be 1 setpoint, so displaying both is confusing. Correct?

If so, should the logic therefore be:

  • when in Auto mode, show offset 3 (comfort/day setpoint temp) otherwise show offset 7 (eco/night setpoint temp) ?

@moustic999
Copy link

moustic999 commented Feb 14, 2020 via email

proddy added a commit that referenced this issue Feb 14, 2020
@martinSezman
Copy link

current setpoint is always in offset 3.
Now, in b33 it works very well. Thanks !
offset 7 and other options you can ignore for now. We can back to this matter later.
We are waiting for EMS-ESP v2 ;)

@proddy
Copy link
Collaborator

proddy commented Feb 15, 2020

closing, if setpoint comes back as 0.0 then we'll reopen. I want to get 1.9.5 out so I can focus on 2.0.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

8 participants