FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mthome am 08 April 2019, 07:48:59

Titel: [gelöst] $we und $hour in DOIF
Beitrag von: mthome am 08 April 2019, 07:48:59
Hallo zusammen,

ich habe ein Problem an meiner Fenster/Thermostatsteuerung. Ich möchte, dass wenn ein Fenster aufgeht, das Heizthermostat zu geht.

Das Funktioniert auch gut. Jetz möchte ich aber, dass wenn das Fenster wieder zugemacht wird und eine bestimmte Uhrzeit ist, die Heizung wieder angeschaltet wird. Dazu habe ich ein DOIF erstellt:

([sensor.fenster.sz.Schlafzimmerfenster:basicSet] eq "255") (set heizung.sz tmEnergySaveHeating)
DOELSEIF ([sensor.fenster.sz.Schlafzimmerfenster:basicSet] eq "0")
{
if (($we==1 and $hour => 4 and $hour <9) or ($hour >= 15 and $hour <22) or ($we==0 and $hour > 3 and $hour <6))
{fhem("set heizung.sz tmHeating");
Log 1, "Heizung SZ nochmals an $we $hour";
}
}


Leider haben wohl die $we und $hour keine Werte - siehe Log:

2019.04.07 22:08:20 1: PERL WARNING: Useless use of private variable in void context at (eval 273952) line 1.
2019.04.07 22:08:20 3: eval: { if (($we==1 and $hour => 4 and $hour <9) or ($hour >= 15 and $hour <22) or ($we==0 and $hour > 3 and $hour <6)) {fhem("set heizung.sz tmHeating"); Log 1, "Heizung SZ nochmals an $we $hour"; } }


Jetzt (endlich) meine Frage: Ich dachte $hour und $we sind globale Variablen. Ist dem nicht so? Muss ich die im Perlteil selber zuweisen?
Z.B. mit ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

Danke,
mthome
Titel: Antw:$we und $hour in DOIF
Beitrag von: Damian am 08 April 2019, 08:27:11
Zitat von: mthome am 08 April 2019, 07:48:59

Jetzt (endlich) meine Frage: Ich dachte $hour und $we sind globale Variablen. Ist dem nicht so? Muss ich die im Perlteil selber zuweisen?
Z.B. mit ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();


Die Variablen sind nur in den DOIF-Bedingungen bekannt - hier herrscht die Perl-Welt, in den DOIF-Ausführungszweigen herrscht dagegen die FHEM-Welt, also keine Perl-Variablen.

Als Alternative: DOIF-Perl-Modus nutzen, hier herrscht grundsätzlich Perl-Welt, damit sind in diesem Modus die Zeitvariablen auch in if-Abfragen bekannt.

Titel: Antw:$we und $hour in DOIF
Beitrag von: Otto123 am 08 April 2019, 09:06:44
Moin,

und einfach DOIF nutzen? Warum im Ausführungsteil eine Zeitabfrage die ich in der Bedingung erledigen kann?
(([05:00-09:00|7] or [16:00-22:00] or [04:00-06:00|8]) and [sensor.fenster.sz.Schlafzimmerfenster:basicSet] eq "0")


Gruß Otto
Titel: Antw:$we und $hour in DOIF
Beitrag von: mthome am 08 April 2019, 09:19:35
Hallo Otto,

manchmal ist es so naheliegend und man erkennt es trotzdem nicht  ;D. Vielen Dank - so werde ich es machen.

Vielen Dank nochmals für Eure Hilfe!
Titel: Antw:[gelöst] $we und $hour in DOIF
Beitrag von: doman75 am 08 April 2019, 09:55:49
ich würde noch mit Fragezeichen vor den Zeiten arbeiten, sonst löst auch die Zeit aus.

Grüße
Swen
Titel: Antw:[gelöst] $we und $hour in DOIF
Beitrag von: mthome am 08 April 2019, 18:45:48
Zitat von: doman75 am 08 April 2019, 09:55:49
ich würde noch mit Fragezeichen vor den Zeiten arbeiten, sonst löst auch die Zeit aus.

Wie meinst Du das? Reicht die Klammer nicht aus?

Danke,
mthome
Titel: Antw:[gelöst] $we und $hour in DOIF
Beitrag von: Otto123 am 08 April 2019, 18:56:07
(([?05:00-09:00|7] or [?16:00-22:00] or [?04:00-06:00|8]) and [sensor.fenster.sz.Schlafzimmerfenster:basicSet] eq "0")

Dann würde die Zeit nicht triggern sondern nur der Fensterkontakt. Das ist so wie Dein Ansatz war.
Wenn Du willst das früh um 5 der Zustand des Fensterkontaktes abgefragt wird obwohl der sich gerade nicht ändert, dann mach es ohne Fragezeichen.

Steht natürlich in der Doku (https://commandref.fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger). 8)

Das Verhalten hängt auch davon ab ob dein Fensterkontakt wiederholende Events wirft obwohl sich der Zustand nicht ändert. Stichwort  event-on-change-reading.

Titel: Antw:[gelöst] $we und $hour in DOIF
Beitrag von: mthome am 08 April 2019, 18:57:44
Danke nochmals.....habe auch gerade eifrig gelesen und in sind ja wirklich viele viele Beispiele in der Doku  :-[

Schönen Abend zusammen!