FHEM > Codeschnipsel

Sommerzeit/Normalzeit als DOIF Objekt

<< < (2/6) > >>

Damian:

--- Zitat von: Loredo am 13 Oktober 2015, 10:28:47 ---Ich wollte statt dst() gerne ein richtiges Reading nutzen können und habe mir dafür dieses DOIF erstellt:



--- Code: ---define DST DOIF

(
my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);


([02:00] or [03:00]) and
$isdst
)


DOELSEIF
(
my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);


([02:00] or [03:00]) and
!$isdst
)





alias      Daylight Time
cmdState   summer|normal
event-on-change-reading state
eventMap   summer:Sommer normal:Normal initialized:---
group      Season Details
icon       time_clock
room       Environment

--- Ende Code ---

--- Ende Zitat ---

Es ist schon erstaunlich, was so alles funktioniert - auch für mich. Auf diese Art und Weise lassen sich sogar ganze Perl-Programme in einer DOIF-Bedingung unterbringen :)

Allerdings ist in diesem konkreten Fall  der Aufruf von localtime überflüssig, weil ich es bereits intern in DOIF vor der Auswertung der Bedingung tue. Auch die DOELSEIF-Abfrage ist überflüssig, weil es die Negation des DO-Falls ist.

Daher reicht schon:


--- Code: ---define DST DOIF (([02:00] or [03:00]) and $isdst) DOELSE
--- Ende Code ---

Gruß

Damian

cwagner:
das ist ja noch geiler! Und damit zähle ich jetzt bei mir 23 DOIF  :) 8)

tik-tak-tok:
Hallo,

ich habe nun folgendes DOIF angelegt um die Sommerzeit/Winterzeit abzufragen.

--- Code: ---define SommerzeitWinterzeit (([02:00] or [03:00]) and $isdst) DOELSE

--- Ende Code ---

Nun würde ich gerne, sobald festgestellt wird "Es ist Winterzeit" folgenden set Befehl "set ThermostatProfile send_to_device BadezimmerWinter [BadzimmerHeizung_Clima]" mittels separatem DOIF absenden lassen (einmalig).
Sobald dann irgendwann wieder "Es ist Sommerzeit" festgestellt wird würde ich gerne den Befehl "set ThermostatProfile send_to_device BadezimmerSommer [BadzimmerHeizung_Clima]" absenden lassen.

Wie stelle ich das an? :-)
Vermutlich muss ich, wie bei einem Türkontakt auch, den State des DOIF "SommerzeitWinterzeit" prüfen (lassen).

Wäre hier folgendes möglich?
([SommerzeitWinterzeit] eq "cmd1" (set ThermostatProfile send_to_device BadezimmerWinter [BadzimmerHeizung_Clima]" und alternativ für den Sommer ([SommerzeitWinterzeit] eq "cmd2" (set ThermostatProfile send_to_device BadezimmerSommer [BadzimmerHeizung_Clima] möglich?

Bzw. falls nein, welchen State sollte das DOIF "SommerzeitWinterzeit" denn jeweils liefern?

Muss ich beim DOIF "SommerzeitWinterzeit" irgendwelche Attribute (außer do always) setzen? :-)

Vielen Dank und fhem`ige Grüße :-P

Damian:

--- Zitat von: tik-tak-tok am 29 März 2017, 21:06:02 ---Hallo,

ich habe nun folgendes DOIF angelegt um die Sommerzeit/Winterzeit abzufragen.

--- Code: ---define SommerzeitWinterzeit (([02:00] or [03:00]) and $isdst) DOELSE

--- Ende Code ---

Nun würde ich gerne, sobald festgestellt wird "Es ist Winterzeit" folgenden set Befehl "set ThermostatProfile send_to_device BadezimmerWinter [BadzimmerHeizung_Clima]" mittels separatem DOIF absenden lassen (einmalig).
Sobald dann irgendwann wieder "Es ist Sommerzeit" festgestellt wird würde ich gerne den Befehl "set ThermostatProfile send_to_device BadezimmerSommer [BadzimmerHeizung_Clima]" absenden lassen.

Wie stelle ich das an? :-)
Vermutlich muss ich, wie bei einem Türkontakt auch, den State des DOIF "SommerzeitWinterzeit" prüfen (lassen).

Wäre hier folgendes möglich?
([SommerzeitWinterzeit] eq "cmd1" (set ThermostatProfile send_to_device BadezimmerWinter [BadzimmerHeizung_Clima]" und alternativ für den Sommer ([SommerzeitWinterzeit] eq "cmd2" (set ThermostatProfile send_to_device BadezimmerSommer [BadzimmerHeizung_Clima] möglich?

Bzw. falls nein, welchen State sollte das DOIF "SommerzeitWinterzeit" denn jeweils liefern?

Muss ich beim DOIF "SommerzeitWinterzeit" irgendwelche Attribute (außer do always) setzen? :-)

Vielen Dank und fhem`ige Grüße :-P

--- Ende Zitat ---

Wenn du das Attribut cmdState summer|normal bei deinem SommerzeitWinterzeit-DOIF setzt, kannst du in jedem anderen Modul den Status von SommerzeitWinterzeit auf summer oder normal prüfen, bei einem DOIF-Modul z. B.


--- Code: ---DOIF ([SommerzeitWinterzeit] eq "summer") (set bla on)
--- Ende Code ---

tik-tak-tok:
Dankeschön!

DOIFs entsprechend geändert :-)

Scheint zu funktionieren.
Wie könnte ich es nun gestalten das nicht mehrfach die Profile übertragen werden?
Ich sag mal, sobald Sommerzeit eingetreten ist und die Profile gesendet wurden...ist das ja schick und OK, aber dann könnte der Befehl ja "pausieren" bis "Winter bzw. normal" eintritt.

Danke & Grüße

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln