THZ Tecalor (LWZ Stiebel Eltron) module support and code improvement.

Begonnen von immi, 02 Februar 2015, 11:42:16

Vorheriges Thema - Nächstes Thema

TheTrumpeter

FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

immi

Zitat von: TheTrumpeter am 09 August 2020, 09:24:51
Seems that my initial request would be the best solution for some of the guys there...
therefore there is a discussion, and as long as it is polite, I always appreciate others opinions.

TheTrumpeter

Well, seems that it has come to an end there.

If you decide to go somehow in the direction I've initially pointed to just give me a hint. Maybe my already available code could be reused although an experienced Perl-developer might think it is not efficient enough.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

immi

new version 0.186 committed.
implemented new helper function THZ_Val("register", position or "subregistername", "defaultval")
the following 3 commands are nearly equivalent
{THZ_Val("sGlobal",5)}
{THZ_Val("sGlobal","returnTemp")}
{(split ' ',ReadingsVal("Mythz","sGlobal"))[5]}


possible application in userreadings
e.g.
Old: still supported

attr Mythz userReadings insideSetTemp:sHC1.* {(split ' ',ReadingsVal("Mythz","sHC1",0))[21]}, insideTemp:sHC1.* {(split ' ',ReadingsVal("Mythz","sHC1",0))[27]}, OutsideTemp:sGlobal.* {(split ' ',ReadingsVal("Mythz","sGlobal",0))[1]}


New: shorter and easier to read

attr Mythz userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, OutsideTemp:sGlobal.* {THZ_Val("sGlobal",1)}



@Willy: if you like the feature, would you update your config template, please?

TheTrumpeter

Zitat von: immi am 09 August 2020, 17:29:25
new version 0.186 committed.
implemented new helper function THZ_Val("register", position or "subregistername", "defaultval")
the following 3 commands are nearly equivalent
{THZ_Val("sGlobal",5)}
{THZ_Val("sGlobal","returnTemp")}
{(split ' ',ReadingsVal("Mythz","sGlobal"))[5]}

Thank you.
This makes it much easier to extract a value from a reading as you can just specify the message-name ("returnTemp") instead of counting the words.

Unfortunately it does not help with regard to sharing of code snippets. So I will continue with my "abstraction layer"; I've already started to define the message-names.
Does anybody know a good dictionary for technical abbreviations? Then I would define the message-names based on that; otherwise I will reuse something that was not intended to be used for heatpumps.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

immi

Zitat von: TheTrumpeter am 10 August 2020, 12:20:09
Thank you.
you are welcome, but please test it carefully.
Zitat
Unfortunately it does not help with regard to sharing of code snippets.
Maybe a little: the code snippets will be much easier to read.
Zitat
So I will continue with my "abstraction layer"; I've already started to define the message-names.
Does anybody know a good dictionary for technical abbreviations? Then I would define the message-names based on that; otherwise I will reuse something that was not intended to be used for heatpumps.
This is not the final solution: 0.186 is still beta  :)
Happy that you are considering working on an "abstraction layer".
Untill now I used the wording from the tecalor manual (good or bad, they needed less documentation).
The hard work is to make a good documented mapping; some automatismus in the module will follow.
immi

Heiner

Hello,

given the current temperatures I have a question regarding passive cooling.

It pre-activates if outside temp is more than 3K above target inside Temp.
Then as soon as Temp is going down to target inside Temp minus 3K the vent goes on, predomenantly taking the warm air out, so that via open windows cooler fresh air can go in.

so far so good.

I have now 35 Degrees outside in overnight Temp goes down to  about 22.
Inside I have in the evening 27, Target would be 20.

Now passive cooling will not work as the night is not cool enough, even it would help to cool down a little.
Can I somehow change this 3K below target inhouse Temp to get it more efficently being working, or do I need to chnage the config of my Heating system in terms of target inside Temp?

How best to do it if needed?

some rule like: whenever outside temp is 10K above inside Target (night temp likly beyond target inside Temp)
and if inside Temp is more than 5K above Target inside temp
set  target inside Temp +5K at 18:00 ( hotest time of day) for the next 11 hours (because at 10:00 passive colling stops anyhow)

Thanks for letting me know

Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

sunrise

Hello! My "quick & dirty" solution some years ago was to set the inside target temperature (P1) to e.g. 29°C. I have not used passive cooling since, though, and am not sure if it worked as desired and efficiently enough. Maybe you have to play around with the P1 setting. Furthermore, be sure to have the parameters correctly set that keep the heating off. Someone recently posted here about his own "passive cooling" setting by directly addressing the in and out fans. Maybe that would be the better and certainly more flexible solution. Since my firmware is very old, I have stopped playing around with it and therefore cannot help further, sorry.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

TheTrumpeter

Zitat von: Heiner am 12 August 2020, 09:21:20
I have now 35 Degrees outside in overnight Temp goes down to  about 22.
Inside I have in the evening 27, Target would be 20.
If you read the manual you would come to the impression that it should already work as long as you have a remote-control. Unfortunately it does not, at least not for my FW-version. Istead of taking the real inside-temperature it takes the desired WINTER temperature!

So theoretically you could set the winter temperatures to "real inside temperature - 5K" every day at 09:59:59.
But you would then have the situation that passive cooling will not be released if it is not warm enough outside that day. So you also have to consider the weather forecast if you do so.
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

