Gibt es eine Variable ähnlich $we, für die Feiertage?

2,181 views
Skip to first unread message

FHEM-Softie

unread,
Jan 6, 2012, 4:06:47 AM1/6/12
to FHEM users
Hallo liebe FHEM-Liebhaber,

"holiday2we" funktioniert bei mir prächtig, ich kann aber schlecht
zwischen Wochende, Feiertag und Schulferien unterscheiden.
Daher habe ich es wieder rausgenommen.

Dazu würde ich gerne zwei Fragen stellen:

Gibt es eine der "$we" ähnlichen Funktion ob der aktuelle Tag ein
Eintrag aus der *.holiday Datei ist?

Kann man auch zwei *.holiday Dateien nutzen, eine für Schulferien und
die andere für gesetzliche Feiertage ?

Vielen Dank,
Softie

Rudolf Koenig

unread,
Jan 6, 2012, 4:35:55 AM1/6/12
to fhem-...@googlegroups.com
> Gibt es eine der "$we" �hnlichen Funktion ob der aktuelle Tag ein

> Eintrag aus der *.holiday Datei ist?

Value("myHol") liefert "none" oder was anderes :) zurueck.
Siehe auch http://fhem.de/commandref.html#holiday


> Kann man auch zwei *.holiday Dateien nutzen, eine f�r Schulferien und
> die andere f�r gesetzliche Feiertage ?

Man kann (fast) beliebig viele holiday Instanzen anlegen, aber nur einen mit
$we verheiraten.

FHEM-Softie

unread,
Jan 6, 2012, 5:55:38 AM1/6/12
to FHEM users
Hallo Rudolf,

genau so, das habe ich gesucht.

Vielen Dank!

Hubert Melzer

unread,
Mar 16, 2012, 6:21:52 PM3/16/12
to fhem-...@googlegroups.com
Hallo FHEM-Users,

ich versuche nun schon seit einiger Zeit, in Abhängigkeit von Wochen- bzw. Wochenendtagen sowie Feiertagen
unterscheidliche Zeiten für bestimmte Aktoren zu setzen.
Dabei habe ich natürlich zunächst auf auf

define holiday2we st

gesetzt und anschließend die Datei st.holiday mit

define st holiday

eingebunden.

bei STATE wird auch entweder der definierte Feiertag oder eben "none" angezeigt.
Verwunderlich für mich ist, dass $we sofort "1" wird, wenn man

define holiday2we st

in die fhem.cfg schreibt, unabhängig davon, was in der st.holiday steht.
Selbst bei einer vollkommen auskommentierten Datei ist dieses Verhalten festzustellen,

Der nächste Versuch ging dahin, auf

define holiday2we st

zu verzichten und STATE von

define st holiday

auszuwerten.

{Value("st")}

über die Kommandozeile eingegeben liefert hier auch den Wert von STATE.

Verwende ich dieses jedoch innerhalb der fhen.cfg kommt immer ???.
Damit ist natürlich eine Auswertung zum Scheitern verurteilt.

Was mache ich falsch, dass bereits das Setzen von

define holiday2we st

dazu führt, dass $we bereits auf "1" gesetzt wird, obwohl weder Wochenende noch Feiertag ist?
Warum verhält sich {Value("st")} anders, je nach dem, ob es in der Kommandozeile benutzt wird
oder innerhalb der .cfg-Datei?
Gibt es eventuell eine anderen Weg, den Wert von STATE abzufragen, da ja GET auch nicht funktioniert?

Viele Grüße
Hubert


UliM

unread,
Mar 16, 2012, 7:00:11 PM3/16/12
to fhem-...@googlegroups.com
Hi,
bei mir funktioniert das prima (alles aus meiner fhem.cfg kopiert):

define Bayern holiday
attr global holiday2we Bayern

define HeizungAn holiday

define HeizungAnCheck at *10:00 {\
if (Value("HeizungAn") ne "none") {\
   fhem "set ez_FHT desired-temp 21";;\
  }\
}

Dient bei mir dazu, die Heizung am Rückkehrtag von Dienstreisen rechtzeitig wieder anzuschmeissen, damits abends schön warm ist :)

