Einzelne Einträge im Calendar-Modul auslesen?

Begonnen von Grinsekatze, 30 September 2016, 22:07:59

Vorheriges Thema - Nächstes Thema

Grinsekatze

Hallo,

ich arbeite gerade an einer Darstellung meiner Calendar-Modul-Einträge. Dafür benötige ich jedoch eine Möglichkeit die einzelnen Einträge gezielt ansprechen zu können (z.B. Name, Datum und Begin vom Eintrag der als übernächstes ansteht). Das bekomme ich jedoch so nicht hin.

Ich kann zwar mit "get <Kalendarname> text next 5" mir die nächsten 5 Einträge anzeigen lassen. Jedoch kein expliziten Eintrag.
Hier habe ich bis jetzt nur die Möglichkeit inbetracht gezogen, das Ergebnis vom obigen Aufruf mit "get <Kalendarname> text next 4" zu vergleichen um so den Unterschied (Event 5) herausfiltern zu können. Das finde ich jedoch etwas umständlich und hoffe, dass hier Jemand ein anderen Tipp hat.

KernSani

Hi,

eine vielleicht etwas elegantere Methode wäre mit

get <Kalender> uid next 5 die UIDs zu holen und dann den entsprechenden Eintrag mit
get <Kalender> text <uid des 5. Eintrages> gezielt auszulesen.

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Grinsekatze

Klingt gut.

Ich habe aber das Problem, dass ich es in einer PHP-Seite automatisiert einbinden möchte. Die UID muss ich ja zunächst händisch ermittteln.

Zunächst hatte ich gehofft, ich könnte zunächst mit die nächsten 5 Einträge auslesen und dann die Ausgabe an den Zeilenumbrüchen zerlegen. Im Anschluss dann einfach bei der jeweiligen Zeile an der entsprechenden Position den Inhalt auslesen um z.B. das Datum, Beginn oder Titel zu bekommen. Leider gibt es jedoch keine Zeilenumbrüche.

$content = "get <Kalendarname> text next 5";
$lines = explode('\r\n', $content);
$date1 = substr($lines[1],0 , 7); # gibt das Datum des 1. Termins aus

KernSani

hat mich jetzt doch interessiert

my $cal = fhem("get AbfallKal uid next 5");
my @lines = split /\s/,$cal;
my $entry = fhem("get AbfallKal text ".$lines[4])

gibt mir den 5. Eintrag aus...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Hans Franz

Zitat$lines = explode('\r\n', $content);
Ich glaube, als Zeilenende ist nur ein "\n" vorhanden.

Gruß
Hans
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

ernst1024

ich habe es jetzt so:


<?php
$fcmd 
"get myCal text next\r\nQUIT\r\n";
$fsock fsockopen($fhemhost$fhemport$errno$errstr30);
fwrite($fsock$fcmd);
$result=fgets($fsock128);
echo 
"Kalender: $result";
?>



das holt mir immer den aktuellen (nächst aufkommenden) Eintrag. Aber du möchtest geziehlt den dritten oder so ansprechen?
Gruß Ernst

Grinsekatze

Jupp. Wie Ernst bemerkt hat, ist es für mein FHEM-Smart-Mirror-Projekt.

Hier möchte ich meine nächsten 6 Kalender-Einträge ausgeben. Jedoch etwas aufgepeppt und nicht nach dem Muster "<Titel> <Datum> <Uhrzeit>".
Es soll vielmehr in Abhängigkeiten erfolgen:
Wenn der Eintrag heute ist, dann soll auch stehen "<Titel> Heute um <Uhrzeit> Uhr".
Wenn der Eintrag binnen 6 Tagen ist, dann soll ausgegeben werden: "<Titel> am <Wochentag> um <Uhrzeit> Uhr".
Ist der Eintrag weiter als 6 Tage entfernt, dann soll ausgegeben werden: "<Titel> in <Anzahl der verbleibenden Tage> Tagen".

Das klappt nun auch (fast). Ich habe es nach etwas probieren doch durch ein Vergleich der 2 Kalender-Abfragen (X-Tage und X-Tage Plus 1) umgesetzt.

Lediglich einen Fehler habe ich offenbar noch in meinem Code (wohl in meiner IF-Schleife um das o.g. zu realisieren.
Er zeigt mir zzt. sowohl bei einem Termin am Montag (in 2 Tagen), als auch für ein Termin in 9 Monaten (an einem Montag) beides Mal an "am Montag um <Uhrzeit> Uhr".  :o

KernSani

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

knopf_piano

zotac nano mit proxmox und ganz viel zeug drauf