FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: pcjogi am 07 Juli 2017, 08:08:25

Titel: Kalender Termin auf Datum filtern
Beitrag von: pcjogi am 07 Juli 2017, 08:08:25
Hallo zusammen,

ich finde keine richtigen Ansatz und meine regex Kenntnisse sind auch etwas mager.

Ich habe einen Google Kalender erfolgreich eingebunden und möchte im FTUI die Termine anzeigen. Dafür brauche ich eine Liste von Terminen für Heute, Morgen in 2 Tagen und in 3 Tagen. Im Bild habe ich das gewünschte Ergebnis mit Termin 1 und Termin 2 mal gefaked.

Idee war mehrere Calviews zu erzeugen, aber hier bekomme  ich noch nicht mal ein Ergebnis.

Kann mir bitte jemand einen Tipp geben wie ich am Besten ansetze.

Danke
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: JensS am 07 Juli 2017, 16:12:47
Mit dem "attr Kalender hideOlderThan 0d" und "attr Kalender hideLaterThan 1d" kannst du deine Suche z.B. auf den heutigen Tag eingrenzen und dir die Termine mit "get Kalender full all" ausgeben lassen. (sh. commandref)

Gruß Jens
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: Zook am 07 Juli 2017, 20:06:44
Nutz doch das Calview Modul. Du musst nur 2 (Google) Kalender (z.B. Familien- und Abfallkalender) bei Calview eintragen


Gesendet von iPhone mit Tapatalk
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: pcjogi am 07 Juli 2017, 21:44:58
Hallo  dirigent,

das hilf schon mal, bedeutet aber, dass ich für jeden Tag die Attribute ändern muss und je ein get ausführen muss. Mein Wunsch / Anspruch ist es hier ggf. ein hideLaterThan 4d zu machen und ein geschicktes regex zu fabrizieren welches mir bei einem get den jeweiligen Tag rausfiltert. Hier bin ich aber im Moment restlos überfragt wie ich das in regex umsetzen kann. Ich denk da nochmal drauf rum, nehme aber auch noch gerne Hilfe an.

Danke

Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: pcjogi am 08 Juli 2017, 17:41:38
Bin ein bisschen weiter aber noch nicht am Ziel.

wenn ich ein Userreading mit get meinkalender text all erstelle stehen dort alle Termine drin. Wenn ich das Ergebnis mit folgendem Regex bearbeite ^((?!07.07.17).)*$ erhalte ich nur die Einträge vom 07.07.2017.

Wie kann ich jetzt ein userreading in der form

attr meinkalender userreadings  day0 { fhem ("get meinkalender text all"}

so "mit dem regex bearbeiten", dass dann nur die Einträge vom z.B. 07.07.17 drinstehen.


Um den nächsten Punkt, das Datum dann als Variable in den Regex zu bekommen kann ich mich später kümmern. Wer hier auch einen Tipp für mich hat gerne.


Danke
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: pcjogi am 09 Juli 2017, 10:57:06
So auf Shellebene bekomme ich das hin was ich brauche. Vielleicht kann mir jemand helfen das in ein userreading zu bekommen.

:~$ /opt/fhem/fhem.pl 7072 "get Kalender_csws text all" | grep 07.07.17 | perl -ane 'print "$F[2] $F[3]\n"'
Frau Schmidt
Arzt


Den 07.07.17 muss noch variabel werden und ich brauche nicht nur den 3. und 4. Teil der Zeile, sondern ab dem 3. Teil den Rest.

Danke
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: JensS am 09 Juli 2017, 19:08:11
Hier mal ein Einzeiler ;) :
{  my $heute = strftime "%d.%m.%y", localtime(time);;my @termine=grep /$heute/,split(/\n/,fhem("get Kalender_csws text all"));;for(my $i;;$i<@termine;;$i++){my $ergebnis=substr(@termine[$i],15,);;return "$ergebnis"} }
Für morgen addierst du einfach 86400:
{  my $heute = strftime "%d.%m.%y", localtime(time+86400);;my @termine=grep /$heute/,split(/\n/,fhem("get Kalender_csws text all"));;for(my $i;;$i<@termine;;$i++){my $ergebnis=substr(@termine[$i],15,);;return "$ergebnis"} }

Gruß Jens
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: pcjogi am 09 Juli 2017, 22:05:47
Danke für die Antwort. Leider bekomme ich noch eine Fehlermeldung :

day0 Error evaluating Kalender_csws userReading day0: syntax error at (eval 492) line 1, at EOF
Ich finde den Fehler aber leider nicht.

day0 {  my $heute = strftime "%d.%m.%y", localtime(time);;my @termine=grep /$heute/,split(/\n/,fhem("get Kalender_csws text all"));;for(my $i;;$i<@termine;;$i++){my $ergebnis=substr(@termine[$i],15,);;return "$ergebnis"} }


Vielleich kannst du nochmal helfen

Danke
Titel: Antw:Kalender Termin auf Datum filtern
Beitrag von: JensS am 10 Juli 2017, 18:15:20
Machst du so:
{ my $x;;my $heute = strftime "%d.%m.%y", localtime(time);;my @termine=grep /$heute/,split(/\n/,fhem("get Kalender_csws text all"));;for(my $i=0;;$i<@termine;;$i++){if($i!=0){$x=$x.","};;$x=$x.substr(@termine[$i],15,);;};;fhem("setreading Kalender_csws day0 $x") }

Gruß Jens