holiday2we - 3 Zustände benötigt

Begonnen von Guest, 05 Dezember 2012, 14:44:10

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo zusammen,

ist es momentan möglich, Ferien von normalen Feiertagen zu unterscheiden?

Im Schlafzimmer soll das Rollo morgens hochfahren, wenn nicht gerade
Wochenende oder Feiertag ist. Im Kinderzimmer gilt die selbe Regel, dort
soll allerdings an Schulferien ebenfalls das Rollo unten bleiben.

Da die Eltern i.d.R. in den Schulferien weiterhin früh aufstehen müssen,
wäre hier eine Möglichkeit zur Unterscheidung notwendig. Geht dies heute
schon irgendwie? Ich kann doch nur eine Holiday-Datei einlesen und mittels
holiday2we an $we "anhängen", oder?

Klar ist, dass ich mit zusätzlichen IF-Statements den Zeitraum zwischen
Ferienbeginn und -ende im Kinderzimmer erkennen könnte, aber dies würde bei
Winter-, Oster-, Sommer- und Herbstferien, sowie diversen beweglichen
Ferientagen und anderen freien Schultagen ein sehr langes Statement und man
würde bei der (halb-)jährlichen Anpassung schnell durcheinander kommen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo,

lege eine weitere holiday Datei an z.B.: Ferien.holiday
und trage dort die Ferientage im Format 1 ein, Format 4 (als Zeitspanne
liefert mir leider nur none zurück).

und dann kannst du den Ferientag mit {Value("Ferien")} in der Kommandozeile
abfragen

Grüße

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

borsti67

                                                 

...oder ergänze das über das Kalender-Modul, ist vielleicht einfacher zu
pflegen. ;)


Am 5. Dezember 2012 15:30 schrieb Fidel :

> Hallo,
>
> lege eine weitere holiday Datei an z.B.: Ferien.holiday
> und trage dort die Ferientage im Format 1 ein, Format 4 (als Zeitspanne
> liefert mir leider nur none zurück).
>
> und dann kannst du den Ferientag mit {Value("Ferien")} in der
> Kommandozeile abfragen
>
> Grüße
>
> --
> To unsubscribe from this group, send email to
> fhem-users+unsubscribe@googlegroups.com
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

Guest

Originally posted by: <email address deleted>

Format 4 funktionierte bei mir nicht weil ich es jahresübergreifend
probiert habe...

statt

4 12-29 01-13 Frei

sollte man

4 12-29 12-31 Frei1
4 01-01 01-13 Frei2

deklarieren.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Das Kalendermodul ist natürlich eine sehr gute Idee, die Schulferien gibt´s
sogar frei Haus, z.B. für NRW<http://www.schulferien.org/iCal/Ferien/icals/Ferien_Nordrhein_Westfalen_2012.ics>unter
www.schulferien.org. Es reicht doch ein iCal-Kalender, Google ist nur ein
Beispiel, oder?

Wenn ich die Command Reference <http://fhem.de/commandref.html#Calendar>allerdings richtig interpretiere, muss ich zwingend mit den UIDs arbeiten,
die in dem Beispiels allerdings alle brav zu parsen wären, z.B. "*
UID:Sommerferien-Nordrhein_Westfalen-201208221105030432@schulferien.org*",
also mit "*.*ferien.**".

Aber wie baue ich das in das IF-Statement ein?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

UliM

                                                 

Am Mittwoch, 5. Dezember 2012 15:56:08 UTC+1 schrieb kossmann:Aber wie baue
ich das in das IF-Statement ein?

Sowas wie "contains" sieht in perl folgendermaßen aus:
if ($uid =~ m/ferien/) {blabla}

Siehe zB http://de.selfhtml.org/perl/sprache/regexpr.htm

=8-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Dr. Boris Neubert

                                             

Hallo,

Am 07.12.2012 09:12, schrieb UliM:
>
> Am Mittwoch, 5. Dezember 2012 15:56:08 UTC+1 schrieb kossmann:Aber wie
> baue ich das in das IF-Statement ein?
>
> Sowas wie "contains" sieht in perl folgendermaßen aus:
> if ($uid =~ m/ferien/) {blabla}
>

interessanter Ansatz mit dem Schulferien-Kalender! Werde ich bei mir
einbauen.

Ich habe

define Holidays Calendar ical url
http://www.schulferien.org/iCal/Ferien/icals/Ferien_Hessen_2013.ics

definiert. Mit

{ ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1 : 0 }

bekomme ich 1 oder 0 zurück, je nachdem, ob gerade Ferien sind oder
nicht (mit "modeUpcoming" anstelle von "modeStart" kann man das testen).

Wie bekomme ich das jetzt in einen Dummy?

define Ferien dummy
set Ferien { ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1
: 0 }

wertet nämlich den Perl-Ausdruck nicht aus.

Ich würde mir dann ein notify anlegen, welches den Ferien-Dummy setzt.
Klar, mit if-else geht's, aber geht es auch Perl-typisch kurz?

Viele Grüße
Boris



--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

UliM

                                                 

