FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: prozac am 17 Juni 2014, 20:19:36

Titel: if-Bedingung in Perl mit Dummy
Beitrag von: prozac am 17 Juni 2014, 20:19:36
Hallo,

ich möchte gern das Schalten meiner Homematic-Thermostate von zwei Zuständen abhängig machen:
Einerseits, dass es kein Wochentag ist und andererseits von einem Dummy, mit dem ich generell die Thermostate regeln will (Sommer- und Wintermodus).
Leider habe ich es bisher nicht geschafft, die if-Bedingung in korrekte Syntax zu bringen und hoffe hier auf euch.

Der Dummy sieht wie folgt aus:

define Heizung_an dummy
attr Heizung_an setList on off


Die if-Bedingung zusammen mit dem at-Befehl:

define mo_fr_morgens_Heizung_aus at *07:00:00 { if ( !($we) && (([Heizung_an:STATE] eq "on"))) { fhem("set ez.heizung_ClimRT_tr desired-temp 12.0") } }


Der Befehl soll morgens um 7:00 Uhr wochentags die Heizungen auf 12°C Soll-Temperatur schalten. Der Befehl zum Einschalten ist dann analog.

Kann mir bitte einer von euch sagen, wie die korrekte Syntax für mein Anliegen ist?

Vielen Dank vorab.
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: marvin78 am 17 Juni 2014, 20:23:38
Da du es in Perl willst, sollte es so aussehen.

define mo_fr_morgens_Heizung_aus at *07:00:00 { fhem("set ez.heizung_ClimRT_tr desired-temp 12.0") if (!$we && Value("Heizung_an") eq "on")}

Vom IF (groß geschrieben!) habe ich keine Ahnung.
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: Puschel74 am 17 Juni 2014, 20:23:53
Hallo,

du mischt if und IF.
Entweder oder aber mischen geht nicht.

*07:00:00 {
  if ((!($we)) && (Value("Heizung_an") eq "on")) {
    fhem("set ez.heizung_ClimRT_tr desired-temp 12.0");
  }
}


Meine Codes sind NICHT für die fhem.cfg gedacht - das gibt Fehlermeldungen.
Code ungetestet und ohne Gewähr.

Grüße

Edith: Ok, zu langsam  8)
Edith2: Code korrigiert
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: prozac am 17 Juni 2014, 20:28:46
Wow, das geht ja echt schnell hier :)

Ich habe mir schon gedacht, dass ich die Syntax von fhem und Perl nicht mischen kann. Leider war mir nicht bekannt, wie ich einen fhem-Status in Perl ausdrücke.
Der Grund warum ich das in Perl-if wollte war, dass ich nicht weiß, wie ich die Werktage in fhem-Code darstelle.

Vielen Dank für eure Hilfe!
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: marvin78 am 17 Juni 2014, 20:29:30
Dann empfehle ich dir, bevor du weiter machst, das Einsteiger-PDF zu lesen!
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: Puschel74 am 17 Juni 2014, 20:39:09
Hallo,

if = Perl und
IF = FHEM

Werktage gehen von $wday==0 bis $wday==6 (0= Sonntag wenn mich nicht alles täuscht).
(== ist der Vergleich / = wäre eine Zuweisung).

Aber ACHTUNG!
Der WeekdayTimer (WDT) geht von 1 bis 7 (das sollte man auch mal an fhem resp. Perl anpassen  ??? ).

Aber wie marvin78 schon geschrieben hat - das Einsteiger.pdf ist wirklich lesenswert  ;)

Grüße

Edith:
ZitatWow, das geht ja echt schnell hier
Naja, wenn der Hilfesuchende so schön Vorarbeit leistet ist das helfen richtig angenehm (und kann auch Spaß machen)  ;)
Titel: Antw:if-Bedingung in Perl mit Dummy
Beitrag von: Dietmar63 am 17 Juni 2014, 22:46:23
sieh dir Heating_Control an