Häufiger Stolperstein: $we wird m.W. nur einmal um Mitternacht gesetzt und bleibt dann den ganzen Tag gleich.

Gruß, Uli

Hubert Melzer

unread,
Mar 17, 2012, 3:26:10 PM3/17/12
to fhem-...@googlegroups.com
Hi Uli,

es geht ja auch nicht um $we ansich. Die Variable wird ja auch richtig gesetzt wenn Wochenende ist und man holiday2we außer Acht lasst.
Es geht darum, dass bei mir $we sofort "1" wird, sobald man die Definition dafür einfügt und eine entsprechende Datei existiert, ganz gleich,
was da drin steht, auch, wenn die entsprechende Feiertage auskommentiert sind.

Gruß Hubert

Rudolf Koenig

unread,
Mar 17, 2012, 7:25:51 PM3/17/12
to fhem-...@googlegroups.com
> Es geht darum, dass bei mir $we sofort "1" wird, sobald man die Definition
> daf�r einf�gt und eine entsprechende Datei existiert, ganz gleich,

> was da drin steht, auch, wenn die entsprechende Feiertage auskommentiert
> sind.

$we is 1 falls Wochenende ist ($wday ist 0 oder 6) ODER der Status des mit
holiday2we gesetzten holiday Instanzes nicht none ist. Letzteres kann man auch
einfach mit list oder mit {Value("holidayname")} pruefen. $we wird beim
ausfuehren von jedem Perl-Code neu berechnet, das holiday Instanz rechnet aber
nur einmal am Tag.

unimatrix

unread,
Mar 18, 2012, 4:32:56 AM3/18/12
to fhem-...@googlegroups.com
Hallo hm.pos,

da es bei Uli und anderen richtig geht müssen wir wohl iwas falsch machen aber bei mir geht es auch nicht allerdings ist da $we imer 0, und da ich es eh komplexer wollte und auch abfragen wollte, was morgen ist, habe ich es so gemacht. Ich habe bisher nicht weiter geprüft was ich mit $we falsch mache es war mir in dem Moment egal weil u.g. Code eh das liefert was ich brauche. Das könntest du auch bei dir nutzen und du trägst einfach nur die Abwesenheitszeiten ein. Wenn dann MORGEN nicht abwesend ist, geht die Heizung ab einer bestimmten Uhrzeit an, vll. ja erst später, als wenn du schon heute nicht abwesend wärst...

Die Tage habe ich in dem Holiday-Device "urlaub" ganz normal...

define urlaub_heute dummy
define at_urlaub at 03:00:00 {fhem "set urlaub_heute ".fhem("get urlaub ".strftime("%m-%d",localtime()));;}
{fhem "set urlaub_heute ".fhem("get urlaub ".strftime("%m-%d",localtime()));;}

define urlaub_morgen dummy
define at_urlaub_morgen at 03:00:00 {fhem "set urlaub_morgen ".fhem("get urlaub ".strftime("%m-%d",localtime(time+86400)));;}
{fhem "set urlaub_morgen ".fhem("get urlaub ".strftime("%m-%d",localtime(time+86400)));;}

Volker

unread,
Mar 18, 2012, 7:28:20 AM3/18/12
to fhem-...@googlegroups.com
Hallo Hubert,
du hast oben geschrieben das du " define holiday2we st " in deiner cfg hast.
Probier doch mal " attr global holiday2we st ", so ist meiner Meinung nach die Syntax.
Siehe auch http://fhem.de/commandref.html#global

MfG

Volker

Hubert Melzer

unread,
Mar 20, 2012, 1:37:01 PM3/20/12
to fhem-...@googlegroups.com
Hallo Volker,
du hast natürlich Recht. Aber das war nur ein Verschreibsel in meinem Post. Natürlich steht im Script
"attr global holiday2we st".

Auf jedem Fall konnte ich mich gestern wie heute freuen, da mein Rollo statt wie gewünscht um 6:00 Uhr, erst um 7:45 Uhr aufging.
Für das Rollo war Feiertag, für mich aber Arbeitstag.

Gruß Hubert
Reply all
Reply to author
Forward
0 new messages