Google Kalender Termine im WebFront anzeigen

Hallo,

erste Priorität hat immer der erste Eintrag. Es wird so lange die Temperatur dieses Eintrags gesetzt bis er beendet ist. Danach folgen erst die anderen Einträge. In deinem Beispiel also:
11-17: 26°C
17-19: 29°C
ab 19h: NachtTemp

Hallo,

Script funktioniert auf Anhieb ! danke !

Da ich leider in php nicht ( oder noch nicht ) so fit bin , folgende Frage :

Könnte man bei Terminen , die man als Tagestermin ( Geburtstag, Müll etc. ) anlegt irgendwie die Zeit 0:00 ausblenden, dass halt nur das Datum dasteht ?

Wenn ja würde ich mich über den Code dafür freuen.

Gruss Thomas

Hallo Thomas,

füge das ein.

	 $date= Str_Replace("00:00","  ",$date);

hab ich auch bei mir im Müllscript.

Woran ich gerade noch feststecke, ist das auslesen der Feiertage,über Google.
Hat das schon jemand, weil es hier kein Magiccockie gibt.

Mfg
Michael

Das wollte ich auch gerade fragen …

… einfach das angeben

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

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

funkt problemlos mit dem rest …

ich habe hier mein ganzes script mal rangehängt
das liest mehrere kalender ein, sortiert die dinger dann nach datum und gibt die ienmal in eine variable aus und einmal in ein Textfile (Das dann wiederum ein Diashow programm einliest, um scrolltext darstellen zu können)

vielleicht brauchts ja wer … (Code ohne Gewähr … )

<?php

function DateCompare($a, $b) {
	if ( $a['Datum'] == $b['Datum'] ) return 0;
	if ( $a['Datum'] < $b['Datum'] )  return -1;
	return 1;
}

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);
		 }
		 $thisData['shortCut'] = $shortCut;
		 $thisData['Bezeichnung'] = $title.$where;
		 $calcData[] = $thisData;
	}
}

ReadCalendar('userid1', 'magiccookie1', 30, 'S');
ReadCalendar('userid2', 'magiccookie2', 30, 'M');
ReadCalendar('userid3', 'magiccookie3', 30, 'K');
ReadCalendar('de.austrian%23holiday%40group.v.calendar.google.com', '', 30, 'H');

usort($calcData, 'DateCompare');
$calDataTxt = '';
foreach($calcData as $thisData)
	$calDataTxt .= $thisData['DatumTxt'].' '.$thisData['Bezeichnung']."
";

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

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

$handle = fopen("C:/IP-Symcon/Termine.txt", "w");
fwrite($handle, $calDataTxt);
fclose($handle);

if($IPS_SENDER == "Execute")
{
    echo "<pre>";
    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;
}

?>

…sorry für meine Anfrage - hab jetzt auch den Google Kalender am Laufen, jedoch sobald ich SSL bei Google aktiviere funktioniert er nicht mehr - auch nicht, wenn ich bei der Feed URL „https“ angebe…

Kann mir jemand helfen?

Super Skript, vielen Dank! Läuft schon produktiv mit mehreren Kalendern, Skript konnte ich soweit anpassen dafür :wink:

Auch die 00:00 Uhr für Tagestermine konnte ich entfernen, sehr schöne!!!

Nur zeigt es mir die Termine nur die Startzeit an, nicht das geplante Ende. Hat mir wer ein Tip, wie ich den Code hierfür erweitern / umändern muss? Bin leider noch nicht so ganz fit drin…

Es tut mir leid, aber ich bekomme das einfach nicht hin.
Ich habe schon mehrfach den Magic Cookie ausgelesen, verglichen, Kalender frei gegeben etc…nix half.
Ich bekomme immer diese Fehlermeldungen:

Warning: simplexml_load_file() [function.simplexml-load-file]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt. in C:\IP-Symcon\scripts\22082.ips.php on line 6

Warning: simplexml_load_file(http://...@woytke.net/private-123456...00&sortorder=a) [function.simplexml-load-file]: failed to open stream: No such file or directory in C:\IP-Symcon\scripts\22082.ips.php on line 6

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity „http://www.google.com/calendar/feeds/michael@woytke.net/private-12345678901234567890/full?singleevents=true&max-results=10&orderby=starttime&start-min=2010-02-16T13%3A40%3A57%2B01%3A00&sortorder=a“ in C:\IP-Symcon\scripts\22082.ips.php on line 6

Hier das Skript. Ich habe lediglich den magic-cookie ausgetauscht :wink:


$userid = 'michael@woytke.net';
$magicCookie = '12345678901234567890';
echo $userid;
$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;
}

Hat Jemand von Euch eine Idee an was das liegen könnte?

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

probier das mal:

$feedURL = "http://www.google.com/calendar/feeds/".$userid."/private-".$magicCookie."/full";
print $feedURL; 

ergebnis ist bei mir beidesmal das gleiche
nimm den ergebnisstring in den zwischenspeicher und füge mal in einen browser deiner wahl ein. wenn es funzt ist der string ok !

Hi, Danke für den Tipp.
Es sieht so aus, als würde der cookie bei dem Kalender nicht funktionieren.
Ich habe nun einen anderen Kalender abgefragt (anderer Cookie) und da läuft es auf Anhieb. Anyway…Danke schön.
Nur noch eine Frage. Paresy schreibt
„-Link erstellen und auf „Kalender“ Variable zeigen lassen (Tipp: Nicht die Kalender Variable verschieben!)“

Wie kann ich unter IPS bzw Webfront einen Link erstellen?
Ich finde nur Variablen etc die ich erstellen kann.

Objekt hinzufügen => Link hinzufügen.

Diese Option habe ich nicht.
Ich habe IPS Serverversion 2.04.
Daran wird es liegen ?!?!

ja, ab V2.1

OK…dann muss ich mir mal das Upgrade kaufen…
Danke Euch !!!

Hi @ all
ich hab mit dem skript probleme.
Folgende Fehler kommen:

Warning: simplexml_load_file(http://...@rettig4u.de/private-http://www.google.com/calendar/feeds/home_management%40rettig4u.de/private-ecc4adccxxxxxxxxxcd2f2f4b6a/basic/full?singleevents=true&max-results=10&orderby=starttime&start-min=2010-08-27T11%3A47%3A32%2B02%3A00&sortorder=a) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
in C:\IP-Symcon\scripts\15041.ips.php on line 8

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity „http://www.google.com/calendar/feeds/home_management@rettig4u.de/private-http://www.google.com/calendar/feeds/home_management%40rettig4u.de/private-ecc4adcxxxxxxxxef8ccd2f2f4b6a/basic/full?singleevents=true&max-results=10&orderby=starttime&start-min=2010-08-27T11%3A47%3A32%2B02%3A00&sortorder=a“ in C:\IP-Symcon\scripts\15041.ips.php on line 8

Notice: Trying to get property of non-object in C:\IP-Symcon\scripts\15041.ips.php on line 12

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\15041.ips.php on line 12

komme leider nicht weiter , habe mal den magiccookie in einem browser getestet da hat alles funktioniert :confused:

Hy,
könnte es sein das dir die php.xmlrpc.dll fehlt?

Hallo,

sieht so aus, als ob die XML-Datei mit den Kalenderdaten nicht gefunden wird. Das liegt wahrscheinlich an einer falschen URL.
Am Anfang steht in bei Dir in der URL noch „http://...@rettig4u.de/private-“. Dort ist der Fehler zu suchen.
Hast Du das Original-Skript von Paresy?

Schöne Grüße
Roland

Hast Du das Original-Skript von Paresy?

Hi Roland, ja es ist das orginale von Paresy, der link wurde von mir verstümmelt :wink: aber nicht der anfang dieser wird vom IPS so dargestellt. Wie bereits gesagt der Link funktioniert ja im Browser :frowning:

ähm wo müsste diese liegen?

Wichtig ist auch das Du das „@“ durch „%40“ ersetzt. Falls nicht, dann hätte das einen ähnlichen Effekt.

$userid = 'adresse[b]%40[/b]googlemail.com';

Schöne Grüße
Roland