Replies: 52 comments 9 replies
-
I would like to start with a first test field for the boiler: wwsupplyDelta - delta temp for ww load from boiler to dhw : Questions: Please correct
|
Beta Was this translation helpful? Give feedback.
-
I am a bit confused looking in more detail to the code. In lines 619-627 in boiler.cpp wwComfort is defined with offset 9. On my RC310 wwComfort is at offset 0x0D with valid values {"0":"high","216":"eco"}. |
Beta Was this translation helpful? Give feedback.
-
Steps to do:
Min/max values are only for commands, then you have to add a set-callback and min/max to the register_device_value and declare the set-callback in boiler.h and code it in boiler.cpp. Line 619ff is telegram 0x33, your boiler uses 0xEA, look at line 770 ff. |
Beta Was this translation helpful? Give feedback.
-
too much code for my old eyes :) Thanks for the clarification and I will start testing ... |
Beta Was this translation helpful? Give feedback.
-
@MichaelDvP the first steps work. The value is shown correctly with the dashboard and on web-api. Super ! May I get a bit help on the command to change the value? |
Beta Was this translation helpful? Give feedback.
-
Take a look at other writable values from the 0xEA telegram.
Instead of 0xEA you can also use BTW: the name |
Beta Was this translation helpful? Give feedback.
-
Value changes work now. Thanks, I was missing the MAKE_CF_CB(set_wwSupplyDelta) addition. 👍 I just ask myself how (and where) to add min/max values?
Yes I just took the name I had from testing. I will check names before continuing. |
Beta Was this translation helpful? Give feedback.
-
this is implemented as
to add the limits:
|
Beta Was this translation helpful? Give feedback.
-
So I should cancel my changes I made until now? |
Beta Was this translation helpful? Give feedback.
-
Adapt them to use same names as other boilers. Yes, sometimes we have to revoke changes if we find a better way. |
Beta Was this translation helpful? Give feedback.
-
@MichaelDvP I see that the enum texts are in locale_EN.h but I do not really understand the steps needed to introduce a new enum list and allocate the enum entries to hex-values for read and write. Could you please advice how to do this? |
Beta Was this translation helpful? Give feedback.
-
For a first try I would like to introduce boiler.wwcomfort - type 0xEA offset 0x0D with values {"0":"high","216":"eco"} |
Beta Was this translation helpful? Give feedback.
-
Enums are normaly numbered 0, 1, 2.., having the DeviceValueType::ENUM and a pointer to a list of entries in the option field of register_device_value(). The list is created in locale_EN.h with MAKE_PSTR_LIST() makro. boiler.wwcomfort is a bit special, because it's not really enum, but contains some fixed signed values for reducing the ww temperature. "eco" is -40°C (0xD8) and "intelligent" -20°C (0xEC). I'm not sure if other values are accepted in this field, my boiler does not have it (fixed to 0x00 (hot), not writable). You can copy the logic from telegram 0x33 to 0xEA offset 13 and modfiy the set_ww_mode() to check EA telegram and write to it. |
Beta Was this translation helpful? Give feedback.
-
The wwcomfort logic on my RC310 is different. If comfort is set to high, then the defined hysteris is used and the ww storage is heated whenever temp is below defined hysteresis - so with 6°C hysteresis approx. 5-6 times a day. With the use of eco the hysteresis is approx. 2-2.5 times as large and 2 heating cycles per day are enough. But in between the ww temp will be lower then with comfort=high. |
Beta Was this translation helpful? Give feedback.
-
The existing wwcomfort has 3 enum entries: Hot, Eco, Intelligent. What would you recommend? Use the existing one or make a new one wwcomfort1 ? |
Beta Was this translation helpful? Give feedback.
-
RC310 is a master-thermostat, there is no adaptation needed. RC200 is compatible, but a single hc thermostat (0x18 for hc 1, 0x19 for hc2, etc, Combining multiple RC200 is matched there to a "master" at 0x18). The 0x10 section is only for junkers, where 0x10 controlls hc1 and hc2 and for hc3 there is an extra thermostat. |
Beta Was this translation helpful? Give feedback.
-
I do have some difficulties reading the new variables / telegrams. Is there any way to create console or system log messages for debugging ? |
Beta Was this translation helpful? Give feedback.
-
Sure, insert wherever you want a |
Beta Was this translation helpful? Give feedback.
-
Seems to work now. Thanks so far. |
Beta Was this translation helpful? Give feedback.
-
Just a question: For RC300/310 the typeids have 8 entries in thermostat.cpp. |
Beta Was this translation helpful? Give feedback.
-
Long time we had only 4 entries, and than came this guy with more than four heatingcircuits. see #294, #297 |
Beta Was this translation helpful? Give feedback.
-
Ok understood. I made the PR for wwprio (RC310) with only 4 entries since the typeids numbers are not in a row. |
Beta Was this translation helpful? Give feedback.
-
With only 4 entries you have to take care not access or to loop through higher indices. Some loops use monitor_typeids as loopcount. I'll comment in the PR. |
Beta Was this translation helpful? Give feedback.
-
@MichaelDvP Thanks so far for your support, quality checks and patience 👍 I started to work on the holiday modes now. How can I find out within the thermostat code how many heating circuits are installed within the system? |
Beta Was this translation helpful? Give feedback.
-
As far as I understand the code for set_switchtime() within ems-esp, the code can handle Json Data for |
Beta Was this translation helpful? Give feedback.
-
@proddy yes that's what I have seen. I just ask myself if the Change Value window supports a Json-Structure -> multiple field-values to be entered in one window? One holidaymode on the RC310 consists of multiple parameters. Could I enter them in one Change Value window? |
Beta Was this translation helpful? Give feedback.
-
Is there anything I could do by myself to create a new Change Value Dialog? |
Beta Was this translation helpful? Give feedback.
-
The json in |
Beta Was this translation helpful? Give feedback.
-
Understood Michael. This leads to the question how to implement EMS+ switch times and holiday modes?
Conclusion and open questions:
What would be your recommendations? |
Beta Was this translation helpful? Give feedback.
-
No, only one switchpoint at a time, but each can be displayed, see #461. |
Beta Was this translation helpful? Give feedback.
-
I would like to add new values / entities into the code. From Discord I got from @MichaelDvP the following introduction:
There is a guide "contributing.md" how to make the PR, but for the code structure you have to read the code.
It's mostly selfexplaining.
Start with reading a simple device like switch.cpp to see the registertelegram() with it's callback process(telegramname).
In the callback the value is read by has_update(..) and publishing the value is handled by the register _device_value().
That's neary all to do.
In thermostat for hc dependend telegrams you have to add a check in heatingcircuit(telegram).
Beta Was this translation helpful? Give feedback.
All reactions