Am Samstag, 8. Dezember 2012 19:41:28 UTC+1 schrieb Boris:
>
> Wie bekomme ich das jetzt in einen Dummy?
>
> Immer kurz nach Mitternacht prüfen:
define Feriencheck at *00:01 {fhem "set Ferien
".(ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0) }

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Dr. Boris Neubert

                                             

Danke Uli,

Am 08.12.2012 19:52, schrieb UliM:
> (ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0)

so sieht das dann bei mir aus:

define isHoliday dummy # benutzen mit { Value("isHoliday") }
define Holidays Calendar ical url
http://www.schulferien.org/iCal/Ferien/icals/Ferien_Hessen_2012.ics
define Holidays.notify notify Holidays { fhem "set isHoliday " .
(ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0) }

Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Guest

Originally posted by: <email address deleted>

Hallo Boris,

könntest du vielleicht erklären, was da genau passiert? Wo kommt das
"schulferien" her? Ist das ein beliebiger Text in der UID (die hier ja
immer auf "schulferien.org" endet)?

Ich habe deine 3 defines mal bei mir ausprobiert und bekomme nur...

{ Value("sindFerien") }
???

Den nächtlichen Check von Uli hast du nicht eingebaut, oder?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

Hallo,

Am 10.12.2012 10:18, schrieb kossmann:
> könntest du vielleicht erklären, was da genau passiert? Wo kommt das
> "schulferien" her? Ist das ein beliebiger Text in der UID (die hier ja
> immer auf "schulferien.org" endet)?

# das definiert den Dummy, der auf 1 oder 0 steht, je nachdem, ob Ferien
sind oder nicht
define isHoliday dummy # benutzen mit { Value("isHoliday") }

# das definiert den Ferienkalender
define Holidays Calendar ical url
http://www.schulferien.org/iCal/Ferien/icals/Ferien_Hessen_2012.ics

# dieses notify wird bei jeder Aktualisierung des Kalenders, i.d.R. also
alle Stunde, aktiv
# dabei wird der Perl-Ausdruck in { } ausgeführt
# der Teil ReadingsVal("Holidays","modeStart","") =~ "schulferien"
liefert die Anzahl der Vorkommen des Texts "schulferien"
#   im Reading "modeStart". Wenn gerade Schulferien sind, ist das
Ergebnis 1, sonst undef.
# mit (ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0)
wird dann aus dem Ergebnis 1 oder 0
# am Ende wird die 1 oder 0 mit dem fhem-Befehl zu fhem set isHoliday 0
oder fhem set isHoliday 1 zusammengefügt und ausgeführt
define Holidays.notify notify Holidays { fhem "set isHoliday " .
(ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0) }


Ich hoffe, daß das verständlich war. Ein wenig Herumspielen mit list
Holidays und get Holidays full all schadet nicht.

Ich wäre Dir dankbar, wenn Du das ins Wiki tust.

Viele Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Guest

Originally posted by: <email address deleted>

Aua...

mein "*set update*" fehlte, daher kamen auch nur die
Fragezeichen zurück.

Ich glaube ich fasse das mal in einem entsprechenden Wiki-Artikel zusammen
- Feiertage und Ferien über einen Kalender.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Eine erste Version ist online: FhemWiki - Wochenende, Feiertage und
Schulferien<http://www.fhemwiki.de/wiki/Wochenende,_Feiertage_und_Schulferien>

Da ich den letzten Teil selbst noch nicht in die Steuerung eingebaut habe,
fehlt das letzte, vollständige Beispiel noch.

Am Montag, 10. Dezember 2012 14:11:40 UTC+1 schrieb Boris:
>
> Ich wäre Dir dankbar, wenn Du das ins Wiki tust.
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Ich muss leider doch noch mal nachfragen:

ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0

*modeStart* haben Ereignisse, welche Begonnen haben, aber noch nicht
beendet sind. *upcoming* hingegegen gilt für Ereignisse, welche erst in der
Zukunft beginnen.

Da momentan wohl nirgendwo Ferien sind (und ich außerdem mit 2013 teste),
sollte o.a. Ausdruck mit *upcoming* statt *modeStart* doch insgesamt eine 1
liefern, oder? Dies ist bei mir während dem Testen leider nicht der Fall:

get NRW_Ferien full all
WeihnachtsferienNordrhein_Westfalen201301051066245570schulferienorg   known
upcoming                     01.01.2013 00:00:00-05.01.2013 00:00:00
Weihnachtsferien Nordrhein-Westfalen
[...]

{ fhem "set NRW_Ferientag ".(ReadingsVal("NRW_Ferien", "upcoming", "") =~
"schulferien" ? 1: 0) }

{ Value("NRW_Ferientag") }
0

Warum bekomme ich hier keine 1 zurück?

Des weiteren verstehe ich dass "schulferien" immer noch nicht zu 100%. Dies
müsste doch eigentlich ein regulärer Ausdruck sein, oder? Ein
".*schulferien.*" oder ".*schulferienorg$" wäre in meinen (blinden) Augen
richtig - funktioniert aber leider genauso wenig.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Dr. Boris Neubert

                                             

Hallo,

Am 10.12.2012 17:17, schrieb kossmann:
> Ich muss leider doch noch mal nachfragen:
>
> ReadingsVal("Holidays","modeStart","") =~ "schulferien" ? 1: 0
>
> Da momentan wohl nirgendwo Ferien sind (und ich außerdem mit 2013
> teste), sollte o.a. Ausdruck mit /upcoming/ statt /modeStart/ doch
> insgesamt eine 1 liefern, oder? Dies ist bei mir während dem Testen
> leider nicht der Fall:
es gibt kein Reading namens upcoming. Das Reading heißt "modeUpcoming".
>
> Des weiteren verstehe ich dass "schulferien" immer noch nicht zu 100%.
> Dies müsste doch eigentlich ein regulärer Ausdruck sein, oder? Ein
> ".*schulferien.*" oder ".*schulferienorg$" wäre in meinen (blinden)
> Augen richtig - funktioniert aber leider genauso wenig.
>
>
Der Operator =~ matcht Substrings.

Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!