FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: vbs am 16 Februar 2017, 14:04:47

Titel: Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: vbs am 16 Februar 2017, 14:04:47
Bin gerade ein bisschen im DOIF-Fieber ;) Wollte gerne meinen Feiertagskalender automatisch am Anfang des neuen Jahres auf die neue Jahreszahl umstellen in der URL. Das klappt aber noch nicht so recht.
Mein aktueller Stand ist das hier:
([01:00] and {$mday} == 1 and {$month} == 1) (defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/{$year}/de/niedersachsen 43200,set env_calPublicHolidays update)

Da hab ich mindestens noch zwei Probleme:
- ich möchte, dass das Ding immer am 1.1. um 01:00 ausgeführt wird. Das hier wird vermutlich nicht korrekt sein:
([01:00] and {$mday} == 1 and {$month} == 1)
Kann mir jemand sagen, wie es richtig wäre?

- der Befehl "(defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/{$year}/de/niedersachsen 43200)" soll die URL in meinem Kalender-Device mit der neuen Jahreszahl ausstatten. Im Moment wird aber wirklich noch der String "{$year}" eingefügt, also er wird nicht als Perl-Code ausgewertet. Hätte da jemand einen Tipp?

Danke euch!
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: KernSani am 16 Februar 2017, 16:17:29
Der Bedingungsteil im DOIF ist weitestgehend perl, da brauchst du normalerweise keine geschweiften Klammern. Im Ausführungsteil würde ich mal versuchen, den kompletten defmod Befehl als {fhem(..)} abzusetzen...
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: Damian am 16 Februar 2017, 16:32:14
Es gibt seit gestern die Zeit-Variable $md und $ymd in der Bedingung:

Damit kann man dann vergleichen:

([01:00] and $md eq "01-01") (...
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: vbs am 16 Februar 2017, 16:41:30
Danke euch, also so klappt auch der Befehlsteil als reiner Perl-Code:
([01:00] and $md eq "01-01") ({fhem("defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/$year/de/niedersachsen 43200,set env_calPublicHolidays update")})

Aber Perl-Variablen kann man nicht als Teil der normalen DOIF-Befehle nutzen ohne aus dem ganzen Befehl Perl-Code zu machen (wie im ersten Post)?
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: Damian am 16 Februar 2017, 16:56:20
Zitat von: vbs am 16 Februar 2017, 16:41:30
Danke euch, also so klappt auch der Befehlsteil als reiner Perl-Code:
([01:00] and $md eq "01-01") ({fhem("defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/$year/de/niedersachsen 43200,set env_calPublicHolidays update")})

Aber Perl-Variablen kann man nicht als Teil der normalen DOIF-Befehle nutzen ohne aus dem ganzen Befehl Perl-Code zu machen (wie im ersten Post)?

Die Bedingungen in DOIF sind ja außerhalb der eckigen Klammern bereits Perl, daher sind geschweifte Klammen dort fehl am Platz. Die Variablen dort, sind lokale Variablen, die für den user im DOIF-Modul zur Laufzeit definiert und belegt werden. Auf diese und nur auf diese kann man in der Bedingung zugreifen. Welche es gibt, kann man hier nachlesen:

https://fhem.de/commandref_DE.html#DOIF_Kurzreferenz (siehe insb. Zeitvariablen)

Edit: Da du ja FHEM-Befehle ausführen willst, kannst du im Ausführungsteil auch direkt angeben:

(defmod env_calPublicHolidays ....





Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: vbs am 16 Februar 2017, 17:02:50
Danke ja, klappt ja auch. Aber ich meinte im Befehl. Also muss ich das im Befehl so machen:
({fhem("defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/$year/de/niedersachsen 43200,set env_calPublicHolidays update")})

oder geht es auch ähnlich dem hier hier (aber funktionierend)?
(defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/{$year}/de/niedersachsen 43200,set env_calPublicHolidays update)

Geht um diese Variable "$year".
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: Damian am 16 Februar 2017, 17:18:42
Zitat von: vbs am 16 Februar 2017, 17:02:50
Danke ja, klappt ja auch. Aber ich meinte im Befehl. Also muss ich das im Befehl so machen:
({fhem("defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/$year/de/niedersachsen 43200,set env_calPublicHolidays update")})

oder geht es auch ähnlich dem hier hier (aber funktionierend)?
(defmod env_calPublicHolidays Calendar ical url https://www.ferienwiki.de/exports/feiertage/{$year}/de/niedersachsen 43200,set env_calPublicHolidays update)

OK. Jetzt weiß ich was du meinst. Im Ausführungsteil sind die Variablen der Bedingung leider nicht bekannt, da es ein anderer Adressraum ist. Da muss man sich selbst mit Perlmitteln etwas basteln.
Titel: Antw:Kalendar jährlich mit neuer Jahreszahl updaten
Beitrag von: vbs am 16 Februar 2017, 17:54:03
Ok, danke euch!