if-Bedingung in Perl mit Dummy

Begonnen von prozac, 17 Juni 2014, 20:19:36

Vorheriges Thema - Nächstes Thema

prozac

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.

marvin78

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.

Puschel74

#2
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
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.

prozac

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!

marvin78

Dann empfehle ich dir, bevor du weiter machst, das Einsteiger-PDF zu lesen!

Puschel74

#5
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)  ;)
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

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