[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Das sollte funktionieren, die Fehlermeldung sagt ja klar, was das Problem ist

NotFound - Message: Node with name ‚Symcon‘ could not be found

d.h. deine URL ist falsch.

Du kannst in den Eigenschaften im Kalender die korrekte URL rauskopieren.

Hi,
meine URL zu meiner lokalen NextCloud ist https://192.168.178.2:5081/remote.php/dav/calendars/rb/persnlich//?export Benutzername und Passwort habe ich getrennt eingegeben.

Ralf

Danke fürs teilen der URL.
Was verwendest du als Passwort? Das normale Login-PW oder hast du ein App-PW erstellt?
Und warum hast du ein ‚rb‘ (wohl deine Initialen) im URL?
Ich habe schon beides probiert, immer Fehlermeldung ‚BN-Name oder PW ungültig‘

Ich habe die URL aus den Kalendereigenschaften rauskopiert und mit dem Kalendernamen (Symcon) und ‚?export‘ ergänzt.
Und die Fehlermeldung in der Instanzenkonfiguration ist 'Benutzername oder Kennwort ungültig

image

Im Dump ist diese Fehlermeldung irreführend, ich habe genau diesen Kalender erstellt:

28.11.2023, 11:19:36 |              LOG_ERR | Error: Sabre\DAV\Exception\NotFound - Message: Node with name 'Symcon' could not be found

Hi,
Link habe ich hier her:
grafik

rb sind meine Initialen und auch der Namen meines persönlichen Kallenders. Name und Passwort sind von meinem Account bei Nextcloud und die gebe ich auch bei Kalenderzugriff ein.

Ralf

Halleluja, das wars, vielen Dank.
Der Grund war ein falscher Kalendername…
Warum mein Kalender allerdings ‚personal‘ heisst, obwohl ich ihn umbenannt habe, keine Ahnung.
Vielleicht weil ich den standardmässig erstellten umbenannt habe, Nextcloud dies aber im Hintergrund nicht tut?
Keine Ahnung, jedenfalls habe ich nun Zugriff

Mein URL sieht also nun so aus
https://nextcloud.xxx.ch/remote.php/dav/calendars/mb-stern@xxx.ch/personal?export

Hallo Ralf :slight_smile:
wie immer mein Ansprechpartner :wink:

Ich hab mal das Skript vom 29.10 (923) mal angesehen.
Was muss ich da für Variablen anlegen?
Über den I cal Calender reader hole ich mir meinen GoogleKalender. Dieser wird auch beim Abruf angezeigt.

Vielen Dank

@Golly
Ein Tipp, damit man es zuordnen kann.
Antworte auf den gewünschten Beitrag das bekommt das derjenige auch mit und dein Beitrag wird dort als Antwort angezeigt.
Und auch den Link zum Beitrag (das ist auch Beitrag 927 und nicht 923), kannst du dort kopieren:


Michael

PS: Und mit dem @ Zeichen kann man User erwähnen. Dann weiß man gleich wer gemeint ist :wink:

Moin Golly,
den letzten Teil habe ich aus dem Script mal entfernt. Da sagt mir Alexa das es einen Termin gibt und dürfte für andere Benutzer nicht interessant sein.

Die Variable 27911 und 13874 sind reine Stringvariablen. 27911 reiner Text und 13874 HTML-Text für eine HTML-Box in der Visu die muss das Profil ~HTMLBox haben.

Wie gesagt ich benutze NextCloud. Google müsste ich erst probieren.

Ralf

Hallo @HarmonyFan ,
funktioniert perfekt!!
leider habe ich mehrere Kalender ( auf dem Iphone wird das ja zusammen angezeigt)
Gibt es die Möglichkeit mit deinem Skript mehrere Kalender auszulesen?

Moin,
theoretisch ganz einfach ob es praktisch geht kann ich nicht sagen.

ICCR_UpdateCalendar(KalenderID1);
$calendar = ICCR_GetCachedCalendar(KalenderID1);
$calendar1_array = json_decode($calendar, true);

ICCR_UpdateCalendar(KalenderID2);
$calendar = ICCR_GetCachedCalendar(KalenderID2);
$calendar2_array = json_decode($calendar, true);
$calendar_array = array_merge($calendar1_array, $calendar2_array);

das hier gegen die ersten 3 Zeilen im Script tauschen. Wenn es klappt und Du mehr als 2 Kalender hast kannst Du hier die letzte Zeile ersetzen durch

ICCR_UpdateCalendar(KalenderID3);
$calendar = ICCR_GetCachedCalendar(KalenderID3);
$calendar3_array = json_decode($calendar, true);
$calendar_array = array_merge($calendar1_array, $calendar2_array, $calendar3_array);

usw.

Hoffe das klappt Ralf

1 „Gefällt mir“

Hallo Ralf,

bin grad am testen. Leider zeigt eh mir gar nichts mehr an in der HTML Box. Sobald ich die Kalender einzeln aufrufen lasse, funktionierts. Aber nicht kombiniert.

<?php //error_reportICCR_UpdateCalendar(); ICCR_UpdateCalendar(39857); $calendar = ICCR_GetCachedCalendar(39857); $calendar1_array = json_decode($calendar, true); ICCR_UpdateCalendar(43452); $calendar = ICCR_GetCachedCalendar(43452); $calendar2_array = json_decode($calendar, true); //$calendar_array = array_merge($calendar1_array, $calendar2_array); ICCR_UpdateCalendar(32805); $calendar = ICCR_GetCachedCalendar(32805); $calendar3_array = json_decode($calendar, true); //$calendar_array = array_merge($calendar1_array, $calendar2_array, $calendar3_array); ICCR_UpdateCalendar(56792); $calendar = ICCR_GetCachedCalendar(56792); $calendar4_array = json_decode($calendar, true); //$calendar_array = array_merge($calendar1_array, $calendar2_array, $calendar3_array, $calendar4_array); ICCR_UpdateCalendar(13795); $calendar = ICCR_GetCachedCalendar(13795); $calendar5_array = json_decode($calendar, true); $calendar_array = array_merge($calendar1_array, $calendar2_array, $calendar3_array, $calendar4_array, $calendar5_array); $heute = mktime(0, 0, 0, date("m") , date("d") + 0, date("Y")); $heute_flag = true; $morgen = $heute + 86400; $morgen_flag = true; $uebermorgen = $morgen + 86400; $uebermorgen_flag = true; $ende = $uebermorgen + 86400; $text = ""; SetValue(33152, false); 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"])); $entry["From"] += 7200; $entry["To"] -= 7200; } if (($entry["From"] >= $heute) && ($entry["To"] < $morgen)){ $pos = strpos($entry["Name"], "Geburtstag", 0); if ($pos === false) { if (($entry["allDay"]) && (date('G') < 13)){ if ($heute_flag){ $text .= "Heute ".PHP_EOL; $heute_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } if (strpos($entry["Name"], "Urlaub") !== false) SetValue(33152, true); } else if (time() < ($entry["From"] + 1800)){ if ($heute_flag){ $text .= "Heute ".PHP_EOL; $heute_flag = false; } $text .= "um ".$zeit; if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } } } } else if (($entry["From"] <= $heute) && ($entry["To"] >= $morgen)){ if ($heute_flag){ $text .= "Heute ".PHP_EOL; $heute_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } if (strpos($entry["Name"], "Urlaub") !== false) SetValue(10677, true); } 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 = ""; $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"])); $entry["From"] += 7200; $entry["To"] -= 7200; } if (($entry["From"] >= $morgen) && ($entry["To"] < $uebermorgen)){ $pos = strpos($entry["Name"], "Geburtstag", 0); if ($pos === false) { if ($entry["allDay"]){ if ($morgen_flag){ $text .= "Morgen ".PHP_EOL; $morgen_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } } else if (time() < $entry["To"]){ if ($morgen_flag){ $text .= "Morgen ".PHP_EOL; $morgen_flag = false; } $text .= "um ".$zeit; if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } } } } else if (($entry["From"] <= $morgen) && ($entry["To"] >= $uebermorgen)){ if ($morgen_flag){ $text .= "Morgen ".PHP_EOL; $morgen_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $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 = ""; $zeit = $stunde." Uhr ".$minute . " "; } else{ $entry["From"] += 7200; $entry["To"] -= 7200; $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)){ $pos = strpos($entry["Name"], "Geburtstag", 0); if ($pos === false) { if ($entry["allDay"]){ if ($uebermorgen_flag){ $text .= "Übermorgen ".PHP_EOL; $uebermorgen_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } } else if (time() < $entry["To"]){ if ($uebermorgen_flag){ $text .= "Übermorgen ".PHP_EOL; $uebermorgen_flag = false; } $text .= "um ".$zeit; if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $text .= $entry["Name"] ." ".PHP_EOL; } } } } else if (($entry["From"] <= $uebermorgen) && ($entry["To"] >= $ende)){ if ($uebermorgen_flag){ $text .= "Übermorgen ".PHP_EOL; $uebermorgen_flag = false; } if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){ $text .= $entry["Name"] . " in " . $entry["Location"]." ".PHP_EOL; } else{ $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.$text; $html_text = ''; $html_text = str_replace(PHP_EOL, '
', $text); $html_text = str_replace('Heute', 'Heute', $html_text); $html_text = str_replace('Morgen', 'Morgen', $html_text); $html_text = str_replace('Übermorgen', 'Übermorgen', $html_text); $text = str_replace('Morgen', '' . 'Morgen', $text); $text = str_replace('Übermorgen', '' . 'Übermorgen', $text); SetValue(24170, $text); SetValue(46480, '

'.$html_text.'

'); SetValue(58360, '

'.$html_text.'

'); ?>

Auf Anhieb kann ich keinen Fehler sehen. Du hättest vielleicht erstmal nur mit 2 Kalender anfangen sollen. Jetzt müsste man mit var_dump nach array_merge nachschauen ob die Daten auch zusammengefügt wurde.

btw. Wenn Du Scripte in Posts einfügen willst nimm das Icon „</>“ um vorformatierten Text, z.B. Scripte, einzufügen.

Ralf

1 „Gefällt mir“

Hallo Ralf,
habe heute mal wieder Zeit mich ein bisschen rumzuspielen.

Hab mal mit Var_dump jedes einzelne Array angeschaut, danach mal das array_merge.
Termine werden überall abgerufen.

Aber leider wird nur ein Kalender angezeigt.

<?php
//error_reporting(E_ERROR | E_PARSE | E_NOTICE);
//error_reporting(E_ALL & ~E_DEPRECATED);
//ini_set('display_errors', 1);

ICCR_UpdateCalendar(56792);
$calendar = ICCR_GetCachedCalendar(56792);
$calendar1_array = json_decode($calendar, true);
//var_dump($calendar1_array);


//ICCR_UpdateCalendar(13795);
//$calendar = ICCR_GetCachedCalendar(13795);
//$calendar2_array = json_decode($calendar, true);
//var_dump($calendar2_array)
//$calendar_array = array_merge($calendar1_array, $calendar2_array);

ICCR_UpdateCalendar(32805);
$calendar = ICCR_GetCachedCalendar(32805);
$calendar3_array = json_decode($calendar, true);
//var_dump($calendar3_array);
//$calendar_array = array_merge($calendar1_array, $calendar2_array, $calendar3_array);

ICCR_UpdateCalendar(39857);
$calendar = ICCR_GetCachedCalendar(39857);
$calendar4_array = json_decode($calendar, true);
//var_dump($calendar4_array);
//$calendar_array = array_merge($calendar1_array,$calendar3_array, $calendar2_array, $calendar4_array);

ICCR_UpdateCalendar(43452);
$calendar = ICCR_GetCachedCalendar(43452);
$calendar5_array = json_decode($calendar, true);
//var_dump($calendar5_array);
//$calendar_array = array_merge($calendar2_array, $calendar1_array, $calendar3_array, $calendar4_array, $calendar5_array):array;

$calendar_array = array_merge_recursive($calendar1_array, $calendar3_array, $calendar4_array, $calendar5_array);

//$calendar_array = $calendar1_array + $calendar2_array + $calendar3_array + $calendar4_array + $calendar5_array;
var_dump($calendar_array);

$heute = mktime(0, 0, 0, date("m")  , date("d") + 0, date("Y"));
$heute_flag = true;
$morgen = $heute + 86400;
$morgen_flag = true;
$uebermorgen = $morgen + 86400;
$uebermorgen_flag = true;
$ende = $uebermorgen + 86400;
$text = "";
SetValue(33152, false);
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"]));
        $entry["From"] += 7200;
        $entry["To"] -= 7200;
    }
    if (($entry["From"] >= $heute) && ($entry["To"] < $morgen)){
        $pos = strpos($entry["Name"], "Geburtstag", 0);
        if ($pos === false) {        
            if (($entry["allDay"]) && (date('G') < 13)){
                if ($heute_flag){
                    $text .= "Heute   ".PHP_EOL;
                    $heute_flag = false;
                }
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
                if (strpos($entry["Name"], "Urlaub") !== false) SetValue(33152, true);
            }
            else if (time() < ($entry["From"] + 1800)){
                if ($heute_flag){
                    $text .= "Heute   ".PHP_EOL;
                    $heute_flag = false;
                }
                $text .= "um ".$zeit;
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
            }
        }
    }
    else if (($entry["From"] <= $heute) && ($entry["To"] >= $morgen)){
        if ($heute_flag){
            $text .= "Heute   ".PHP_EOL;
            $heute_flag = false;
        }
        if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
            $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
        }
        else{
            $text .= $entry["Name"] ."    ".PHP_EOL;
        }
        if (strpos($entry["Name"], "Urlaub") !== false) SetValue(10677, true);
    }
    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 = "";
        $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"]));
        $entry["From"] += 7200;
        $entry["To"] -= 7200;
    }
    if (($entry["From"] >= $morgen) && ($entry["To"] < $uebermorgen)){
        $pos = strpos($entry["Name"], "Geburtstag", 0);
        if ($pos === false) {        
            if ($entry["allDay"]){
                if ($morgen_flag){
                    $text .= "Morgen   ".PHP_EOL;
                    $morgen_flag = false;
                }
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
            }
            else if (time() < $entry["To"]){
                if ($morgen_flag){
                    $text .= "Morgen   ".PHP_EOL;
                    $morgen_flag = false;
                }
                $text .= "um ".$zeit;
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
            }
        }
    }
    else if (($entry["From"] <= $morgen) && ($entry["To"] >= $uebermorgen)){
        if ($morgen_flag){
            $text .= "Morgen   ".PHP_EOL;
            $morgen_flag = false;
        }
        if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
            $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
        }
        else{
            $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 = "";
        $zeit = $stunde." Uhr ".$minute . " ";
    }
    else{
        $entry["From"] += 7200;
        $entry["To"] -= 7200;
        $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)){
        $pos = strpos($entry["Name"], "Geburtstag", 0);
        if ($pos === false) {        
            if ($entry["allDay"]){
                if ($uebermorgen_flag){
                    $text .= "Übermorgen   ".PHP_EOL;
                    $uebermorgen_flag = false;
                }
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
            }
            else if (time() < $entry["To"]){
                if ($uebermorgen_flag){
                    $text .= "Übermorgen   ".PHP_EOL;
                    $uebermorgen_flag = false;
                }
                $text .= "um ".$zeit;
                if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
                    $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
                }
                else{
                    $text .= $entry["Name"] ."    ".PHP_EOL;
                }
            }
        }
    }
    else if (($entry["From"] <= $uebermorgen) && ($entry["To"] >= $ende)){
        if ($uebermorgen_flag){
            $text .= "Übermorgen   ".PHP_EOL;
            $uebermorgen_flag = false;
        }
        if ((strstr($entry["Location"], '27299', false) === false) && (strlen($entry["Location"]) > 5)){
            $text .= $entry["Name"] . " in " . $entry["Location"]."    ".PHP_EOL;
        }
        else{
            $text .= $entry["Name"] ."    ".PHP_EOL;
        }
    }
    if ($entry["From"] > $ende){
        break;
    }
}

if (strlen($text) < 2) $text = "Heute keine Termine";
print PHP_EOL.PHP_EOL.$text;
$html_text = '';
$html_text = str_replace(PHP_EOL, '<br>', $text);
$html_text = str_replace('Heute', '<strong>Heute</strong>', $html_text);
$html_text = str_replace('Morgen', '<strong>Morgen</strong>', $html_text);
$html_text = str_replace('Übermorgen', '<strong>Übermorgen</strong>', $html_text);
$text = str_replace('Morgen', '<break time="1s"/>' . 'Morgen', $text);
$text = str_replace('Übermorgen', '<break time="1s"/>' . 'Übermorgen', $text);
SetValue(24170, $text);
SetValue(46480, '<p style="font-size: 1em;background-color:red;color:white;line-height:1.5em">'.$html_text.'</p>');
SetValue(58360, '<p style="font-size: 0.5em;color:white;line-height:1em">'.$html_text.'</p>');

?>

Das ist alles, was ausgegeben wird, obwohl heute noch ein Ganztagestermin und morgen 2 Termine stehen.

Übermorgen
Archäologie-Workshop 6. Klassen

Hi,
Problem erkannt. Problem gebannt.

Aus Geschwindigkeitsgründen höre ich auf wenn ein Termin nach Übermorgen liegt. Das klappt hier natürlich nicht weil es danach noch X Termine geben kann. Lösung ist ganz einfach:

Am Ende von der Schleife über alle Termine steht:

    if ($entry["From"] > $ende){
        break;
    }

kommentiere das break mal aus oder lösche alle 3 Zeilen dann muss es gehen.

Ralf

Top Sache!!! Funktioniert :slight_smile:

Eine Kleinigkeit noch. Ich habe im Haus verschiedene Anzeigemöglichkeiten Tablet…etc…

Leider zeigt es mir auf dem FullyKioskBrowser keine HTML Boxen an.

Wollte nun die TEXT Box verwenden… nur kommt da kein Ordentliches Format.

image

if (strlen($text) < 2) $text = "Heute keine Termine";

print PHP_EOL.PHP_EOL.$text;

$html_text = '';

$html_text = str_replace(PHP_EOL, '<br>', $text);

$html_text = str_replace('Heute', '<strong>Heute</strong>', $html_text);

$html_text = str_replace('Morgen', '<strong>Morgen</strong>', $html_text);

$html_text = str_replace('Übermorgen', '<strong>Übermorgen</strong>', $html_text);

$text = str_replace('Morgen', '<break time="1s"/>' . 'Morgen', $text);

$text = str_replace('Übermorgen', '<break time="1s"/>' . 'Übermorgen', $text);

SetValue(24170, $text);

SetValue(46480, '<p style="font-size: 1em;background-color:red;color:white;line-height:1.5em">'.$html_text.'</p>');

SetValue(58360, '<p style="font-size: 0.5em;color:white;line-height:1em">'.$html_text.'</p>');

Moin,
ich generiere doch 2 Strings. Speichere $text vor der Zeile mit

<break time="1s"/>

in eine weitere Variable dann solltest Du einen reinen Text haben. Die 1s ist bei mir für Alexa.

Ralf

Guten Morgen,

nachdem das Modul nun „ewig“ reibungslos funktioniert hat, bekomme ich nach dem Symcon-Update folgende Fehlermeldung beim Aktualisieren des Kalenders angezeigt:

#1 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(497): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20240117T163000', Array)
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(319): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20240117T163000', Array)
#3 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(186): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#4 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(827): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#5 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(862): iCalCalendarReader->ReadCalendar()
#6 /var/lib/symcon/scripts/__generated.inc.php(3995): iCalCalendarReader->UpdateCalendar()
#7 /-(8): ICCR_UpdateCalendar(56245)
#8 {main}
  thrown in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php on line 106
Änderungen übernommen

Führe ich das Script manuell aus, so erscheint folgende Fehlermeldung:

Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone (Customized Time Zone) in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php:103
Stack trace:
#0 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php(103): DateTimeZone->__construct('Customized Time...')
#1 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(526): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('Customized Time...')
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(497): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20240117T163000', Array)
#3 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(319): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20240117T163000', Array)
#4 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(186): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#5 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(827): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#6 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(862): iCalCalendarReader->ReadCalendar()
#7 /var/lib/symcon/scripts/__generated.inc.php(3995): iCalCalendarReader->UpdateCalendar()
#8 /var/lib/symcon/scripts/20113.ips.php(11): ICCR_UpdateCalendar(56245)
#9 {main}

Next InvalidArgumentException: Invalid DateTimeZone 'Customized Time Zone' in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php:106
Stack trace:
#0 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(526): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('Customized Time...')
#1 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(497): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20240117T163000', Array)
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(319): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20240117T163000', Array)
#3 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(186): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#4 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(827): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#5 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(862): iCalCalendarReader->ReadCalendar()
#6 /var/lib/symcon/scripts/__generated.inc.php(3995): iCalCalendarReader->UpdateCalendar()
#7 /var/lib/symcon/scripts/20113.ips.php(11): ICCR_UpdateCalendar(56245)
#8 {main}
  thrown in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php on line 106

Habe ich irgendwo einen mir nicht bekannten Bedienfehler, ist Office365 nicht mehr kompatibel oder hat das Modul hier tatsächlich einen Fehler?

Viele Grüße

Der Fehler passiert beim Kalendereintrag mit

... processDatePropsTZIDattribute('DTSTART', '20240117T163000', Array)

Hat der Termin am 17.1.2024 16:30 Uhr vielleicht eine besondere Eigenschaft? Oder es hat mit der Zeitzone etwas besonderes auf sich. Vielleicht kannst du den Termin einmal löschen und schauen, ob der Fehler dann eventuell weg ist.

Ansonsten müsstest du mir einmal einen Debug von der Kalenderverarbeitung zukommen lassen

vielen Dank für die rasche Rückmeldung!
Ich habe den Termin gelöscht - jetzt erscheint aber schon der nächste Termin in der Fehlermeldung:

Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone (Customized Time Zone) in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php:103
Stack trace:
#0 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php(103): DateTimeZone->__construct('Customized Time...')
#1 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(526): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('Customized Time...')
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(497): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20240221T170000', Array)
#3 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(319): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20240221T170000', Array)
#4 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(186): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#5 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(827): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#6 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(862): iCalCalendarReader->ReadCalendar()
#7 /var/lib/symcon/scripts/__generated.inc.php(3995): iCalCalendarReader->UpdateCalendar()
#8 /-(8): ICCR_UpdateCalendar(56245)
#9 {main}

Next InvalidArgumentException: Invalid DateTimeZone 'Customized Time Zone' in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php:106
Stack trace:
#0 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(526): Kigkonsult\Icalcreator\Util\DateTimeZoneFactory::assertDateTimeZone('Customized Time...')
#1 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(497): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDatePropsTZIDattribute('DTSTART', '20240221T170000', Array)
#2 /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/RegulateTimezoneFactory.php(319): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processDtProp('DTSTART', '20240221T170000', Array)
#3 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/iCalImporter.php(186): Kigkonsult\Icalcreator\Util\RegulateTimezoneFactory->processCalendar()
#4 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(827): iCalImporter->ImportCalendar('BEGIN:VCALENDAR...')
#5 /var/lib/symcon/modules/.store/de.bumaas.ical/iCalCalendarReader/module.php(862): iCalCalendarReader->ReadCalendar()
#6 /var/lib/symcon/scripts/__generated.inc.php(3995): iCalCalendarReader->UpdateCalendar()
#7 /-(8): ICCR_UpdateCalendar(56245)
#8 {main}
  thrown in /var/lib/symcon/modules/.store/de.bumaas.ical/libs/iCalcreator-master/src/Util/DateTimeZoneFactory.php on line 106

Ich habe versucht einen Debug-Auszug zu erstellen, schick ihn dir aber per PM, da durch die Termine auch Adressen, etc. hinterlegt sind.

Irgend etwas muss bei deinem Kalender passiert sein. Die meisten Einträge sind der Zeitzone

TZID=W. Europe Standard Time

zugeordnet. Die sind alle ok.

Aber dann sind da noch 14 Einträge, die der Zeitzone

TZID=Customized Time Zone

zugeordnet sind. Genau diese Einträge können nicht verarbeitet werden.

Ich befürchte, du musst herausfinden, wie die in deinen Kalender gekommen sind und sie löschen.