Heiner

Thanks for the responses.

@Trumpeter: ...thats why I intended to say I only put a rule in pace once it is really hot (let says from 30 Degree onward.
if it is only a little hotter than the about 20 degree target over the day, likely it becomes cold enough ( 20-3 degree) over night to do the cooling.
but if super hot, the coldest hours are likely not cold enough to start cooling, but nevertheless would bring my home a bit close to the target temp.

@sunrise: yeah, the alternative to manipulating the inside temp target temporarily, would be to manipulate the fan setting temporarily.
effectively its roughly the same: if super hot, at a specific time for some hours, define input fan to 0 and output fan to some high value
it likely saver as putting the target inside temp up and in a surprising super cool night the heating kicks in...

but it seems the passive cooling function as such in the system, can not be adjusted to work on hot nights as well.

ok so how do i code the rule now?

define X notify Heizung:AussenTemp.* {if (time.now()) eq "17:00:00") && (ReadingsVal("Heizung", "AussenTemp", "")) >= 30)) {fhem("at 08:00" set Heizung:p99startUnschedVent. 3")}

clearly the above is just my thinking but given I am not a perl coder, this unlikly is going to work. Can this all somehow work in a single notification, or do i need a combination of NOTIFY and AT ?

Thanks again for your support.
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

immi

Zitat von: TheTrumpeter am 12 August 2020, 10:27:06
If you read the manual you would come to the impression that it should already work as long as you have a remote-control. Unfortunately it does not, at least not for my FW-version. Istead of taking the real inside-temperature it takes the desired WINTER temperature!
I have never noticed the bug for my firmware. Nevertheless since years, I keep the same "set temp" for winter and sommer because, it happen often that you go in wintermode also during nice clear summernights.
my p49SummerModeTemp is 16°C+-2.5
e.g. see attached

TheTrumpeter

Zitat von: immi am 13 August 2020, 17:39:01
I have never noticed the bug for my firmware.
Do you use passive cooling? Otherwise you wouldn't notice.

Zitat von: immi am 13 August 2020, 17:39:01
Nevertheless since years, I keep the same "set temp" for winter and sommer because, it happen often that you go in wintermode also during nice clear summernights.
my p49SummerModeTemp is 16°C+-2.5
e.g. see attached
I think besides that parameter you also use a very short filter time. Otherwise that won't happen the same day passive-cooling is released.

You could switch to DHW-mode during summer to avoid any unwanted heating, but as far as I remember you do not want to change a single parameter via FHEM to avoid getting a cold house or cold water by not detecting a FHEM-malfunction, correct?
FHEM auf RPi3, THZ (LWZ404SOL), RPII2C & I2C_MCP342x (ADCPiZero), PowerMap, CustomReadings, RPI_GPIO, Twilight, nanoCUL (WMBus für Diehl Wasserzähler & Regenerationszähler für BWT AqaSmart), ESPEasy, TPLinkHS110

immi

Zitat von: TheTrumpeter am 13 August 2020, 17:55:35
Do you use passive cooling? Otherwise you wouldn't notice.
I used that between 2012 and 2014; but I cannot notice it anyhow now, because I keep the same "set temp" for winter and sommer
Zitat
I think besides that parameter you also use a very short filter time. Otherwise that won't happen the same day passive-cooling is released.
true
Zitat
You could switch to DHW-mode during summer to avoid any unwanted heating,
exactly what I am doing since years, directly from fhem; I also have a doif allerting me if it changes to automatic (e.g. after a blackout).
Zitat
you do not want to change a single parameter via FHEM to avoid getting a cold house or cold water by not detecting a FHEM-malfunction, correct?
Not true; I trust my code.
I change all the parameters via FHEM: I have not used the tecalor touch-control since years.
Nevertheless, I try to avoid too many writes (max 10 per week), hoping the rw-memory of my tecalor lives longer 

Heiner

Hi,

I usualy use never fan stage 3, hence I modified it to have minimal input and max output.
Then It set p43UnschedVent3 to 180min

and finaly I put in a rule to sitch this on:
Zitatdefine cooling at *05:00 {if (ReadingsVal("Heizung", "AusenTemp", "") >= 17) {fhem("set Heizung p99startUnschedVent 3")}}

now effectivly only if passive cooling is not working (in hot nights) my cooling function dies the job in between of 5 and 8 A.M.
Idealy I replace the 17 with the target room Tempreature -3

Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

immi

Hi Heiner
your code is fine, but maybe doif is more flexible
- check for the the time between 4am and 5am
- triggers 2 times (my tecalor sometimes ignores the p99)
- if you have a [Heizung:InsideTemp] replace it like [Heizung:AusenTemp] > [Heizung:InsideTemp] - 3
you may need some brakets; not tested
- doif accepts average values  and much more


define cooling  DOIF ([4:00-05:00] and [Heizung:AusenTemp] > 17 ) (set Mythz p99startUnschedVent 3) (set Mythz p99startUnschedVent 3)
attr cooling cmdpause 7200
attr cooling devStateIcon cmd_1:vent_ventilation_level_manual_m cmd_2:vent_ventilation_control
attr cooling do always
attr cooling wait 3,30