Folgendes Skript kann Termine aus dem Google Kalender auslesen und als TextBox im WebFront anzeigen lassen. Es sieht nicht unbedingt toll aus, es kann auch nicht viel, aber es erfüllt den Zweck für den ich es brauchte.
> Einfach die nächsten 10 Termine untereinander mit Datum, Titel und Ort anzeigen zu lassen.
Installation:
-Skript in IP-Symcon hinzufügen und Code reinkopieren
-Mail Adresse bei UserID angeben
-Magic Cookie in Google herausfinden (Einstellungen -> Kalender -> Kalendername anklicken -> Privatadresse -> XML -> Cookie rauskopieren)
-Skript ausführen
-Link erstellen und auf „Kalender“ Variable zeigen lassen (Tipp: Nicht die Kalender Variable verschieben!)
-Erstellten Link an gewünschte Stelle schieben, Icon angeben.
-Fertig.
-> Damit das Skript ab und zu die Variable aktualisiert, habe ich ein zyklisches Ereignis hinzugefügt, dass das Skript immer um 03:00 Nachts aufruft.
<?php
$userid = 'adresse%40googlemail.com';
$magicCookie = 'aaaabbbbccccddddeeeeffff0000000';
$feedURL = "http://www.google.com/calendar/feeds/$userid/private-$magicCookie/full";
$feedParams = "?singleevents=true&max-results=10&orderby=starttime&start-min=".urlencode(date("c"))."&sortorder=a";
$sxml = simplexml_load_file($feedURL.$feedParams);
$today = 0;
$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 );
if(date("d.m.y") == date("d.m.y", $startTime))
{
$today++;
} else {
if($today > 0)
{
$today = 0;
$date .= "
";
}
}
$where = utf8_decode($gd->where->attributes()->valueString);
if(strlen($where) > 0) {
$where = " (".$where.")";
}
$date .= date("d.m.Y H:i", $startTime )." ".$title.$where."
";
}
SetValue(CreateVariableByName($IPS_SELF, "Kalender", 3, "~TextBox"), $date);
if($IPS_SENDER == "Execute")
{
echo "<pre>";
echo $date;
}
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;
}
?>