Hi
hier noch einmal mein Problem...
eines vornweg ich bin ein absoluter Neuling auf diesem Gebiet...
Ich habe über FHEM ((Fritzbox 7390 + CUL 868) (die CUL 433 ist noch auf dem Postweg)) meine "Schaltung" der Weihnachtsbeleuchtung realisiert.
So weit so gut. An Wochentagen andere Schaltzeiten als am Wochenende --> das funktioniert ja schon einmal.
Nun soll an den Feiertagen die Beleuchtung den ganzen Tag leuchten. Ich probiere jetzt schon keine Ahnung 5 Tage und bekomme das einfach nicht hin. :(
Würde das gern mit dem WeekDaytimer realisieren.
Hier noch ein Auszug aus meiner fhem.cfg
##########################################################################################
##### Sektion ELRO #####
#### Weihnachstbeleuchtung ####
### Fensterbeleuchtung ###
define ELRO_01010_A IT F0F0F0FFFF FF F0
attr ELRO_01010_A IODev CUL_1
attr ELRO_01010_A alias Fensterbeleuchtung
attr ELRO_01010_A group WeihnachtenZSU
attr ELRO_01010_A model itswitch
attr ELRO_01010_A room Weihnachten
define FB_WE at *07:30 { if ($we) { fhem("set ELRO_01010_A on-till 09:00") } }
define FB_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_A on-till 08:30") } }
define FB_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_A on-till 22:00") } }
define FB_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_A on-till 22:00") } }
### Bergmann_Engel ###
define ELRO_01010_AB IT F0F0F00FFF FF F0
attr ELRO_01010_AB IODev CUL_1
attr ELRO_01010_AB alias Bergmann_Engel
attr ELRO_01010_AB group WeihnachtenZSU
attr ELRO_01010_AB model itswitch
attr ELRO_01010_AB room Weihnachten
define BE_WE at *07:30 { if ($we) { fhem("set ELRO_01010_AB on-till 09:00") } }
define BE_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_AB on-till 08:30") } }
define BE_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_AB on-till 23:00") } }
define BE_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_AB on-till 22:00") } }
### Weihnachtsbaum_Balkon ###
define ELRO_01010_B IT F0F0FF0FFF FF F0
attr ELRO_01010_B IODev CUL_1
attr ELRO_01010_B alias Weihnachtsbaum_Balkon
attr ELRO_01010_B group WeihnachtenZSU
attr ELRO_01010_B model itswitch
attr ELRO_01010_B room Weihnachten
define WB_WE at *07:30 { if ($we) { fhem("set ELRO_01010_B on-till 09:00") } }
define WB_WT at *06:00 { if (!$we) { fhem("set ELRO_01010_B on-till 08:30") } }
define WB_WE_ABEND at *15:00 { if ($we) { fhem("set ELRO_01010_B on-till 22:00") } }
define WB_WT_ABEND at *15:30 { if (!$we) { fhem("set ELRO_01010_B on-till 23:00") } }
#### Weihnachstbeleuchtung ENDE ####
und die Sachsen.holiday
# Format für einzelne Tage: 1 MM-DD <Text>
1 01-01 Neujahr
1 01-06 Heilige Drei Koenige
1 05-01 Tag der Arbeit
1 08-15 Mariae Himmelfahrt
1 10-03 Tag der deutschen Einheit
1 11-01 Allerheiligen
1 12-24 Weihnachten
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
1 12-31 Silvester
1 12-14 Testfeiertag
# Osterbezogene Feiertage # Format: 2 <relative Tage von Ostern> <Text>
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingsten
2 60 Fronleichnam
5 -1 Wed 11 23 Buss und Bettag
### Urlaube ###
# Format: 4 MM-DD MM-DD <Text>
4
Kann mir da jemand weiterhelfen?
Hallo,
ZitatWürde das gern mit dem WeekDaytimer realisieren.
Lt. diesem Link http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874]http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874]http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874 (http://forum.fhem.de/index.php/topic,10011.msg108874.html#msg108874)
ist eine Abfrage auf $we in Arbeit aber wohl noch nicht eingebaut.
Grüße
Hallo,
ich löse das separat über eine Feiertage-Datei über die holiday Funktion:
NRW_Feiertag.holiday
# festes Datum
1 01-01 Neujahr
1 05-01 Tag der Arbeit
1 10-03 Tag der Deutschen Einheit
1 11-01 Allerheiligen
1 12-24 Heiligabend
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
1 12-31 Silvester
# abhängig von Ostersonntag
2 -48 Rosenmontag
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingstmontag
2 60 Fronleichnam
Zur Anzeige wird noch etwas ähnlich einem dummy definiert:
define NRW_Feiertag holiday
Die Abfrage läuft dann ähnlich der Weekend-Nutzung:
if (!($we) && $value{NRW_Feiertag} eq "none".......
So realisiere ich auch die Steuerung während Urlaub über die Urlaub.holiday.
VG
Manuel
Hallo,
die "Sachsen.holiday" hat der TE ja bereits.
$we wird bei Wochenenden und Einträgen in dieser *.holiday ja auch auf 1 gesetzt.
Nur eine direkte Abfrage auf $we im WeekdayTimer ist lt. angegebenem Link noch nicht implementiert.
Mit einem Dummy liese sich dies zwischenzeitlich lösen - gute Idee.
Ein at definieren das täglich auf $we prüft und bei 1 einen dummy auf on (oder off je nachdem) schaltet und im WeekdayTimer noch auf diesen dummy prüfen.
So in die Richtung:
define Wochenende dummy
define Wochenende_pruef at *00:05:00 {
if ($we) {
fhem("set Wochenende on");
}
else {
fhem("set Wochenende off");
}
}
und im Weekdaytimer dann für Wochenende bzw. Feiertage ein
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(Value("Wochenende") eq "on");}
und für alle anderen Tage
define FB_WE WeekdayTimer FB_WE Mo-So|08:30|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(Value("Wochenende") eq "off");}
Grüße
Edith: Sollte auch ohne dummy klappen (ich brauch nen Kaffee 8) )
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if($we)}
und für alle anderen Tage
define FB_WE WeekdayTimer FB_WE Mo-So|08:30|on Mo-So|22:00|off {fhem("set ELRO_01010_A %") if(!$we)}
so ist es richtig:
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off ($we)
($we) wir in echten Perlcode verwandelt.
Es gibt noch die Idee $we in Mo-So,$we|09:00|on aufzunehmen, aber das ist nicht so einfach wie es aussieht.
http://forum.fhem.de/index.php/topic,16399.msg111333.html#msg111333 (http://forum.fhem.de/index.php/topic,16399.msg111333.html#msg111333)
Deshalb bitte zunächst diese Variante einsetzen. Ich hoffe du schaffst es noch bis Weihnachten.
Du kannst in der Bedingnung ($we) alles Mögliche Abfragen:
($wday==1)
(ReadingsVal(xx,yy,zz) eq "irgendwas")
(Value("gerät"))
Wenn es nicht läuft bitte für das zu prüfenden Gerät das Attribut verbose auf 5 setzen, dann bekommst du detaillierte Information, was gesendet wird.
Tipp: Die Zeiten in den Weekdaytimern kann man in der Detailübersicht im def während dass sie laufen ändern, um beispielsweise zeitnahe Schaltungen auszuprobieren(siehe Anhang). Um $we zu prüfen einfach den aktuellen Tag in der holiday zu einem Feiertag machen.
http://forum.fhem.de/index.php/topic,17170.msg112549.html#msg112549 (http://forum.fhem.de/index.php/topic,17170.msg112549.html#msg112549)
Hallo,
da der TE aber seine Elro schalten will sollte es nicht so lauten?
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off (!$we)
Darüber bin nämlich gestolpert als ich den WeekdayTimer für mein Fensterlicht ausprobiert habe.
Mit dem Code
define FB_WE WeekdayTimer FB_WE Mo-So|09:00|on Mo-So|22:00|off ($we)
wird das Device FB_WE geschaltet und nicht die Steckdose - oder lieg ich da falsch?
Grüße
Ist richtig. Ich habe mir die Details nicht so genau angesehen. Der zwei Parameter ist natürlich das Gerät, das geschaltet werden soll.
Danke für die schnelle Hilfe
ich habe jetzt einen Dummy erstellt und ein define welches den Dummy schalten soll klappt aber leider noch nicht so richtig naja besser gesagt gar nicht.
define Feiertag dummy
define Feiertag_pruef at *15:01:00 {\
if (Value("Sachsen") eq "none") {fhem("set Feiertag off")} else {fhem("set Feiertag on")}}
das ist der Auszug aus meiner fhem.cfg
Hallo,
die Lösung mit dem Dummy was ein Schnellschuss von mir - das kannst du vergessen.
Nimm das und es sollte klappen:
define FB_W WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off (!$we)
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off ($we)
Einfach copy&paste in die FHEM-Befehlszeile und gut ist.
Die Werte kannst du ja später noch bearbeiten.
Hallo Puschel74
in Deinem letzten Post definierst du unterschiedliche Schaltzeiten Woche und Wochenende nur möchte ich gern das die Beleuchtung an den Feiertagen den ganzen Tag leuchtet somit war der ansatz mit dem dummy ganz gut.
Sollte doch dann so funktionieren oder?
define FB_W WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if (!$we) && (Value("Feiertag") eq "off")
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if ($we) && (Value("Feiertag") eq "off")
define FB_WFT WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off if (Value("Feiertag") eq "on")
Hallo,
wenn in der Sachsen.holiday entsprechende Einträge vorhanden sind wird $we automatisch auf 1 gesetzt wenn ein Feiertag ist.
Also trifft dieser Timer
define FB_WE WeekdayTimer ELRO_01010_A Mo-So|08:30|on Mo-So|22:00|off ($we)
am Wochenende als auch bei einem Feiertag zu.
Die Zeiten kannst du ja anpassen wie du das möchtest - und auch noch mehr eintragen.
Ganz so wie es dir gefällt.
Grüße
Hi,
ja stimmt schon aber :) somit werden doch Wochenende und Feiertag gleich behandelt. Ich möchte aber den Feiertag als eigenständigen "Wert" haben
da am Feiertag die Beleuchtung den ganzen Tag leuchten soll egal ob Wochenende ist oder nicht. Am Wochenende gelten andere Schaltzeiten als in der Woche außer es ist eine Feiertag.
Gruß Kai
Dann zusaetzlich zu $we auch noch $wday abfragen.
Oder fhem("get holidayInstance today") auf "none" pruefen.
Hallo,
ZitatIch möchte aber den Feiertag als eigenständigen "Wert" haben
Ach so.
Sorry das hatte ich überlesen.
Zitat Rudi:
ZitatOder fhem("get holidayInstance today") auf "none" pruefen.
Zitat Ende
Also guckst du.
define Feiertag_pruef at *15:01:00 {
if (("get Sachsen today") eq "none") {
fhem("set Feiertag off");
}
else {
fhem("set Feiertag on");
}
}
sollte so klappen.
Kleiner Tipp am Rande:
Vergiss das es eine fhem.cfg gibt.
Als Anfänger kannst du darin nur mehr kaputt machen als du meinst.
Verwende die FHEM-Befehlszeile und lass FHEM den Rest machen - das macht das schon richtig ;)
Neues notify, at , Device was auch immer immer! über die Befehlszeile anlegen:
z.B.: notify
define <Name_den_du_wählen_kannst> notify <Auf_welches_Gerät_soll_ich_reagieren>:<Und_worauf_bei_dem_Gerät_genau> {}
Ein at sieht ähnlich aus:
define <Name_den_du_wählen_kannst_1> at <und_nun_die_Uhrzeit> {}
Einfache notify und at findest du ja im Einsteiger.pdf und in der commandref
Die beiden Namen sind nur deswegen unterschiedlich (einmal ohne und einmal mit "_1") weil ein Name in FHEM nur einmal vergeben werden darf - sonst gibts ne Fehlermeldung.
Du gehst als nun erstmal her und gibst oben in die Befehlszeile ein:
delete Feiertag_pruef
(damit löschen wir erstmal dein at sauber aus der fhem.cfg raus).
Nun gibst du wiedr in die Befehlszeile ein
define Feiertag_pruef at *16:55:00 {}
(oder einen anderen Zeitpunkt - kann ja sein das du den Beitrag erst später liest ;) ).
Nun sollte dich FHEM bereits in die Detailansicht gebracht haben.
Dort hast du nun eine Zeile die mit DEF beginnt und so aussehen sollte:
Zitat*16:55:00 {}
Nun erstmal beherzt auf DEF (die 3 Buchstaben) klicken und du kansnt das at (sowie auch ein notify oder Device oder was auch immer) bearbeiten.
Nun machst du das draus:
*16:55:00 {
if (("get Sachsen today") eq "none") {
fhem("set Feiertag off");
}
else {
fhem("set Feiertag on");
}
}
Anschliessend unten auf <modify Feiertag_pruef> klicken und das FHEM-LogFile im Auge behalten - dort werden die Fehlermeldungen ausgespuckt die meine Codes produzieren ;D
Wenn der Dummy Feiertag existiert sollte dieser auf on stehen wenn der Zeitpunkt rum ist (es sei den in Sachsen ist heute ein Feiertag - ich wohne in BW und bin gebürtiger Össi ::) hab also ein Alibi das ich Eure Feiertage nicht auswendig kenne).
Wenn nicht steht im LogFile eine Fehlermeldung.
Grüße
P.S.: Kann die Texte mal jemand rauskopieren und irgendwie in ein "Anfänger Band 1" schreiben?
Hi Puschel74
habe das jetzt so gemacht wie Du es mir geschrieben hast. Jedoch setzt es den Dummy Feiertag immer auf "on" egal ob Holiday "none" ist oder nicht. Ich komm hier einfach nicht weiter...
Feiertag_pruef
*00:01:00 {
if (("get Sachsen today") eq "none") {
fhem("set Feiertag off");
}
else {
fhem("set Feiertag on");
}
}
und ein WeekDayTimer Wochentag und keine Feiertag
ELRO_01010_AB Mo-So|06:00|on Mo-So|08:30:00|off Mo-So|15:30|on Mo-So|22:00:00|off (!$we) && (Value("Feiertag") eq "0ff")
und aus Auszug aus dem LOG
2013.12.15 23:15:00 5: exec at command Feiertag_pruef
2013.12.15 23:15:00 5: Cmd: >{
if (("get Sachsen today") eq "none") {
fhem("set Feiertag off");
}
else {
fhem("set Feiertag on");
}
}<
2013.12.15 23:15:00 5: Cmd: >set Feiertag on<
2013.12.15 23:15:00 4: dummy set Feiertag on
2013.12.15 23:15:00 5: Triggering Feiertag (1 changes)
2013.12.15 23:15:00 5: Notify loop for Feiertag on
2013.12.15 23:15:00 5: redefine at command Feiertag_pruef as *23:15:00 {
if (("get Sachsen today") eq "none") {
fhem("set Feiertag off");
}
else {
fhem("set Feiertag on");
}
}
setze man den verbose von
ELRO_01010_AB Mo-So|06:00|on Mo-So|08:30:00|off Mo-So|15:30|on Mo-So|22:00:00|off (!$we) && (Value("Feiertag") eq "0ff")
auf 5
dann siehst die Details des WD.
hier (!$we) && (Value("Feiertag") eq "0ff") würde ich nochmals klammern:
ELRO_01010_AB Mo-So|06:00|on Mo-So|08:30:00|off Mo-So|15:30|on Mo-So|22:00:00|off ( (!$we) && (Value("Feiertag") eq "0ff"))
"0ff" würde ich dann eventuell noch klein schreiben, je nach dem was du in Feiertag hineinschreibst.
Kann es sein dass du 0ff anstatt Off in der Definition abfragst?!
Also mit Null anstatt o?
Hallo,
ZitatJedoch setzt es den Dummy Feiertag immer auf "on" egal ob Holiday "none" ist oder nicht.
Was steht denn sonst in der Sachsen.holiday drinnen?
Ein Sonntag ist kein Feiertag und deine holiday müsste hier "none" zurück liefern.
Es sei den du hast den Sonntag in die sachsen.holiday richtig mit aufgenommen.
Und wie Dietmar schon gesagt hat:
((!$we) && (Value("Feiertag") eq "0ff"))
nochmal Klammern
aber dafür sollte sich eine Fehlermeldung im LogFile finden lassen.
Und wie TeeVau gesagt hat:
ZitatKann es sein dass du 0ff anstatt Off in der Definition abfragst?!
schreibst du in den Dummy nicht On oder Off sondern on oder off - also klein geschrieben.
FHEM ist case sensitiv.
Grüsse
Und wichtig, off mit "o" und nicht mit "Null" schreiben :-)
Falsch:
Value("Feiertag") eq "0ff
Richtig:
Value("Feiertag") eq "off"
Hi zusammen
noch einmal Danke an alle die sich mit meinem Problem beschäftigt haben! Jetzt läuft es so wie es soll. Der Fehler lag in der Feiertag-pruef die jetzt so aussieht
*00:01:00 {if ((Value("sachsen") eq "none")) {fhem("set Feiertag off")} else {fhem("set Feiertag on")}}
Ich sag mal aller Anfang ist schwer. ;)
Mfg Kai
Hallo,
wobei das
Zitat{if ((Value("sachsen") eq "none"))
mit dem
ZitatOder fhem("get holidayInstance today") auf "none" pruefen.
absolut nichts zu tun hat.
Mit (Value("Sachsen") eq "none") prüfst du nicht deine sachsen.holiday sondern ein Device welches sachsen heisst und als STATE "none" haben kann.
Mich würde jetzt nur noch interessieren ob bei dir Feiertag jemals off wird - ja, wenn das Device sachsen "none" im STATE hat aber sicher nicht wenn in Sachsen ein Feiertag ist.
Grüsse
Wenn er sein holidayInstance sachsen genannt hat, dann sollte Value("sachsen") jeweils 2 Sekunden nach Mitternacht den richtigen Wert aus der Datei enthalten.
Hallo,
ZitatholidayInstance sachsen genannt hat, dann sollte Value("sachsen") jeweils 2 Sekunden nach Mitternacht den richtigen Wert aus der Datei enthalten.
Ups. Ok.
Dann kann ich mir das ganze Konstrukt mit fhem("get ........") ja sparen wenn ich einfach nur auf "holiday" bzw. "feiertag" prüfen kann.
Gut zu wissen - dann kann ich das ganze auch ein bischen "schlanker" gestalten.
Grüsse
Guten Morgen,
darf ich mich hier bitte mal einklinken ?
Ich habe gem. der http://www.fhemwiki.de/wiki/Wochenende,_Feiertage_und_Schulferien (http://www.fhemwiki.de/wiki/Wochenende,_Feiertage_und_Schulferien) Feiertage etc eingebunden.
Also:
attr global holiday2we NRW_Feiertag
define NRW_Feiertag holiday
Dann:
define NRW_Ferien Calendar ical url http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2014.ics 43200
Dann noch den Dummy:
define NRW_Ferientag dummy
define NRW_Ferien.notify notify NRW_Ferien { \
fhem "set NRW_Ferientag " . (ReadingsVal("NRW_Ferien", "modeStart", "") =~ "schulferien" ? 1: 0) }
Unter "own modules and helper files" ist auch die Datei "NRW_Feiertag.holiday" zu sehen. Diese ist jedoch ohne Inhalt.
Ich habe das ganze gestern eingerichtet.
Ich wollte damit eine Aussenlampe steuern. Diese hat sich jedoch heute nicht eingeschaltet.
Zitatdefine AussenLampeAN at *07:00 { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set AussenLampe on-till 09:00");; } }
Selbst eine reine if-Abfrage auf (!($we)) funktioniert bei mir nicht. Mit "if($wday == 4 " funktioniert es allerdings.
EDIT: Klemme ich die Feiertagsfunktion ab, funktioniert "if (!($we)) sehr wohl.
Muss ich noch irgendwelche Berechtigungen setzen für die holiday-Datei ? Ich vermute deshalb ist sie leer...
LG
Zitatdarf ich mich hier bitte mal einklinken ?
Ungern, das Problem aht mit dem Betreff nichts zu tun.
Z.Bsp. ist mir unklar, was NRW_Ferien / NRW_Ferientag / NRW_Ferien.notify mit dem holiday Modul oder mit Weekdaytimer zu tun hat.
ZitatKlemme ich die Feiertagsfunktion ab, funktioniert "if (!($we)) sehr wohl.
Vermutlich hat Value("NRW_Ferientag") einen Wert, was nicht "" oder 0 ist.
Kann man einfach mit { Value("NRW_Ferientag") } pruefen.
Zitat von: rudolfkoenig am 20 Februar 2014, 10:54:52Kann man einfach mit { Value("NRW_Ferientag") } pruefen.
Ergebnis: 3 x Fragezeichen
Hallo,
ZitatMuss ich noch irgendwelche Berechtigungen setzen für die holiday-Datei ? Ich vermute deshalb ist sie leer...
Äh die holiday-Datei musst du schon selbst füllen ;)
Grüße
::)
Hallo Dietmar63,
ich bin am überlegen, ob ich meine Wochentagsschaltungen nicht anstatt mit at mit Deinem Modul programmieren, da die Scripte dadurch etwas übersichtlicher werden.
In diesem Zusammenhang hätte ich eine Anregung. Wäre es möglich in das WeekdayTimer-Modul noch folgende Pseudo-Wochentage einzubauen?
Wday oder 0 für weekdays (wochentags exclusive Feiertage bei gesetzten holiday2we)
Wend oder 8 für weekend (Wochenende inklusive Feiertage bei gesetzten holiday2we)
Gruß
tupol
Zitat von: tupol am 16 November 2014, 13:30:26
Hallo Dietmar63,
ich bin am überlegen, ob ich meine Wochentagsschaltungen nicht anstatt mit at mit Deinem Modul programmieren, da die Scripte dadurch etwas übersichtlicher werden.
In diesem Zusammenhang hätte ich eine Anregung. Wäre es möglich in das WeekdayTimer-Modul noch folgende Pseudo-Wochentage einzubauen?
Wday oder 0 für weekdays (wochentags exclusive Feiertage bei gesetzten holiday2we)
Wend oder 8 für weekend (Wochenende inklusive Feiertage bei gesetzten holiday2we)
Gruß
tupol
Du kannst auch DOIF als Zeitschaltuhr nehmen, das kann mit Arbeitstagen ( 8 ) und Wochenenden inkl. Feiertage ( 7 ) umgehen.
Siehe: http://fhem.de/commandref_DE.html#DOIF
Gruß
Damian
WeekdayTimer wird in nächster Zeit nicht erweitert, um bei den Tagen auch mit $we umgehen zu können.
Ich nutze die Möglichkeit im Befehlsteil $we oder $wday oder sonstwas abzufragen:
define tstDSTMaerz WeekdayTimer tstDST so|01:57|on so|02:07|off so|02:36|on so|02:55|off so|03:10|on ($mday == 29 && $month == 3);
oder
define tstDSTMaerz WeekdayTimer tstDST so|01:57|on so|02:07|off so|02:36|on so|02:55|off so|03:10|on { fhem ("set @ %") if ($mday == 29 && $month == 3) };
Zitat von: Damian am 16 November 2014, 22:09:47
Du kannst auch DOIF als Zeitschaltuhr nehmen, das kann mit Arbeitstagen ( 8 ) und Wochenenden inkl. Feiertage ( 7 ) umgehen.
Siehe: http://fhem.de/commandref_DE.html#DOIF
Das sieht interessant aus. Habe gar nicht mitbekommen, das DOIF jetzt so stark erweitert wurde. Werde mal die Anleitungen studieren.
PS: Für Neulinge wäre es sichlich im einfachsten, wenn die "historische" at-Funktion auch die Möglichkeit enthielte, den Wochentag oder ein anderes regelmässiges Datum anzugeben. Leider werden die Konfigurationsmöglichkeiten von FHEM derzeit immer komplexer und Neulinge werden es immer schwerer haben, sich zurechtzufinden.
Zitatdie "historische" at-Funktion auch die Möglichkeit enthielte, den Wochentag oder ein anderes regelmässiges Datum anzugeben.
Hat doch, muss man nur etwas perl verwenden. Beispiele gibts dafuer auch etliche.
Zitat von: rudolfkoenig am 17 November 2014, 10:09:15
Hat doch, muss man nur etwas perl verwenden. Beispiele gibts dafuer auch etliche.
Ja. Ich nutze sie ja auch mit Perl. In
fast jedem at-Aufruf kommte deshalb bei mir auch $wday oder $we vor.
Das Ganze wird aber durch die vielen zusätzlichen Bedingungen recht unübersichtlich mit Perl. Insbesonders für FHEM-Newcomer. Da $wday und $we Teil der Zeit sind, wäre es m.E. besser, sie direkt im at-Befehl zu integrieren. So wie ich den IFDO-Befehl verstanden habe, tut er das durch eine Tageskodierung.
at behandelt bewusst nur die Zeitkomponente. Bei dir ist es $we was staendig benoetigt wird, bei anderen ist es ReadingsVal, oder Value oder OldValue.
DOIF loest das Problem mit einer selbsterfundenen "Programmiersprache" (und das gefaellt vielen Anfaengern, weil es relativ simpel ist), ich bzw. at mit Perl, was komplizierter aber auch vollstaendiger ist.
Zitat von: rudolfkoenig am 17 November 2014, 12:00:48
at behandelt bewusst nur die Zeitkomponente. Bei dir ist es $we was staendig benoetigt wird, bei anderen ist es ReadingsVal, oder Value oder OldValue.
Sind es bei mir auch. Nur das die Zeitkomponente fast immer vom Wochentag (ist ja eigentlich auch Teil der Zeit) beeinflusst wird und der Rest nur sporadisch und sehr unterschiedlich eine Rolle spielt.
Zitat von: rudolfkoenig am 17 November 2014, 12:00:48
DOIF loest das Problem mit einer selbsterfundenen "Programmiersprache" (und das gefaellt vielen Anfaengern, weil es relativ simpel ist), ich bzw. at mit Perl, was komplizierter aber auch vollstaendiger ist.
Ich würde es anders formulieren. DOIF hat natürlich eigene (bestimmte) Syntax und damit Funktionalität, wie jedes andere Modul auch, wie bei at z. B. *+{4}. Die Mächtigkeit von DOIF ist allerdings die Flexibilität Abfragen beliebig zu definieren. Diese "Programmiersprache" ist jedoch nicht von mir erfunden (ich kümmer mich lediglich um Angaben in eckigen Klammern), sondern nennt sich Perl und ist damit so vollständig, wie eine Perl-Bedingung nur sein kann. Das Gleiche gilt ebenso für den Ausführungsteil.
Gruß
Damian