Variable Schaltschwellen in HeatingControl verwenden?

Begonnen von locodriver, 09 Oktober 2014, 12:44:14

Vorheriges Thema - Nächstes Thema

locodriver

Hallo, ich habe folgende HC-Definition laufen:

BD_Vent_auto_TH 08:00|70 20:00|105 set @ desired %

Jetzt will ich die feste Schaltschwelle durch eine variable ersetzen:

BD_Vent_auto_TH 08:00|{(80-abs($month-7)*2)} 20:00|105 set @ desired %

D.h. die Schaltschwelle soll sich in Abhängigkeit des Kalendermonats ändern. Wenn ich den Ausdruck in die Befehlszeile von fhem eingebe, dann wird das richtige Ergebnis (im Okt. 74) ausgegeben. HC interpretiert den Ausdruck aber nicht als Zahl - obwohl ja nur Zahlen verwendet werden und $month auch numerisch ist. Es kommt die Fehlermeldung:

2014.10.09 08:00:00 3: BD_Vent_auto_TH: set desired value:{(80-abs($month-7)*2)}, desired value needs a numeric parameter

In der HC-Übersicht wird der State als:

{(80-abs($month-7)*2)} wiederegegeben.

Wo liegt hier der Fehler, bzw. kann HC überhaupt die Schwellwerte intern "berechnen"? Wenn nicht, dann wäre das eine Anregung meinerseits, denn sonst müsste man ja eine extra Variable definierien und einmal täglich befüllen.

Danke Uwe.
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Dietmar63

#1
Der Schaltwert wird nicht berechnet, sondern als Textkonstante an das Gerät gesendet.

Du kannst aber am Ende Perl-Code anstelle von "set..." angeben und dort alles Mögliche ausrechnen lassen oder eigene Funktionen aufrufen:
define HCW Heating_Control WZ_Heizung 07:00|16 Mo,Tu,Th-Fr|16:00|18.5 20:00|12       {meineFunktion("@", "%")}

in meineFunktion() musst du dann selbst fhem("set <geraet> <value>") aufrufen.

Bitte dann verbose auf 5  setzen. Dann kannst du im Log sehen was passiert.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Dietmar63

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

locodriver

Bin noch nicht dazu gekommen - und ich muss sagen, mir erschließt sich dein Tipp noch "nicht so richtig".
Wie "kommt" das Ergebnis der Berechnung in die Einschaltzeit (8 Uhr)?
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Dietmar63

#4
Bitte die Definition von HC folgendermaßen ändern:
BD_Vent_auto_TH      08:00|morgens    20:00|105              {meineDynamischeFunktion("@", "%")}tis

bitte dann die folgende Fuktion in die 99_Utils einbauen:

########################################################################
sub meineDynamischeFunktion() {
   my ($geraet, $parameter) = @_;
   
   my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time());
   Log 3, "geraet------------>$geraet";
   Log 3, "parameter------------>$parameter";
   
   my $dynParameter;
   if ($parameter eq "morgens") {
      $dynParameter = int((80-abs($mon-7)*2));
   } else {
      $dynParameter = $parameter;
   }
   
   Log 3, "dynParameter------------>$dynParameter";
   my $command = "set $geraet dynParameter";
   Log 3, "command------------>$command";
   fhem($command);
   
}


$dynParameter = int((80-abs($mon-7)*2));
musst du eventuell noch verbessern. int()  liefert ganzahlige Werte.

Wenn es funktioniert, kannst du die Zeilen mit Log 3 ... herausnehmen.

den Namen der Funktion (meineDynamischeFunktion()) kannst du ändern in was du willst. Bitte auch in der Definition ändern.

Verbose 5 einschalten nicht vergessen.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Puschel74

Hallo,

mensch Dietmar63 - du hast auch ein Durchhaltevermögen  ;)

Aber kurzer Einwand:
Zitatbitte dann die folgende Fuktion in die 99_Utils einbauen:
Besser in die 99_myUtils.pm einbauen.
Beim nächsten update mit einer Änderung an der 99_Utils.pm kommt dann wieder der nächste Beitrag mit - der Code funktioniert nicht mehr.

Nur so als Vorschlag gemeint.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Dietmar63

bei 256 eigenen Beiträgen ist er kein totaler Anfänger mehr.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Puschel74

Hallo,

Zitat von: Dietmar63 am 11 Oktober 2014, 18:50:02
bei 256 eigenen Beiträgen ist er kein totaler Anfänger mehr.

In der Theorie stimme ich dir voll zu  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

locodriver

@Puschel: Ich habe auch noch andere Hobbies als fhem - es soll einfach nur funktionieren und manchmal will (oder muss) man mal was ändern oder auch ausprobieren...

@Dietmar: Danke für die ausführliche Hilfe, damit werde ich klar kommen. BTW - den Funktionswert brauche ich nicht noch runden, es kommen nur Ganzzahlen raus  ;)

Schönen Sonntag,

Uwe
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster

Puschel74

Deine "anderen" Hobbies in Ehren.
Bist du dir sicher das es dann ok ist andere für deine "Probleme" denken zu lassen?
2 Lichtschalter wären dann wohl einfacher und du kannst deinen anderen Hobbies nachgehen und andere müssten nicht für dich denken.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

locodriver

Sehr konstruktiv - manchmal denke ich, einige hier wollen sich in einer bestimmten Art und Weise überbieten - schade.
Ist jetzt sehr OT - musste aber sein.
fhem 6.0 auf Rpi3 Bookworm
HM-LAN-CFG (FW 0.965), HM-MOD-UART, 2x HM-TC-IT-WM-W-EU, 4x HM-Sec-RHS und 3x HM-CC-RT-DN, 6x HM-LC-Bl1-FM mit je 1x Somfy-Motor,
2x HM-LC-SW2-FM für Licht und Lüfter, 2x HM-PB-6-WM55, Alexa, Jeelinkcross, CUL, CUNO2, IR-Blaster