Kalenderübersicht, Terminübersicht als Tabelle (ohne Meldevariable)

Hallo,

ich bastle gerade an einem WebFront als Übersicht für den Tag.
Wetterdaten, welche Musik/Radio läuft gerade im Haus, sind bestimmt Fenster geöffnet,…

Hätte da auch gerne einen Kalender als Übersicht.
Soweit ich das ical Modul verstehe muss ich Termine vorher als Meldevariable eintragen.
Wenn ich aber vorab nicht weiß wie ein Termin benannt wird geht dies nicht.

z.B. meine Frau trägt in meinen Google-Kalender einen Termin ein „17:00 Kind zum Sport bringen“ (rein fiktiv).
Da ich vorher den Termin und Wortlaut nicht kannte wird er nicht über das Modul gezogen (soweit ich es verstehe)

Gibt es eine Option aus einem oder mehreren Kalendern die nächsten 3-5-10 Termine (wie auch immer) anzuzeigen?

Hi,
ich habe es selbst programmiert. Ich wollte die Termine von Heute + nächsten 2 Tage haben. Script ist nicht so aufwendig. Ich führe es einmal Nachts aus und dann immer wenn ich aktuellen Text haben will.

Script sieht so aus:


<?php
ICCR_UpdateCalendar(14290); // Instanz von meinem Kallender
$calendar = ICCR_GetCachedCalendar(14290);
$calendar_array = json_decode($calendar, true);

$heute = mktime(0, 0, 0, date("m")  , date("d") + 0, date("Y"));
$heute_flag = true;
$morgen = mktime(0, 0, 0, date("m")  , date("d") + 1, date("Y"));
$morgen_flag = true;
$uebermorgen = mktime(0, 0, 0, date("m")  , date("d") + 2, date("Y"));
$uebermorgen_flag = true;
$ende = $uebermorgen + 86400;
$text = "";
SetValue(10677, false); // Variable die IPS sagt ob ich Urlaub habe
foreach ($calendar_array as $entry) {
    if ($entry["Status"] == 'CANCELLED') continue;
    if ($entry["allDay"] == false){
        $stunde = date('G', $entry["From"]);
        $minute = date('i', $entry["From"]);
        if ($minute < 10) $minute = "";
        $zeit = $stunde." Uhr ".$minute;
    }
    else{
        $entry["From"] = mktime(0, 0, 0, date("m", $entry["From"])  , date("d", $entry["From"]), date("Y", $entry["From"]));
        $entry["To"] = mktime(0, 0, 0, date("m", $entry["To"])  , date("d", $entry["To"]), date("Y", $entry["To"]));
    }
    if (($entry["From"] >= $heute) && ($entry["To"] <= $morgen)){
        if (($entry["allDay"]) && (date('G', time()) < 13)){
            if ($heute_flag){
                $text .= "Heute   ".PHP_EOL;
                $heute_flag = false;
            }
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
        else if (($entry["allDay"] == false) && (time() < $entry["To"])){
            if ($heute_flag){
                $text .= "Heute   ".PHP_EOL;
                $heute_flag = false;
            }
            $text .= "um ".$zeit;
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
        if (strpos($entry["Name"], "Urlaub") >= 0) SetValue(10677, true);
    }
    else if (($entry["From"] <= $heute) && ($entry["To"] >= $morgen)){
        if ($heute_flag){
            $text .= "Heute   ".PHP_EOL;
            $heute_flag = false;
        }
        $text .= $entry["Name"]."    ".PHP_EOL;
    }
    if ($entry["From"] > $ende){
        break;
    }
}
foreach ($calendar_array as $entry) {
    if ($entry["Status"] == 'CANCELLED') continue;
    if ($entry["allDay"] == false){
        $stunde = date('G', $entry["From"]);
        $minute = date('i', $entry["From"]);
        if ($minute < 10) $minute = "";
    }
    else{
        $entry["From"] = mktime(0, 0, 0, date("m", $entry["From"])  , date("d", $entry["From"]), date("Y", $entry["From"]));
        $entry["To"] = mktime(0, 0, 0, date("m", $entry["To"])  , date("d", $entry["To"]), date("Y", $entry["To"]));
    }
    if (($entry["From"] >= $morgen) && ($entry["To"] <= $uebermorgen)){
        if ($entry["allDay"]){
            if ($morgen_flag){
                $text .= "Morgen   ".PHP_EOL;
                $morgen_flag = false;
            }
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
        else if (($entry["allDay"] == false) && (time() < $entry["To"])){
            if ($morgen_flag){
                $text .= "Morgen   ".PHP_EOL;
                $morgen_flag = false;
            }
            $text .= "um ".$zeit;
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
    }
    else if (($entry["From"] <= $morgen) && ($entry["To"] >= $uebermorgen)){
        if ($morgen_flag){
            $text .= "Morgen   ".PHP_EOL;
            $morgen_flag = false;
        }
        $text .= $entry["Name"]."    ".PHP_EOL;
    }
    if ($entry["From"] > $ende){
        break;
    }
}
foreach ($calendar_array as $entry) {
    if ($entry["Status"] == 'CANCELLED') continue;
    if ($entry["allDay"] == false){
        $stunde = date('G', $entry["From"]);
        $minute = date('i', $entry["From"]);
        if ($minute < 10) $minute = "";
    }
    else{
        $entry["From"] = mktime(0, 0, 0, date("m", $entry["From"])  , date("d", $entry["From"]), date("Y", $entry["From"]));
        $entry["To"] = mktime(0, 0, 0, date("m", $entry["To"])  , date("d", $entry["To"]), date("Y", $entry["To"]));
    }
    if (($entry["From"] >= $uebermorgen) && ($entry["To"] <= $ende)){
        if ($entry["allDay"]){
            if ($uebermorgen_flag){
                $text .= "Übermorgen   ".PHP_EOL;
                $uebermorgen_flag = false;
            }
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
        else if (($entry["allDay"] == false) && (time() < $entry["To"])){
            if ($uebermorgen_flag){
                $text .= "Übermorgen   ".PHP_EOL;
                $uebermorgen_flag = false;
            }
            $text .= "um ".$zeit;
            $text .= $entry["Name"]."    ".PHP_EOL;
        }
    }
    else if (($entry["From"] <= $uebermorgen) && ($entry["To"] >= $ende)){
        if ($uebermorgen_flag){
            $text .= "Übermorgen   ".PHP_EOL;
            $uebermorgen_flag = false;
        }
        $text .= $entry["Name"]."    ".PHP_EOL;
    }
    if ($entry["From"] > $ende){
        break;
    }
}

//if (strlen($text) < 2) $text = "Ralf Du hast Heute zum Glück keine Termine";
//print PHP_EOL.PHP_EOL.PHP_EOL.$text;
SetValue(27911, $text); // Stringvariable die den Text enthält
?>

Diesen Text gibt dann auch Alexa ab und zu aus.

Vielleicht eine Idee für dich.

Wenn Du eine hübsche Ansicht fürs Web-Front brauchst kannst Du es einbinden wie in der Doku empfohlen und Du hast die typische Kalender-Ansicht.

Ralf