Syntax bei der Heizungssterung korrekt?

Begonnen von t1me2die, 24 Oktober 2016, 12:50:29

Vorheriges Thema - Nächstes Thema

t1me2die

Hallo liebe Community,

ich bin gerade dabei meine DECT Comet (Heizungsthermostate) so zu konfigurieren, wie ich es in der FritzBox getan habe, um mich endgültig von der Benutzeroberfläche von AVM lösen zu können und alles zentral in FHEM verwalten zu können, dazu gehe ich meine Schaltvorgänge durch und versuche diese in den folgenden Code umzuwandeln. Leider bin ich mir nicht ganz sicher, ob die Syntax richtig ist und ich das erreiche, was ich möchte.

Mein Ziel:
Heizkörper im Schlafzimmer soll
Mo, Di, Mi, Do um 16:30Uhr für insgesamt 45Minuten auf 21Grad geschaltet werden, wenn das Fenster im Schlafzimmer (HM_4E3565) das "state" -> closed hat.
Danach soll der Heizkörper wieder auf 17Grad herunter geschaltet werden.
Um 20Uhr soll derselbe Heizkörper erneut auf 21Grad geschaltet werden, wenn auch diesmal das Fenster im Schlafzimmer (HM_4E3565) das "state" -> closed hat.
45Minuten später soll dieser Heizkörper auch wieder auf 17Grad geschaltet werden.

Zitat

define SZ_Heizung_An_Woche at *16:30:00 \
  { \
  if (\
     ($wday == 1) || ($wday == 2) || ($wday == 3) || ($wday == 4) && (ReadingsVal("HM_4E3565","state",0) eq "closed")\
     ) \
          { fhem("set FBDECT_fbahahttp_10971_0292656 desired-temp 21 ;;;; \
            define SZ_Heizung_Aus at +00:45:00 set FBDECT_fbahahttp_10971_0292656 desired-temp 17 ;;;; \
            define SZ_Heizung_An1 at +03:30:00 \
              { \
              if (ReadingsVal("HM_4E3565","state",0) eq "closed")) \
                 { fhem("set FBDECT_fbahahttp_10971_0292656 desired-temp 21") } \
              } ;;;; \
            define SZ_Heizung_Aus1 at +04:15:00 set FBDECT_fbahahttp_10971_0292656 desired-temp 17") \
   }\

Was sagen die Profi's? Funktioniert das so oder habe ich es einfach viel zu umständlich gemacht?

Freue mich auf eure Tips :)

Gruß
Mathias

DeeSPe

#1
So wird das nicht funktionieren!
Die öffnende geschweifte Klammer muss mit in die define Zeile.
Habe mal ein paar Anpassungen gemacht:

99_myUtils.pm:
sub HKCheck()
{
  if ($wday =~ /^(1|2|3|4)$/ && (Value("HM_4E3565") eq "closed"))
  {
    fhem "set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=21 desired-temp 21";
    fhem "define SZ_Heizung_Aus at +00:45:00 set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=17 desired-temp 17";
   }
}


define SZ_Heizung_An_Woche_Nachmittag at *16:30:00 {HKCheck()}
define SZ_Heizung_An_Woche_Abend at *20:00:00 {HKCheck()}

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

t1me2die

Grandios.
Sprich ich rufe dann nur noch meine Unterroutine auf und habe es schön übersichtlich.

Soweit habe ich das fast verstanden.

Was bezweckst du mit?

Zitat
FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=17

Wird damit die Temperatur nur auf 17 Grad gesetzt, wenn diese nicht schon 17Grad ist?

Gruß
Mathias

DeeSPe

Zitat von: t1me2die am 24 Oktober 2016, 13:53:09
Was bezweckst du mit?

Wird damit die Temperatur nur auf 17 Grad gesetzt, wenn diese nicht schon 17Grad ist?

Ganz genau!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#4
Zitat von: DeeSPe am 24 Oktober 2016, 13:03:53
So wird das nicht funktionieren!
Die öffnende geschweifte Klammer muss mit in die define Zeile.
Habe mal ein paar Anpassungen gemacht:

99_myUtils.pm:
sub HKCheck()
{
  if ($wday =~ /^(1|2|3|4)$/ && (Value("HM_4E3565") eq "closed"))
  {
    fhem "set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=21 desired-temp 21";
    fhem "define SZ_Heizung_Aus at +00:45:00 set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=17 desired-temp 17";
   }
}


define SZ_Heizung_An_Woche_Nachmittag at *16:30:00 {HKCheck()}
define SZ_Heizung_An_Woche_Abend at *20:00:00 {HKCheck()}

Gruß
Dan

Die Sache hat noch einen Haken habe ich gerade gesehen!
Die Variable $wday steht in der 99_myUtils nicht zur Verfügung, also muss sie mit übergeben werden!
Also dann so:

99_myUtils.pm:
sub HKCheck($)
{
  my ($wday) = @_;
  if ($wday =~ /1|2|3|4/ && (Value("HM_4E3565") eq "closed"))
  {
    fhem "set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=21 desired-temp 21";
    fhem "defmod -temporary SZ_Heizung_Aus at +00:45:00 set FBDECT_fbahahttp_10971_0292656:FILTER=desired-temp!=17 desired-temp 17";
   }
}


define SZ_Heizung_An_Woche_Nachmittag at *16:30:00 {HKCheck($wday)}
define SZ_Heizung_An_Woche_Abend at *20:00:00 {HKCheck($wday)}

Gruß
Dan

EDIT: Habe define noch in defmod geändert und -temporary ergänzt.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

t1me2die

Danke :)

Ich glaube du hast eine schließende Klammer nach dem closed vergessen, wenn ich das richtig sehe?

DeeSPe

Zitat von: t1me2die am 24 Oktober 2016, 19:59:05
Danke :)

Ich glaube du hast eine schließende Klammer nach dem closed vergessen, wenn ich das richtig sehe?

Recht hast Du! Hab's oben geändert.
Kann passieren, war ja aus'm Kopf und ungetestet!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

t1me2die

War keine Kritik, will es ja auch verstehen und irgendwie fehlte mir da etwas  ;D
Ich werde es mal testen, noch einmal recht herzlichen Dank :)

Gruß
Mathias

DeeSPe

Zitat von: t1me2die am 24 Oktober 2016, 20:05:36
War keine Kritik, will es ja auch verstehen und irgendwie fehlte mir da etwas  ;D
Ich werde es mal testen, noch einmal recht herzlichen Dank :)

Gruß
Mathias

Habe ich auch nicht als Kritik verstanden! :)

Viel Spaß beim Testen!
Es sollte Deinen hier gestellten Anforderungen entsprechen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe