Weekdaytimer und Feiertage

Begonnen von kaiviertel, 14 Dezember 2013, 02:05:03

Vorheriges Thema - Nächstes Thema

Dietmar63

#30
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) };
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

tupol

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.

rudolfkoenig

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.

tupol

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.

rudolfkoenig

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.

tupol

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.

Damian

#36
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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF