Google Kalender Termine im WebFront anzeigen

Wie? Früh? Ich hab das erste Hemd schon nass! :smiley:

Wenn du das ScriptStartest hast Du nach Ausführung
unterhalb des Scriptes eine Variable die da heisst:

„Kalender“

Diese Variable ist eine Stringvariable die Du so im Webfront anzeigen lassen kannst.

Hallo Martin,

vielen Dank… Jeeeeetzt hab ich es auch gepeilt! :stuck_out_tongue:

Gab / Gibt es denn nicht auch irgendwo Ansätze das ganze grafisch darzustellen? http://www.ip-symcon.de/forum/89569-post197.html ??

Schau dir dasmal an. Die grafische Aufbereitung musst Du selber zusammenstricken.

Sohab ich das gelöst. Ist aber in VB.NET.
Hiereinmal komplett.

Welche Visu nutzt Du denn?

Danke, die Links gucke ich mir gleich mal an… Ich nutze das Webfront und wohl bald iFront.

In dem Beitrag #15+#16 ist ein Monats und Jahreskalender die Du so im Webfront anzeigen lassen kannst (String Variable in HTML).

Ich glaube, dass kommt schon an meine Wünsche ran… Nur leider kann ich es grade nicht testen - sitze im Büro hinter einem Proxy. Und wenn ich es richtig verstanden habe, kommt php nicht so ohne weiteres mit einem Proxy klar?! Versuche grade das irgendwie einzubauen http://www.ip-symcon.de/forum/f53/google-kalender-termine-webfront-anzeigen-8822/index9.html#post160265

Hallo Schablone!

Danke, das finde ich echt super von dir!

Du brauchst dich aber nicht stressen.

Gruß
Gerald

Hallo!

Seit dem Update auf 2.6 bekomme ich immer nachfolgende Fehlermeldung.

Could not connect to calendar.

Danke für die Hilfe.

Gruß
Gerald

Hallo Gerald,

ich hatte das gleiche Problem, schau mal im Logfile nach ob es beim Starten einen Fehler beim Laden der php_openssl.dll gab.
Geholfen hat bei mir die php_openssl.dll gegen diese
http://www.ip-symcon.de/forum/threads/19210-php_openssl-dll?p=175270#post175270

zu tauschen und dann den IPS Dienst neu starten. Danach ging es wieder.

Gruß,

Ansgar

Hallo!

DANKE!! Genau DAS war das Problem.

Gruß
Gerald

Moin Moin,

ich habe das Skript von paresy nun auch bei mir einsetzen wollen.
Leider erhalten ich folgende Fehlermeldung:


Warning: main(): Node no longer exists in C:\IP-Symcon\scripts\12896.ips.php on line 36

Warning: main(): Node no longer exists in C:\IP-Symcon\scripts\12896.ips.php on line 36

Warning: main(): Node no longer exists in C:\IP-Symcon\scripts\12896.ips.php on line 36

Warning: main(): Node no longer exists in C:\IP-Symcon\scripts\12896.ips.php on line 36

Zeile 36 des Skripts:

$where = utf8_decode($gd->where->attributes()->valueString);

Die Verbindung funktioniert grundsätzlich und meine beiden Testeinträge werden auch in die Variable geschrieben, leider aber immer mit der selben falschen Datum-/Zeitangabe:

Beispiel:
01.01.1970 01:00 Test

Tatsächlich datiert der Beispiel-Termin „Test“ auf den 11. Januar 2013, 23:10 Uhr

Viele Grüße,
Alex

Hi,
ich habe mal eine Frage zu paresy’s Kalender-Script von dem ersten Beitrag. Das Script läuft bei mir recht gut. Nur leider sehe ich nur meinen Karlender. Gibt es eine Möglichkeit sich einen zweiten oder einen Dritten Karlender anzeigen zu lassen?

Ich weiß dass schon einmal darüber diskutiert wurde aber ich bin aus dieser Diskussion nicht wirklich schlau geworden.

Gruss TEAS

Hey,

ich habe das selbe Problem wie Alex86, er nimmt nicht das aktuelle Datum, zeigt nur 3 verschiedene Termine jeweils 3 mal an, mehr nicht. Und Datum auch der 01.01.1970?

Gruss

Zur Not dasmal probieren!

Hallo,
ich habe jetzt das Scrip von snOOpy aus dem Beitrag 25 etwas Modifiziert und zum laufen bekommen.

Ich habe aber noch zwei Problem und hoffe es gibt hier jemanden der fitter ist als ich in PHP.

Als erst zeigt das Script mir 3 Kalender an ich bekomme es aber nicht hin das mir der Geburts- und Jahrestage meiner Kontakte anzeigt.

Dann wollte ich das er mir die Termine die Aktuell (Heute) in eine Zweite Variable schreibt. Aber irgendwie habe ich da einen Fehler in der Zeile 83 und 85.
Mein Script sieht zur Zeit so aus:

// --------- Einstellungen -------

$user_1_ID = "XXXXX";
$user_1_magicCookie = "XXXXX";
$Kalendername_1 = " ";

$user_2_ID = "XXXXX";
$user_2_magicCookie = "XXXXX";
$Kalendername_2 = " ";

$user_3_ID = "de.german%23holiday%40group.v.calendar.google.com";
$user_3_magicCookie = "";
$Kalendername_3 = " ";

// --------- Ab hier nichts mehr ändern -------

function DateCompare($a, $b) {
    if ( $a['Datum'] == $b['Datum'] ) return 0;
    if ( $a['Datum'] < $b['Datum'] )  return -1;
    return 1;
}
// Termine Einlesen
function ReadCalendar($userid, $magicCookie, $maxDays, $shortCut) {
    global $calcData;

    if ($magicCookie != '')
        $feedURL = "http://www.google.com/calendar/feeds/$userid/private-$magicCookie/full";
   else
        $feedURL = "http://www.google.com/calendar/feeds/$userid/public/full";
    $feedParams = "?singleevents=true&max-results=5&orderby=starttime&start-min=".urlencode(date("c"))."&start-max=".urlencode(date("c", time()+24*60*60*$maxDays))."&sortorder=a";
    $sxml = simplexml_load_file($feedURL.$feedParams);

    $date = "";
    foreach ($sxml->entry as $entry) {
        $title = stripslashes(utf8_decode($entry->title));
        $gd = $entry->children('http://schemas.google.com/g/2005');

        $startTime = '';
        if ( $gd->when ) {
            $startTime = $gd->when->attributes()->startTime;
        } elseif ( $gd->recurrence ) {
            $startTime = $gd->recurrence->when->attributes()->startTime;
        }
        $startTime = strtotime( $startTime );
       $thisData['Datum'] = $startTime;

        $where = utf8_decode($gd->where->attributes()->valueString);
        if(strlen($where) > 0)
            $where = " (".$where.")";

        if (date('H:i', $startTime) == '00:00') {
            $thisData['DatumTxt'] = date("d.m.Y", $startTime);
         }
         else {
            $thisData['DatumTxt'] = date("d.m.Y - H:i", $startTime);
         }
         
     if (date('d.m.Y', $startTime) == date('d.m.Y')
	      or date("d.m.Y - H:i", $startTime) == date('d.m.Y')){
     
			//Termine Heute
			$thisData['shortCut'] = $shortCut;
         $thisData['Bezeichnung'] = $title.$where;
         $calcData2[] = $thisData;

			} else {
         //Termine demnächst
         $thisData['shortCut'] = $shortCut;
         $thisData['Bezeichnung'] = $title.$where;
         $calcData[] = $thisData;
         }
    }
}

ReadCalendar($user_1_ID, $user_1_magicCookie , 30, $Kalendername_1);
ReadCalendar($user_2_ID, $user_2_magicCookie , 30, $Kalendername_2);
ReadCalendar($user_3_ID, $user_3_magicCookie , 30, $Kalendername_3);

// Termine Heute
usort($calcData2, 'DateCompare');
$calDataTxt2 = '';
foreach($calcData2 as $thisData)
    $calDataTxt2 .= $thisData['DatumTxt'].' - '.$thisData['Bezeichnung']."
";

SetValue(CreateVariableByName($IPS_SELF, "Termine Heute", 3, "~TextBox"), $calDataTxt);

$calDataTxt2 = '';
foreach($calcData2 as $thisData)
    $calDataTxt2 .= $thisData['DatumTxt'].' - '.$thisData['shortCut'].$thisData['Bezeichnung']."
";


// Termine demnächst
usort($calcData, 'DateCompare');
$calDataTxt = '';
foreach($calcData as $thisData)
    $calDataTxt .= $thisData['DatumTxt'].' - '.$thisData['Bezeichnung']."
";

SetValue(CreateVariableByName($IPS_SELF, "Termine demnächst", 3, "~TextBox"), $calDataTxt);
$calDataTxt = '';

foreach($calcData as $thisData)
    $calDataTxt .= $thisData['DatumTxt'].' - '.$thisData['shortCut'].$thisData['Bezeichnung']."
";

$handle = fopen("C:\Users\Haus\Desktop\IP-SymconTermine.txt", "w");
fwrite($handle, $calDataTxt);
fclose($handle);

// Testanzeige
if($IPS_SENDER == "Execute")
{
    
    echo "<pre>";
    echo "Termine Heute 
";
    echo "$calDataTxt_2 
";
    echo "Termine demnächst 
";
    echo $calDataTxt;

}

function CreateVariableByName($id, $name, $type, $profile = "")
{
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}

Meine Fehlermeldung sieht wie folgt aus:

Warning: usort() expects parameter 1 to be array, null given in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 83
[0] in function usort in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 83

Warning: Invalid argument supplied for foreach() in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 85

Notice: Undefined variable: calDataTxt in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 88

Warning: Cannot auto-convert to String from Variant. Error: Could not convert variant of type (Null) into type (String) in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 88
[0] in function SetValue in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 88

Warning: Invalid argument supplied for foreach() in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 91
Termine Heute

Notice: Undefined variable: calDataTxt_2 in C:\Program Files\IP-Symcon\scripts\36280.ips.php on line 117

Ich hoffe es weis einer rat und kann mir weiterhelfen
Gruss TEAS1512

Hey,

habe das Problem herrausgefunden, hier meine Lösung:

in der Linie 5 oder 6:

$feedURL = „http://www.google.com/calendar/feeds/bo4smu4r2qd9unjaqo8c03siek%40group.calendar.google.com/private-XXXXXXXXXXXXX/full“;

muss am Ende „full“ stehen, wenn man aus dem Kalender kopiert steht dort „Basic“. Ausserdem kein https, nur http.

Steht auch schon im Thread, aber nochmal kurz erwähnt muss in der Linie 3 oder 4:
$magicCookie = ‚b7091c6XXXXXXXXXXXX925043‘;
nur die Buchstaben/Zahlenkombi stehen, nicht das private und auch nicht das Minus etc.

Nun klappts bei mir Super, habe das einfach immer übersehen.
Jetzt wüsste ich nur gerne wie man die Anzahl der Angezeigten Termine begrenzen kann :frowning:

Gruss

ProfDexter

Hey Leute,

nochmal ne frage, die Termine werden bei mir nicht automatisch aktualisiert, das ist so nicht korrekt oder?
Habe noch abgelaufene Termine drin und neue sind nicht enthalten?
Oder muss ich das Script automatisch ausführen lassen nach Zeit?

Gruss

ProfDexter

Edit:
Ich habe ein Zyklisches Ereignis hinzugefügt das die Scripts einmal pro Tag ausführt, klappt prima.

Hat sich an der Schnittstelle zu dem GoogleKalender etwas geändert?
Seit Anfang März bekomme ich keine Termine mehr in IPS aktualisiert.

Ich hätte ein paar Fragen zu diesem Script. Wie schaffe ich es Das ich Feiertage anzeigen kann? Diese möchte ich
gerne in rot Anzeigen lassen??

Danke

Hallo,
ich benütze das Script von „Paresy“ doch leider funktioniert das mit den Österreichischen Feiertagen nicht! Hab deinen Link für die Feiertage benützt und eingefügt:

$feedURL = "http://www.google.com/calendar/feeds/$userid/public/full";

bei mir ist $userid dann de.austrian%23holiday%40group.v.calendar.google.com

Kannst du mir einen Tipp geben?!

Danke