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
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
Nutz doch das Calview Modul. Du musst nur 2 (Google) Kalender (z.B. Familien- und Abfallkalender) bei Calview eintragen
Gesendet von iPhone mit Tapatalk
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
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
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
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
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
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