Scripte für den Google Kalender API V3

Was fehlt denn?

Hallo Martin,

[b]wie in dem Bild zu erkennen, wird in dem Monatskalender keine Einträge dargestellt.
In der Einzeldarstellung schon.

Es sind die gleichen Benutzerdaten hinterlegt,[/b] das Script läuft ohne Fehler durch, ich weiß
nicht, muss man noch weitere Dinge beachten in dem Monatskalender ??

Gruß Achim

Was für Einträge willst du denn im Monatskalender eingetragen haben?

Die ganzen kompletten Termine in Ultra-Micro-Schrift in dem kleinen Kästchen?

So wie es aussieht funktioniert dein Kalender doch, an den Tagen wo Termine sind, wird dir das doch angezeigt (Farbe).

Oder habe ich dich falsch verstanden?

Grüsse,
Doc

Ich habe das auch noch nicht verstanden. Im Monatskalender werden Termine angezeigt.

Hallo Martin,

danke für Dein zeitnahes Feedback.

Ich hatte vor der Umstellung von Google dieses Script hier genutzt :


 <?php
// Hier die GoogleKalender eintragen
// ReadCalendar(Userid, MagicCookie, Tage die abgerufen werden, ShortCut für farbige Sortierung)
ReadCalendar('XXXXXXXXX%40googlemail.com', 'XXXXXXXXXXXXXXXXXXXXXXX', 15, 4);


//Hier die Farbe für die ShortCuts angeben
$SC_Farbe[1] = "gray";
$SC_Farbe[2] = "#00AD00";
$SC_Farbe[3] = "darkred";
$SC_Farbe[4] = "lightblue";

//Hier den Style wählen
$blinkToday = true; // (true/false) blinken des heutigen Kalendereintrages An/Aus

/******** Farbnamen, RGB-Formatierung, Hex-Zahlen möglich *********/
$StyleText[1] = "white"; // Textfarbe Datum
$StyleText[2] = "gray"; // Textfarbe Wochentag

/*** xx-small, x-small, small, normal, large, x-large, xx-large ***/
/************** oder Angabe in pt - z.B. "12pt" *******************/
$StyleText[3] = "large"; // Textgröße Datum
$StyleText[4] = "normal"; // Textgröße Wochentag
$StyleText[5] = "normal"; // Textgröße Eintrag



/****************** Ab hier wieder die Finger lassen **************/
// Wochentage auf Deutsch
$tag[0] = "Sonntag";
$tag[1] = "Montag";
$tag[2] = "Dienstag";
$tag[3] = "Mittwoch";
$tag[4] = "Donnerstag";
$tag[5] = "Freitag";
$tag[6] = "Samstag";
$deco = "";
if($blinkToday)$deco = "blink";

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";
            //echo $feedURL; echo "/BR";
            }
else
        $feedURL = "http://www.google.com/calendar/feeds/$userid/public/full";

     $feedParams = "?singleevents=true&max-results=20&orderby=starttime&start-min=".urlencode(date("c",strtotime("today")))."&start-max=".urlencode(date("c", strtotime("+".$maxDays." day")))."&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 = '';
            $endTime = '';
          if ( $gd->when ) {
            $startTime = $gd->when->attributes()->startTime;
            $endTime = $gd->when->attributes()->endTime;
          } elseif ( $gd->recurrence ) {
            $startTime = $gd->recurrence->when->attributes()->startTime;
            $endTime = $gd->recurrence->when->attributes()->endTime;
          }
          $startTime = strtotime( $startTime );
          $endTime = strtotime( $endTime );
            $thisData['Datum'] = $startTime;

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

         $thisData['DatumTxt'] = date("d.m.Y", $startTime);
         $thisData['EndDatumTxt'] = date("d.m.Y", $endTime);
            $thisData['ZeitTxt'] = date("H:i", $startTime);
            $thisData['EndZeitTxt'] = date("H:i", $endTime);
            $thisData['shortCut'] = $shortCut;
         $thisData['Bezeichnung'] = $title.$where;
            if($thisData['ZeitTxt'] == "00:00" && $thisData['EndZeitTxt'] == "00:00")
           $thisData['EndDatumTxt'] = date("d.m.Y", strtotime($thisData['EndDatumTxt']."-1 day"));


            $calcData[] = $thisData;
            }
}

usort($calcData, 'DateCompare');
$calDataTxt = "<table style='border-spacing:0px; width:100%'>"; // Starte Tabellenansicht
$check_date = "";
foreach($calcData as $thisData)
{
    if($thisData['EndDatumTxt'] != date("d.m.Y", strtotime("yesterday")))
    {
        if($check_date != "" and $thisData['DatumTxt'] != $check_date)$calDataTxt .= "</table></th></tr>";
        if($thisData['DatumTxt'] != $check_date)
        {
            if($thisData['DatumTxt'] == date("d.m.Y"))$headerTxt = "Heute:";
            elseif($thisData['DatumTxt'] == date("d.m.Y", strtotime("+1 day")))$headerTxt = "Morgen:";
            else $headerTxt = $thisData['DatumTxt'];


            $calDataTxt .= "<tr><td style='  padding:4px;
                                                        backgroun-color:#213245;
                                                        background: -moz-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -webkit-gradient(linear, left top, right top, color-stop(4%,rgba(31,50,79,0)), color-stop(100%,#213245));
                                                        background: -webkit-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -o-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -ms-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: linear-gradient(to right, rgba(31,50,79,0) 40%), #213245 100%;'>
                                                        <span style='color:".$StyleText[1].";font-weight:200;font-size:".$StyleText[3]."'>"
                                                        .$headerTxt.
                                                        "</span></td>
                                           <td style='text-align:right; width:100px; padding:4px;background-color:#213245'>"
                                                        ."<span style='color:".$StyleText[2].";font-weight:normal;font-size:".$StyleText[4]."'>"
                                                        .$tag[date("w", strtotime($thisData['DatumTxt']))].
                                                        "<span>".
                                                        "</td>
                                                        </tr>
                                                        <tr>
                                                        <th colspan='2' style='text-align:left;padding-left:20px;padding-right:0px;padding-bottom:10px;padding-top:0px;'>
                                                        <table style='border-spacing:0px; width:100%;padding:5px; border:1px solid #1f3247;'>";
            $check_date = $thisData['DatumTxt'];
            $calDataTxt .= SetEintrag($thisData);
        }
        else
        {
            $calDataTxt .= SetEintrag($thisData);
         }
    }
}
$calDataTxt .= "</table></th></tr></table>"; // Tabelle schließen

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

/*********** Werte in eine Datei schreiben. Ich habe keine Verwendung dafür *******/

$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 $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;
}
function SetEintrag($thisData)
{
    global $tag, $SC_Farbe, $deco, $StyleText;
    if($thisData['ZeitTxt'] == "00:00")
        {
        if($thisData['DatumTxt'] == $thisData['EndDatumTxt'])$thisData['ZeitTxt']="Ganztägig";
        else $thisData['ZeitTxt']="bis ".substr($tag[date("w", strtotime($thisData['EndDatumTxt']))],0,2).", ".$thisData['EndDatumTxt'];
        }
    else $thisData['ZeitTxt'] .= " - ".$thisData['EndZeitTxt']." Uhr";
    if($thisData['DatumTxt'] == date("d.m.Y"))
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";;color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Bezeichnung']."</span></td>
                        <td style='text-align:right;'>
                        <span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['ZeitTxt']."</span></td></tr>";
    }
    else
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Bezeichnung']."</span></td>
                        <td style='text-align:right'><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['ZeitTxt']."</span></td></tr>";
    }

}

?>

Hier wurden die Einträge, so glaube ich mich zu erinnern auf Wochenbasis dargestellt, also so, dass man auch den
Inhalt des Termins sehen konnte.

Ich gebe Dir natürlich recht, in den kleinen Monatskalender geht das natürlich nicht.
Mit dem obigen Script, sah das alles sehr anschaulich aus und die Übersicht war ebenso angenehm.

Ich denke ich war ein wenig verwöhnt, als ich dies in Deinem Script vermisste. Vielleicht kommt das ja mal.

Dennoch vielen Dank

Gruß Achim

Hallo Miteinander - leider funktioniert der Kalender (2.1, der „normale“) nicht bei mir.
Es kommt folgende Meldung:

Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/calendar/v3/calendars/m3586saujqst7gm2pr1hh9tebc%40group.calendar.google.com/events?singleEvents=true&timeMin=2014-12-24T22%3A07%3A19%2B01%3A00&orderBy=startTime&maxResults=20: (404) Not Found' in C:\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php:111
Stack trace:
#0 C:\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php(63): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request))
#2 C:\IP-Symcon\scripts\google-api-php-client\src\Google\Task\Runner.php(172): call_user_func_array(Array, Array)
#3 C:\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php(47): Google_Task_Runner->run()
#4 C:\IP-Symcon\scripts\google-api-php-client\src\Google\Client.php(564): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
 in C:\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php on line 111

Ich habe das Zertifikat, die Google-Client-PHP-API sowie alles auf der Developer-Seite eingerichtet.
Es ist bei mir nun nur ein Kalender „drin“ - ich habe mir zwar schon einen Wolf gegoogelt, aber finde nichts.

Dazu: wo werden die Daten hingeschrieben?
Ich würde gerne wie hier beschrieben meine Heizung damit regeln:

Danke schonmal und Frohe Weihnachten!

Gruß,
Matthias

Hi Matthias,

Schau die mal Posting Nr.33 an. Ich hatte das selbe Problem. (Falsche eMail Adresse)

Gruß Uwe

Hallo Zusammen,

nach einen Praxistest mit dem Script für das eintragen eines Termines bei Googel habe ich das Script ein Wenig umgebaut. Problem war zum einen die Eingabe der Date bzw. Datenformate über den Touchscreen und die Problematik das es häufig zu Fehlern kam wenn das Enddatum durch einen Eingabefehler vor dem Startdatum lag.

Ich habe das Script so umgebaut das es man jetzt die Daten über Variablen einstellen kann und das Enddatum automatisch geändert wir falls es in der Vergangenheit liegt.

Hinzugekommen ist auch eine Terminübersicht . Das Heißt man stellt den Termin erst ein und erst wenn alles o.k. Wir auf Termin erstellen gedrückt und er Termin wir im Googel-Kalender eingetragen
Anbei auch das geänderte Script und eine kurze Anleitung

  1. Erstellen des Skripts Termin Eintragen an einer Beliebigen Stelle

<?
/*=============================================================
skrGoogleKalenderSchreiben - Martin Heinzel - 24.11.2011
Version: 2.0

Beschreibung:
Mit diesem Script werden Termine in den Google Kalender geschrieben.

Wiederholungen:

0  =  keine
1  =  wöchentlich
2  =  14 Tage
3  =  monatlich
4  =  jährlich

Änderungen
----------

30.11.2011 von Version 0.1 -> 1.0

Beschreibung:

Erste gültige Version des Scripts.
Es wurde noch die Auswahl des Kalenders in dem der Termin eingetragen werden soll
eingefügt. Bleibt der "calendar_user" leer wird der Standard-Kalender genommen.

01.12.2014 von Version 1.0 -> 2.0

Beschreibung:

Script wurde angepasst auf die Google Kalender API V3
Der calender_user wurde ersetzt durch die Calender_ID

01.12.2014 von Version 2.0 -> 2.1

Beschreibung:

Änderung des Designs

==============================================================*/

// Variablen Deklaration --------------------------------------

//Bitte anpassen
//#################################### Bitte einstellen #####################################################################
$Calender_ID                   =     "XXXX@googlemail.com";
$Client_ID                    =  "4087545021-q04rbdr3ckadb9fkpaji59vta5n40lq4.apps.googleusercontent.com";
$EMail                           =  "4554346413-q04rbdr3ckadb9fkpaji59vta5n40lq4@developer.gserviceaccount.com";
$key_file_location           =  IPS_GetKernelDir()."scripts\\certificates\\IPS-Kalender-9421b5ae3c.p12";
$id_ausfuehrung = 44514 /*[Skripte\Skripte\Karlender\Termine Eintragen\Einstellen]*/; // ID vom Ausführscript
//###########################################################################################################################



// Suche nach Visualization Verzeichniss
$id_CatID_Visualization = @IPS_GetObjectIDByName("Visualization", 0);

// Wenn Visualization Verzeichniss nicht vorhanden dann anlegen
if($id_CatID_Visualization === false){
   $id_CatID_Visualization = IPS_CreateCategory();       // Kategorie anlegen
	IPS_SetName($id_CatID_Visualization, "Visualization"); // Kategorie benennen
	} else{ $id_Visualization = $id_CatID_Visualization; }

// Suche nach Webfront Verzeichniss
$id_CatID_Webfront = @IPS_GetObjectIDByName("WebFront", $id_CatID_Visualization);

// Wenn Webfront Verzeichniss nicht vorhanden dann anlegen
if($id_CatID_Webfront === false){
   $id_CatID_Webfront = IPS_CreateCategory();       // Kategorie anlegen
	IPS_SetName($id_CatID_Webfront, "WebFront"); // Kategorie benennen
	} else{$id_Webfront = $id_CatID_Webfront; }

// suche nach ID Einstellungscript
$id_ausfuehrung = @IPS_GetObjectIDByName("Einstellen", $IPS_SELF);
IPS_SetHidden($id_ausfuehrung, true); //Objekt verstecken

// Webfront Verzeichniss Kalender anlegen wenn es nicht vorhanden
// ==================================================================
$id_Cat_Kalender = @IPS_GetObjectIDByName("Termin_Eintragen", $id_Webfront);

if ($id_Cat_Kalender === false){
    $CatID_Kalender = IPS_CreateCategory();       // Kategorie anlegen
	 IPS_SetName($CatID_Kalender, "Termin_Eintragen"); // Kategorie benennen
	 IPS_SetParent($CatID_Kalender, $id_Webfront); // Verschiebe link in Webfront

	 // Verzeichniss links anlegen
	 $CatID_links = IPS_CreateCategory(); // Kategorie links anlegen
	 IPS_SetName($CatID_links, "links");  //Kategorie benenne
	 IPS_SetParent($CatID_links, $CatID_Kalender); // Kategorie in Kalender verschieben

	 // Verzeichniss rechts anlegen
	 $CatID_rechts = IPS_CreateCategory(); // Kategorie rechts anlegen
	 IPS_SetName($CatID_rechts, "rechts");  //Kategorie benenne
	 IPS_SetParent($CatID_rechts, $CatID_Kalender); // Kategorie in Kalender verschieben
	 
	 // Dummy Termindaten erstellen
	 $dummyTermin_Daten =IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");  #Dummy Instance
	 IPS_SetName($dummyTermin_Daten, "Termin_Daten"); // Kategorie benennen
	 IPS_SetParent($dummyTermin_Daten, $CatID_links); // Verschiebe link in Webfrontverzeichniss
	 IPS_SetPosition($dummyTermin_Daten, 20); // Sortieren
	 
	 // Dummy Startzeit erstellen
	 $dummyTermin_Startzeit =IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");  #Dummy Instance
	 IPS_SetName($dummyTermin_Startzeit, "Startzeit"); // Kategorie benennen
	 IPS_SetParent($dummyTermin_Startzeit, $CatID_rechts); // Verschiebe link in Webfrontverzeichniss
	 IPS_SetPosition($dummyTermin_Startzeit, 10); // Sortieren
	 
	 // Dummy Startzeit erstellen
	 $dummyTermin_Endzeit =IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");  #Dummy Instance
	 IPS_SetName($dummyTermin_Endzeit, "Endzeit"); // Kategorie benennen
	 IPS_SetParent($dummyTermin_Endzeit, $CatID_rechts); // Verschiebe link in Webfrontverzeichniss
	 IPS_SetPosition($dummyTermin_Endzeit, 20); // Sortieren
	 
	 }

// Benötige Variablenprofile anlegen
// ==================================================================

// Variablenprofil Stunden
 $VP_Hour =  @IPS_GetVariableProfile("Kalender_Hour");
	 If ($VP_Hour === false){
  	   echo "Variablenprofile Kalender_Hour wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Hour", 1);
  	   IPS_SetVariableProfileValues ("Kalender_Hour",0,0,0);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 0, "0", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 1, "1", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 2, "2", "",16750848);
		IPS_SetVariableProfileAssociation("Kalender_Hour", 3, "3", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 4, "4", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 5, "5", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 6, "6", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Hour", 7, "7", "",16750848);
   	IPS_SetVariableProfileAssociation("Kalender_Hour", 8, "8", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 9, "9", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 10, "10", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 11, "11", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 12, "12", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 13, "13", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 14, "14", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 15, "15", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 16, "16", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 17, "17", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 18, "18", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 19, "19", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 20, "20", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 21, "21", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 22, "22", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Hour", 23, "23", "",16750848);
      }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Hour war Vorhanden 
";}}

// Variablenprofil Minuten
 $VP_Minute =  @IPS_GetVariableProfile("Kalender_Minute");
	 If ($VP_Minute === false){
  	   echo "Variablenprofile Kalender_Minute wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Minute", 1);
  	   IPS_SetVariableProfileValues ("Kalender_Minute",0,0,0);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 0, "00", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 5, "05", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 10, "10", "",16750848);
		IPS_SetVariableProfileAssociation("Kalender_Minute", 15, "15", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 20, "20", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 25, "25", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 30, "30", "",16750848);
  	   IPS_SetVariableProfileAssociation("Kalender_Minute", 35, "35", "",16750848);
   	IPS_SetVariableProfileAssociation("Kalender_Minute", 40, "40", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Minute", 45, "45", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Minute", 50, "50", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Minute", 55, "55", "",16750848);
      }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Minute war Vorhanden 
";}}

// Variablenprofil Tag
 $VP_Day =  @IPS_GetVariableProfile("Kalender_Day");
	 If ($VP_Day === false){
  	   echo "Variablenprofile Kalender_Day wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Day", 1);
  	   IPS_SetVariableProfileValues ("Kalender_Day",0,0,0);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 1, "1", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 2, "2", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 3, "3", "",65280 /*[Objekt #65280 existiert nicht]*/);
		IPS_SetVariableProfileAssociation("Kalender_Day", 4, "4", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 5, "5", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 6, "6", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 7, "7", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Day", 8, "8", "",65280 /*[Objekt #65280 existiert nicht]*/);
   	IPS_SetVariableProfileAssociation("Kalender_Day", 9, "9", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 10, "10", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 11, "11", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 12, "12", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 13, "13", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 14, "14", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 15, "15", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 16, "16", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 17, "17", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 18, "18", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 19, "19", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 20, "20", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 21, "21", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 22, "22", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 23, "23", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 24, "24", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 25, "25", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 26, "26", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 27, "27", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 28, "28", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 29, "29", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 30, "30", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Day", 31, "31", "",65280 /*[Objekt #65280 existiert nicht]*/);
      }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Day war Vorhanden 
";}}
      
// Variablenprofil Monat
 $VP_Hour =  @IPS_GetVariableProfile("Kalender_Month");
	 If ($VP_Hour === false){
  	   echo "Variablenprofile Kalender_Month wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Month", 1);
  	   IPS_SetVariableProfileValues ("Kalender_Month",0,0,0);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 1, "1", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 2, "2", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 3, "3", "",65280 /*[Objekt #65280 existiert nicht]*/);
		IPS_SetVariableProfileAssociation("Kalender_Month", 4, "4", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 5, "5", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 6, "6", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 7, "7", "",65280 /*[Objekt #65280 existiert nicht]*/);
  	   IPS_SetVariableProfileAssociation("Kalender_Month", 8, "8", "",65280 /*[Objekt #65280 existiert nicht]*/);
   	IPS_SetVariableProfileAssociation("Kalender_Month", 9, "9", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Month", 10, "10", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Month", 11, "11", "",65280 /*[Objekt #65280 existiert nicht]*/);
      IPS_SetVariableProfileAssociation("Kalender_Month", 12, "12", "",65280 /*[Objekt #65280 existiert nicht]*/);
      }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Month war Vorhanden 
";}}

// Variablenprofil Wiederholung
 $VP_Recur =  @IPS_GetVariableProfile("Kalender_Recur");
	 If ($VP_Recur === false){
  	   echo "Variablenprofile Kalender_Recur (Wiederholung) wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Recur", 1);
  	   IPS_SetVariableProfileValues ("Kalender_Recur",0,4,1);
  	   IPS_SetVariableProfileAssociation("Kalender_Recur", 0, "keine", "",-1);
  	   IPS_SetVariableProfileAssociation("Kalender_Recur", 1, "Wöchentlich", "",65280 /*[Objekt #65280 existiert nicht]*/);
   	IPS_SetVariableProfileAssociation("Kalender_Recur", 2, "14 Tage", "",16776960);
      IPS_SetVariableProfileAssociation("Kalender_Recur", 3, "Monatlich", "",16750848);
      IPS_SetVariableProfileAssociation("Kalender_Recur", 4, "Jährlich", "",16711680);
	   }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Recur (Wiederholung) vorhanden 
";}}

// Variablenprofil Wiederholung
 $VP_Recur =  @IPS_GetVariableProfile("Kalender_Allday");
	 If ($VP_Recur === false){
  	   echo "Variablenprofile Kalender_Allday (Ganztägig) wurde angelegt 
";
  	   IPS_CreateVariableProfile("Kalender_Allday", 0);
		IPS_SetVariableProfileValues ("Kalender_Allday",0,0,0);
  	   IPS_SetVariableProfileAssociation("Kalender_Allday", 0, "nein", "",-1);
  	   IPS_SetVariableProfileAssociation("Kalender_Allday", 1, "ja", "",-1);
	   }else{if($_IPS['SENDER'] == "Execute"){echo "Variablenprofile Kalender_Allday (Ganztägig) vorhanden 
";}}

// #############################################################################################


// ID's
//--------------
// Kontrolle der ID's
$id_StartDay              =     @IPS_GetObjectIDByName("StartDay", $id_ausfuehrung);
// Wenn es diese Variable noch nicht gibt dann wird das Script
// zum ersten mal aufgerufen und muss eingerichtet werden.
if($id_StartDay === false)
{
    // erstellen der Integer-Variablen
    //=================================
    //erzeugen und initialisieren der Variablen "Recur"
   // ######################################################################
   $id_Cat_Recur = @IPS_GetObjectIDByName("Recur", $IPS_SELF); // suche nach Variable
		if ($id_Cat_Recur === false){
   	$id_Recur =  IPS_CreateVariable(1);
    	IPS_SetName($id_Recur, "Recur");
    	IPS_SetParent($id_Recur, $IPS_SELF);
    	IPS_SetVariableCustomProfile($id_Recur, "Kalender_Recur");
    	IPS_SetVariableCustomAction($id_Recur, $id_ausfuehrung);
    	IPS_SetPosition($id_Recur, 45);
    	IPS_SetParent($id_Recur, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    		// Link zur Variable erstellen
			$LinkID_Recur = IPS_CreateLink();// Link zum Webfront generieren
     		IPS_SetName($LinkID_Recur, "Wiederholung"); //Link benennen
     	 	IPS_SetLinkTargetID($LinkID_Recur, $id_Recur);    //Link verknüpfen
       	IPS_SetParent($LinkID_Recur, $dummyTermin_Daten); // Link in Webfront verschieben
       	IPS_SetPosition($LinkID_Recur, 50);
			}

    //erzeugen und initialisieren der Variablen "StartDay"
   // ######################################################################
  $id_Cat_StartDay = @IPS_GetObjectIDByName("StartDay", $IPS_SELF); // suche nach Variable
		if ($id_Cat_StartDay === false){
   	$id_StartDay =  IPS_CreateVariable(1);
    	IPS_SetName($id_StartDay, "StartDay");
    	IPS_SetParent($id_StartDay, $IPS_SELF);
    	IPS_SetVariableCustomProfile($id_StartDay, "Kalender_Day");
    	IPS_SetVariableCustomAction($id_StartDay, $id_ausfuehrung);
    	IPS_SetPosition($id_StartDay, 50); // Sortieren
    	IPS_SetParent($id_StartDay, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    	SetValue ($id_StartDay, 1);
			// Link zur Variable erstellen
			$LinkID_StartDay = IPS_CreateLink();// Link zum Webfront generieren
     		IPS_SetName($LinkID_StartDay, "Tag"); //Link benennen
     	 	IPS_SetLinkTargetID($LinkID_StartDay, $id_StartDay);    //Link verknüpfen
       	IPS_SetParent($LinkID_StartDay, $dummyTermin_Startzeit); // Link in Webfront verschieben
       	IPS_SetPosition($LinkID_StartDay, 30); // Sortieren
   		}

    //erzeugen und initialisieren der Variablen "StartMonth"
   // ######################################################################
  $id_Cat_StartMonth = @IPS_GetObjectIDByName("StartMonth", $IPS_SELF); // suche nach Variable
		if ($id_Cat_StartMonth === false){
   	$id_StartMonth =  IPS_CreateVariable(1);
    	IPS_SetName($id_StartMonth, "StartMonth");
    	IPS_SetParent($id_StartMonth, $IPS_SELF);
    	IPS_SetVariableCustomProfile($id_StartMonth, "Kalender_Month");
    	IPS_SetVariableCustomAction($id_StartMonth, $id_ausfuehrung);
    	IPS_SetPosition($id_StartMonth, 60); // Sortieren
    	IPS_SetParent($id_StartMonth, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
		SetValue ($id_StartMonth, 1);
			// Link zur Variable erstellen
			$LinkID_StartMonth = IPS_CreateLink();// Link zum Webfront generieren
     		IPS_SetName($LinkID_StartMonth, "Monat"); //Link benennen
     	 	IPS_SetLinkTargetID($LinkID_StartMonth, $id_StartMonth);    //Link verknüpfen
       	IPS_SetParent($LinkID_StartMonth, $dummyTermin_Startzeit); // Link in Webfront verschieben
       	IPS_SetPosition($LinkID_StartMonth, 20); // Sortieren
			 }

    //erzeugen und initialisieren der Variablen "StartYear"
   // ######################################################################
   $id_StartYear           =  IPS_CreateVariable(3);
    IPS_SetName($id_StartYear, "StartYear");
    IPS_SetParent($id_StartYear, $IPS_SELF);
    SetValueString($id_StartYear, date("Y", time()+86400));
    IPS_SetPosition($id_StartYear, 70); // Sortieren
    IPS_SetVariableCustomAction($id_StartYear, $id_ausfuehrung);
    IPS_SetParent($id_StartYear, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
        // Link zur Variable erstellen
			$LinkID_StartYear = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_StartYear, "Jahr"); //Link benennen
         IPS_SetLinkTargetID($LinkID_StartYear, $id_StartYear);    //Link verknüpfen
         IPS_SetParent($LinkID_StartYear, $dummyTermin_Startzeit); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_StartYear, 10); // Sortieren

    //erzeugen und initialisieren der Variablen "StartHour"
   // ######################################################################
  $id_Cat_StartHour = @IPS_GetObjectIDByName("StartHour", $IPS_SELF); // suche nach Variable
		if ($id_Cat_StartHour === false){
   	$id_StartHour =  IPS_CreateVariable(1);
    	IPS_SetName($id_StartHour, "StartHour");
    	IPS_SetParent($id_StartHour, $IPS_SELF);
    	IPS_SetVariableCustomProfile($id_StartHour, "Kalender_Hour");
    	IPS_SetVariableCustomAction($id_StartHour, $id_ausfuehrung);
    	IPS_SetPosition($id_StartHour, 80); // Sortieren
    	IPS_SetParent($id_StartHour, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    	SetValue ($id_StartHour, 0);
			// Link zur Variable erstellen
			$LinkID_StartHour = IPS_CreateLink();// Link zum Webfront generieren
     		IPS_SetName($LinkID_StartHour, "Stunden"); //Link benennen
     	 	IPS_SetLinkTargetID($LinkID_StartHour, $id_StartHour);    //Link verknüpfen
       	IPS_SetParent($LinkID_StartHour, $dummyTermin_Startzeit); // Link in Webfront verschieben
       	IPS_SetPosition($LinkID_StartHour, 40); // Sortieren
			}


    //erzeugen und initialisieren der Variablen "StartMinute"
   // ######################################################################
	$id_Cat_Minute = @IPS_GetObjectIDByName("StartMinute", $IPS_SELF); // suche nach Variable
		if ($id_Cat_Minute === false){
   		$id_StartMinute =  IPS_CreateVariable(1);
    		IPS_SetName($id_StartMinute, "StartMinute");
    		IPS_SetParent($id_StartMinute, $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_StartMinute, "Kalender_Minute");
    		IPS_SetVariableCustomAction($id_StartMinute, $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_StartMinute, 90); // Sortieren
    		IPS_SetParent($id_StartMinute, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    		SetValue ($id_StartMinute, 0);
				$LinkID_StartMinute = IPS_CreateLink();// Link zum Webfront generieren
 	      	IPS_SetName($LinkID_StartMinute, "Minute"); //Link benennen
         	IPS_SetLinkTargetID($LinkID_StartMinute, $id_StartMinute);    //Link verknüpfen
         	IPS_SetParent($LinkID_StartMinute, $dummyTermin_Startzeit); // Link in Webfront verschieben
         	IPS_SetPosition($LinkID_StartMinute, 50); // Sortieren
				}

    //erzeugen und initialisieren der Variablen "EndDay"
   // ######################################################################
	$id_Cat_EndDay = @IPS_GetObjectIDByName("EndDay", $IPS_SELF); // suche nach Variable
		if ($id_Cat_EndDay === false){
   		$id_EndDay =  IPS_CreateVariable(1);
    		IPS_SetName($id_EndDay, "EndDay");
    		IPS_SetParent($id_EndDay, $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_EndDay, "Kalender_Day");
    		IPS_SetVariableCustomAction($id_EndDay, $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_EndDay, 100); // Sortieren
    		IPS_SetParent($id_EndDay, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    		SetValue ($id_EndDay, 1);
				$LinkID_EndDay = IPS_CreateLink();// Link zum Webfront generieren
 	      	IPS_SetName($LinkID_EndDay, "Tag"); //Link benennen
         	IPS_SetLinkTargetID($LinkID_EndDay, $id_EndDay);    //Link verknüpfen
         	IPS_SetParent($LinkID_EndDay, $dummyTermin_Endzeit); // Link in Webfront verschieben
         	IPS_SetPosition($LinkID_EndDay, 30); // Sortieren
				}

    //erzeugen und initialisieren der Variablen "EndMonth"
   // ######################################################################
	$id_Cat_EndMonth  = @IPS_GetObjectIDByName("EndMonth", $IPS_SELF); // suche nach Variable
		if ($id_Cat_EndDay === false){
   		$id_EndMonth =  IPS_CreateVariable(1);
    		IPS_SetName($id_EndMonth , "EndMonth");
    		IPS_SetParent($id_EndMonth , $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_EndMonth , "Kalender_Month");
    		IPS_SetVariableCustomAction($id_EndMonth , $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_EndMonth, 110); // Sortieren
    		IPS_SetParent($id_EndMonth, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    		SetValue ($id_EndMonth, 1);
				$LinkID_EndMonth = IPS_CreateLink();// Link zum Webfront generieren
 	      	IPS_SetName($LinkID_EndMonth , "Monat"); //Link benennen
         	IPS_SetLinkTargetID($LinkID_EndMonth , $id_EndMonth );    //Link verknüpfen
         	IPS_SetParent($LinkID_EndMonth , $dummyTermin_Endzeit); // Link in Webfront verschieben
         	IPS_SetPosition($LinkID_EndMonth, 20); // Sortieren
				}

    //erzeugen und initialisieren der Variablen "EndYear"
   $id_EndYear           =  IPS_CreateVariable(3);
    IPS_SetName($id_EndYear, "EndYear");
    IPS_SetParent($id_EndYear, $IPS_SELF);
    SetValueString($id_EndYear, date("Y", time()+90000));
    IPS_SetPosition($id_EndYear, 120); // Sortieren
    IPS_SetVariableCustomAction($id_EndYear, $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    IPS_SetParent($id_EndYear, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
       // Link zur Variable erstellen
			$LinkID_EndYear = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_EndYear, "Jahr"); //Link benennen
         IPS_SetLinkTargetID($LinkID_EndYear, $id_EndYear);    //Link verknüpfen
         IPS_SetParent($LinkID_EndYear, $dummyTermin_Endzeit); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_EndYear, 10); // Sortieren



    //erzeugen und initialisieren der Variablen "EndHour"
   // ######################################################################
	$id_Cat_EndHour  = @IPS_GetObjectIDByName("EndHour", $IPS_SELF); // suche nach Variable
		if ($id_Cat_EndHour === false){
   		$id_EndHour =  IPS_CreateVariable(1);
    		IPS_SetName($id_EndHour, "EndHour");
    		IPS_SetParent($id_EndHour , $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_EndHour , "Kalender_Hour");
    		IPS_SetVariableCustomAction($id_EndHour , $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_EndHour, 130); // Sortieren
    		IPS_SetParent($id_EndHour, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
				$LinkID_EndHour = IPS_CreateLink();// Link zum Webfront generieren
 	      	IPS_SetName($LinkID_EndHour , "Stunde"); //Link benennen
         	IPS_SetLinkTargetID($LinkID_EndHour , $id_EndHour);    //Link verknüpfen
         	IPS_SetParent($LinkID_EndHour, $dummyTermin_Endzeit); // Link in Webfront verschieben
         	IPS_SetPosition($LinkID_EndHour, 40); // Sortieren
				}


    //erzeugen und initialisieren der Variablen "EndMinute"
   // ######################################################################
	$id_Cat_EndMinute  = @IPS_GetObjectIDByName("EndMinute", $IPS_SELF); // suche nach Variable
		if ($id_Cat_EndMinute === false){
   		$id_EndMinute =  IPS_CreateVariable(1);
    		IPS_SetName($id_EndMinute, "EndMinute");
    		IPS_SetParent($id_EndMinute , $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_EndMinute , "Kalender_Minute");
    		IPS_SetVariableCustomAction($id_EndMinute , $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_EndMinute, 130); // Sortieren
    		IPS_SetParent($id_EndMinute, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
				$LinkID_EndMinute = IPS_CreateLink();// Link zum Webfront generieren
 	      	IPS_SetName($LinkID_EndMinute , "Minute"); //Link benennen
         	IPS_SetLinkTargetID($LinkID_EndMinute , $id_EndMinute);    //Link verknüpfen
         	IPS_SetParent($LinkID_EndMinute, $dummyTermin_Endzeit); // Link in Webfront verschieben
         	IPS_SetPosition($LinkID_EndMinute, 50); // Sortieren
				}

    //erzeugen und initialisieren der Variablen "Titel"
   // ######################################################################
   $id_Titel                =  IPS_CreateVariable(3);
    IPS_SetName($id_Titel, "Titel");
    IPS_SetParent($id_Titel, $IPS_SELF);
    SetValueString($id_Titel, "Das ist ein Termin von IPS");
    IPS_SetPosition($id_Titel, 10); // Sortieren
    IPS_SetVariableCustomAction($id_Titel, $id_ausfuehrung);
    IPS_SetParent($id_Titel, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
       // Link zur Variable erstellen
			$LinkID_Titel = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_Titel, "Titel"); //Link benennen
         IPS_SetLinkTargetID($LinkID_Titel, $id_Titel);    //Link verknüpfen
         IPS_SetParent($LinkID_Titel, $dummyTermin_Daten); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_Titel, 10); // Sortieren


    //erzeugen und initialisieren der Variablen "Description"
   // ######################################################################
   $id_Description          =  IPS_CreateVariable(3);
    IPS_SetName($id_Description, "Description");
    IPS_SetParent($id_Description, $IPS_SELF);
    SetValueString($id_Description, "Erstellt durch Hausserver");
    IPS_SetPosition($id_Description, 20); // Sortieren
    IPS_SetVariableCustomAction($id_Description, $id_ausfuehrung);
    IPS_SetParent($id_Description, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
        // Link zur Variable erstellen
			$LinkID_Description = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_Description, "Beschreibung"); //Link benennen
         IPS_SetLinkTargetID($LinkID_Description, $id_Description);    //Link verknüpfen
         IPS_SetParent($LinkID_Description, $dummyTermin_Daten); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_Description, 20); // Sortieren

    //erzeugen und initialisieren der Variablen "Where"
   // ######################################################################
   $id_Where                =  IPS_CreateVariable(3);
    IPS_SetName($id_Where, "Where");
    IPS_SetParent($id_Where, $IPS_SELF);
    SetValueString($id_Where, "Dortmud");
    IPS_SetPosition($id_Where, 30); // Sortieren
    IPS_SetVariableCustomAction($id_Where, $id_ausfuehrung);
    IPS_SetParent($id_Where, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
       // Link zur Variable erstellen
			$LinkID_Where = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_Where, "Ort"); //Link benennen
         IPS_SetLinkTargetID($LinkID_Where, $id_Where);    //Link verknüpfen
         IPS_SetParent($LinkID_Where, $dummyTermin_Daten); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_Where, 30); // Sortieren


    // erstellen der Bool-Variablen
    //=================================
    //erzeugen und initialisieren der Variablen "AllDay"
   $id_AllDay               =  IPS_CreateVariable(0);
    IPS_SetName($id_AllDay, "AllDay");
    IPS_SetParent($id_AllDay, $IPS_SELF);
    SetValueBoolean($id_AllDay, False);
    IPS_SetPosition($id_AllDay, 40); // Sortieren
    IPS_SetVariableCustomAction($id_AllDay, $id_ausfuehrung);
    IPS_SetVariableCustomProfile($id_AllDay , "Kalender_Allday");
    IPS_SetParent($id_AllDay, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
         // Link zur Variable erstellen
			$LinkID_AllDay = IPS_CreateLink();// Link zum Webfront generieren
 	      IPS_SetName($LinkID_AllDay, "Ganztägig"); //Link benennen
         IPS_SetLinkTargetID($LinkID_AllDay, $id_AllDay);    //Link verknüpfen
         IPS_SetParent($LinkID_AllDay, $dummyTermin_Daten); // Link in Webfront verschieben
         IPS_SetPosition($LinkID_AllDay, 40); // Sortieren


      
    // erstellen der Übersicht-Variablen
    //==================================
     $id_Cat_Overview  = @IPS_GetObjectIDByName("Overview", $IPS_SELF);
      if ($id_Cat_Overview === false){
         $id_Cat_Overview =  IPS_CreateVariable(3);
    		IPS_SetName($id_Cat_Overview, "Overview");
    		IPS_SetParent($id_Cat_Overview , $IPS_SELF);
    		IPS_SetVariableCustomProfile($id_Cat_Overview , "~HTMLBox");
    		IPS_SetVariableCustomAction($id_Cat_Overview , $id_ausfuehrung); // Variable Ausführungsscript zuweisen
    		IPS_SetPosition($id_Cat_Overview, 200); // Sortieren
    		IPS_SetParent($id_Cat_Overview, $id_ausfuehrung); // Variable in Einstellungsverzeichniss schieben
    		   // Link zur Variable erstellen
				$LinkID_Overview = IPS_CreateLink();// Link zum Webfront generieren
 	     		IPS_SetName($LinkID_Overview, "Terminübersicht:"); //Link benennen
        		IPS_SetLinkTargetID($LinkID_Overview, $id_Cat_Overview);    //Link verknüpfen
        		IPS_SetParent($LinkID_Overview, $CatID_links); // Link in Webfront verschieben
        		IPS_SetPosition($LinkID_Overview, 30); // Sortieren

   // Link zur Terminerstellung
		$LinkID_SendTermin = IPS_CreateLink();// Link zum Webfront generieren
 	   IPS_SetName($LinkID_SendTermin, "Termin Erstellen"); //Link benennen
      IPS_SetLinkTargetID($LinkID_SendTermin, $IPS_SELF);    //Link verknüpfen
      IPS_SetParent($LinkID_SendTermin, $CatID_links); // Link in Webfront verschieben

	  }

    // nach dem Anlegen das Script beenden
    return;
}
else
{

   $id_StartMonth       =  IPS_GetObjectIDByName("StartMonth", $id_ausfuehrung);
   $id_StartYear        =  IPS_GetObjectIDByName("StartYear", $id_ausfuehrung);
   $id_StartHour        =  IPS_GetObjectIDByName("StartHour", $id_ausfuehrung);
   $id_StartMinute      =  IPS_GetObjectIDByName("StartMinute", $id_ausfuehrung);
   $id_EndDay           =  IPS_GetObjectIDByName("EndDay", $id_ausfuehrung);
   $id_EndMonth         =  IPS_GetObjectIDByName("EndMonth", $id_ausfuehrung);
   $id_EndYear          =  IPS_GetObjectIDByName("EndYear", $id_ausfuehrung);
   $id_EndHour          =  IPS_GetObjectIDByName("EndHour", $id_ausfuehrung);
   $id_EndMinute        =  IPS_GetObjectIDByName("EndMinute", $id_ausfuehrung);
   $id_Recur            =  IPS_GetObjectIDByName("Recur", $id_ausfuehrung);
   $id_Titel            =  IPS_GetObjectIDByName("Titel", $id_ausfuehrung);
   $id_Description      =  IPS_GetObjectIDByName("Description", $id_ausfuehrung);
   $id_Where            =  IPS_GetObjectIDByName("Where", $id_ausfuehrung);
   $id_AllDay           =  IPS_GetObjectIDByName("AllDay", $id_ausfuehrung);

}


// Variablen
//--------------
$StartDay         =  GetValue($id_StartDay);
if(strlen($StartDay)< 2)
{
   $StartDay      =  "0".$StartDay;
   SetValue($id_StartDay, $StartDay);
}

$StartMonth       =  GetValue($id_StartMonth);
if(strlen($StartMonth)< 2)
{
   $StartMonth      =  "0".$StartMonth;
   SetValue($id_StartMonth, $StartMonth);
}

$StartYear        =  GetValue($id_StartYear);
if(strlen($StartYear)< 4)
{
   $StartYear      =  "20".$StartYear;
   SetValue($id_StartYear, $StartYear);
}

$StartHour        =  GetValue($id_StartHour);
if(strlen($StartHour)< 2)
{
   $StartHour      =  "0".$StartHour;
   SetValue($id_StartHour, $StartHour);
}

$StartMinute      =  GetValue($id_StartMinute);
if(strlen($StartMinute)< 2)
{
   $StartMinute      =  "0".$StartMinute;
   SetValue($id_StartMinute, $StartMinute);
}

$EndDay           =  GetValue($id_EndDay);
if(strlen($EndDay)< 2)
{
   $EndDay      =  "0".$EndDay;
   SetValue($id_EndDay, $EndDay);
}

$EndMonth         =  GetValue($id_EndMonth);
if(strlen($EndMonth)< 2)
{
   $EndMonth      =  "0".$EndMonth;
   SetValue($id_EndMonth, $EndMonth);
}

$EndYear          =  GetValue($id_EndYear);
if(strlen($EndYear)< 4)
{
   $EndYear      =  "20".$EndYear;
   SetValue($id_EndYear, $EndYear);
}

$EndHour          =  GetValue($id_EndHour);
if(strlen($EndHour)< 2)
{
   $EndHour      =  "0".$EndHour;
   SetValue($id_EndHour, $EndHour);
}

$EndMinute        =  GetValue($id_EndMinute);
if(strlen($EndMinute)< 2)
{
   $EndMinute      =  "0".$EndMinute;
   SetValue($id_EndMinute, $EndMinute);
}

$Recur            =  GetValue($id_Recur);
$Titel            =  GetValue($id_Titel);
$Description      =  GetValue($id_Description);
$Where            =  GetValue($id_Where);
$AllDay           =  GetValueBoolean($id_AllDay);

//-------------------------------------------------------------

//benötigte Funktionen/Klassen
set_include_path(IPS_GetKernelDir()."scripts\\google-api-php-client\\src");
require_once 'google-api-php-client/autoload.php';

//--------------------------- Main ----------------------------

// Die Verbindung zum Kalender aufbauen
$client = new Google_Client();
$client->setApplicationName("Kalender");
$service = new Google_Service_Calendar($client);
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials($EMail, array('https://www.googleapis.com/auth/calendar'), $key);
$client->setAssertionCredentials($cred);

// Event schreiben
//================

$event = new Google_Service_Calendar_Event();
$event->setSummary($Titel);
$event->setLocation($Where);
$event->setDescription($Description);

$start = new Google_Service_Calendar_EventDateTime();
$end = new Google_Service_Calendar_EventDateTime();

if($AllDay == 1)
{
    $start = new Google_Service_Calendar_EventDateTime();
    $start->setDate($StartYear."-".$StartMonth."-".$StartDay);
    $start->setTimeZone('Europe/Berlin');
    $event->setStart($start);
    $end = new Google_Service_Calendar_EventDateTime();
    $end->setDate($EndYear."-".$EndMonth."-".$EndDay);
    $end->setTimeZone('Europe/Berlin');
    $event->setEnd($end);
}
else
{
    $start = new Google_Service_Calendar_EventDateTime();
    $start->setDateTime($StartYear."-".$StartMonth."-".$StartDay."T".$StartHour.":".$StartMinute.":00.000+01:00");
    $start->setTimeZone('Europe/Berlin');
    $event->setStart($start);
    $end = new Google_Service_Calendar_EventDateTime();
    $end->setDateTime($EndYear."-".$EndMonth."-".$EndDay."T".$EndHour.":".$EndMinute.":00.000+01:00");
    $end->setTimeZone('Europe/Berlin');
    $event->setEnd($end);
}

// Testanzeige
if($_IPS['SENDER'] == "Execute")
{
    echo "<pre>";
    echo "  $StartYear - $StartMonth - $StartDay - $StartHour : $StartMinute :00.000+01:00 
";
    echo "  $EndYear - $EndMonth - $EndDay - $EndHour : $EndMinute 
";
    echo " 
";
    echo " 
" ;
}

//Auswahl der Wiederholung
Switch($Recur)
{
    // keine
    case 0:
        break;

    // wöchentlich
    case 1:
        $event->setRecurrence(array('RRULE:FREQ=WEEKLY;INTERVAL=1'));
        break;

    // 14 Tage
    case 2:
        $event->setRecurrence(array('RRULE:FREQ=WEEKLY;INTERVAL=2'));
        break;

    // monatlich
    case 3:
        $event->setRecurrence(array('RRULE:FREQ=MONTHLY;INTERVAL=1'));
        break;

    // jährlich
    case 4:
        $event->setRecurrence(array('RRULE:FREQ=YEARLY;INTERVAL=1'));
}

$createdEvent = $service->events->insert($Calender_ID, $event);



//------------------------- Main ENDE --------------------------

?>

  1. Erstellen des Scriptes Einstellen
<?

 // =====================================================
// Einstellungen setztzen
// =====================================================

// Variablen einlesen
//----------------------------

$Uhrzeit = date('H:i:s');

// Script Ablauf
// =====================================================

// Variable setzten
If($IPS_SENDER == "WebFront"){SetValue($IPS_VARIABLE, $IPS_VALUE);}

// ID von VAriablen einlesen
$id_Recur = @IPS_GetObjectIDByName("Recur", $IPS_SELF);
$id_StartDay = @IPS_GetObjectIDByName("StartDay", $IPS_SELF);
$id_StartMonth = @IPS_GetObjectIDByName("StartMonth", $IPS_SELF);
$id_StartHour = @IPS_GetObjectIDByName("StartHour", $IPS_SELF);
$id_StartMinute = @IPS_GetObjectIDByName("StartMinute", $IPS_SELF);
$id_StartYear = @IPS_GetObjectIDByName("StartYear", $IPS_SELF);
$id_EndDay = @IPS_GetObjectIDByName("EndDay", $IPS_SELF);
$id_EndMonth  = @IPS_GetObjectIDByName("EndMonth", $IPS_SELF);
$id_EndYear  = @IPS_GetObjectIDByName("EndYear", $IPS_SELF);
$id_EndHour  = @IPS_GetObjectIDByName("EndHour", $IPS_SELF);
$id_EndMinute  = @IPS_GetObjectIDByName("EndMinute", $IPS_SELF);
$id_Allday  = @IPS_GetObjectIDByName("AllDay", $IPS_SELF);
$id_Description  = @IPS_GetObjectIDByName("Description", $IPS_SELF);
$id_Titel  = @IPS_GetObjectIDByName("Titel", $IPS_SELF);
$id_Overview  = @IPS_GetObjectIDByName("Overview", $IPS_SELF);

// Informationen aus Variable holen
// ------------------------------------
$Recur = GetValue($id_Recur);
$Titel = GetValue($id_Titel);
$Beschreibung = GetValue($id_Description);

$StartDay = GetValue($id_StartDay);
$StartMonth = GetValue ($id_StartMonth);
$StartYear = GetValue ($id_StartYear);
$StartHour = GetValue ($id_StartHour);
$StartMinute = GetValue ($id_StartMinute);

$EndDay = GetValue($id_EndDay);
$EndMonth = GetValue ($id_EndMonth);
$EndYear = GetValue ($id_EndYear);
$EndHour = GetValue ($id_EndHour);
$EndMinute = GetValue ($id_EndMinute);

$Allday = GetValue($id_Allday);

If(strlen($StartHour)< 2){$StartHour= "0".$StartHour;}
If(strlen($EndHour)< 2){$EndHour= "0".$EndHour;}
If(strlen($StartMinute)< 2){$StartMinute= "0".$StartMinute;}
If(strlen($EndMinute)< 2){$StartMinute= "0".$EndMinute;}
If(strlen($EndDay)< 2){$EndDay= "0".$EndDay;}
If(strlen($EndMonth)< 2){$EndMonth= "0".$EndMonth;}
If(strlen($StartDay)< 2){$StartDay= "0".$StartDay;}
If(strlen($StartMonth)< 2){$StartMonth= "0".$StartMonth;}

If ($EndMinute == "0"){$EndMinute = "00";}
If ($StartMinute == "0"){$StartMinute = "00";}
If ($Allday == "0"){$Ganztaegig = "nein";} else {$Ganztaegig = "ja";}

// =======================================================
// Datumsvergleich
// =======================================================
$ch_Startzeit = "$StartYear-$StartMonth-$StartDay-$StartHour-$StartMinute";
$ch_Endzeit = "$EndYear-$EndMonth-$EndDay-$EndHour-$EndMinute";

If ($ch_Endzeit <= $ch_Startzeit){
       // Fehler im Datum-Endzeit - Endzeit vor Startzeit
       SetValue ($id_EndDay, $StartDay);
       SetValue ($id_EndMonth, $StartMonth);
       SetValue ($id_EndYear, $StartYear);
       SetValue ($id_EndHour, $StartHour);
       SetValue ($id_EndMinute, $StartMinute);
       $Endzeit = "Termin Ende: $StartDay.$StartMonth.$StartYear";
         If ($Allday == "0") {$Endzeit.= "- $StartHour:$StartMinute";}
       } else {
			// Zeitvergleich OK
		   $Endzeit = "Termin Ende: $EndDay.$EndMonth.$EndYear";
         If ($Allday == "0") {$Endzeit.= " - $EndHour:$EndMinute";}
			}
			
// ============================================
// Anzeige generieren
// ============================================



// Startzeitanzeige erstelllen
// -------------------------------------------------------------
$Startzeit = "Termin Begin: $StartDay.$StartMonth.$StartYear";
If ($Allday == "0"){$Startzeit .= " - $StartHour:$StartMinute";}


// Wiederholungen
// -------------------------------------------------------------
If ($Recur == 0){$Wiederholung = "keine";}
	elseif ($Recur == 1){$Wiederholung = "Wöchentlich";}
	elseif ($Recur == 2){$Wiederholung = "14 Tägig";}
	elseif ($Recur == 3){$Wiederholung = "Monatlich";}
	elseif ($Recur == 4){$Wiederholung = "Jährlich";}

$Overview = "<center><b>Titel: $Titel</b>
            <span style='color:gray'>
				<br>Beschreibung: $Beschreibung
				<br> $Startzeit
				<br> $Endzeit
				<br> Ganztägig: $Ganztaegig
				<br> Wiederholung: $Wiederholung</center>";

SetValue ($id_Overview, $Overview);

// Testanzeige
// -----------------------------------------------------------

if($_IPS['SENDER'] == "Execute")
{
    echo "<pre>";
    echo " 
 $Uhrzeit  
";
    echo " $Startzeit  
";
    echo " $Endzeit 
";
    echo " $Ganztaegig 
" ;
}

// Meldung vom Script erzeugen
IPS_LogMessage($_IPS['SELF'], "Einstellungscripts");

?>


  1. Manuelles Ausführen des Scriptes Termin Eintragen. Nun müssten Variablenprofile, Variablen und Verzeichnisse inkl. Links für das Webfront im Standartverzeichnis „Visualization“ angelegt werden.


Ein kleines Problem habe ich noch mit dem Script. Wenn man einen Ganztägigen Termin anlegt der z.B. nur einen Tag geht wird der Termin bei Googel angelegt aber mit einem Fehler in der Endzeit. Wenn ich den Termin mit IPS zurücklese Wird mir der Termin angezeigt nur als Enddatum wird mir der Eintragetag angezeigt. Erst wenn ich direkt in den Googel-Kalender gehe und den Endtermin neu setzte Stimmt auch in IPS das Enddatum.
Bei diesem Problem komme ich nicht weiter aber vieleicht hat Martin eine Idee was es sein kann.

MFG
Stephan

PS: Da ich noch ganz am Anfang stehe mit meinen PHP Kenntnissen bitte um Rücksicht auf eventuelle Fehler im Scrip und übernehme auch keine Haftung . Ich würde mich aber Trotzdem über ein Feedback freuen.

Besten Dank. Sieht klasse aus.

Mit deinem Problem muss ich heute Abend schauen.

Moin Moin,

Änderungen in der php.ini sind nicht dauerhaft ? Oder muss ich das noch wo anders einstellen ?

Wenn das nicht dauerhaft ist dann passt die Datei nicht zur Php Version.

Moin , die Dateien müssen in den ext Ordner dann geht’s .

Läuft bei mir noch nicht. Kann ich das erneut installieren ödere wie kann ich alles löschen und neu anfangen ? Hatte versucht mit dem löschen der Variablen und der Profile nun installiert er es nicht mehr sauber.

Gesendet von meinem iPhone mit Tapatalk

Lösche alles, mach ein neues Script.

Hallo Zusammen,

Bis heute nacht lief das angehange Script seit 4 Wochen ohne Problme.


<?
// =======================================================================
// Googel-Karlender Auslesen und Anzeigen
// =======================================================================

// Hier die GoogleKalender eintragen

//Kalender 1
$Userid1='mail1@googlemail.com';
$Tage1=100;
$ShortCut1=1;


//Kalender 2
$Userid2='mail2@googlemail.com';
$Tage2=100;
$ShortCut2=4;


//Hier die Farbe für die ShortCuts angeben

$SC_Farbe[1] = "gray";
$SC_Farbe[2] = "#00AD00";
$SC_Farbe[3] = "darkred";
$SC_Farbe[4] = "lightblue";


//Hier den Style wählen

$blinkToday = true; // (true/false) blinken des heutigen Kalendereintrages An/Aus

/******** Farbnamen, RGB-Formatierung, Hex-Zahlen möglich *********/

$StyleText[1] = "white"; // Textfarbe Datum
$StyleText[2] = "gray"; // Textfarbe Wochentag

/*** xx-small, x-small, small, normal, large, x-large, xx-large ***/

/************** oder Angabe in pt - z.B. "12pt" *******************/

$StyleText[3] = "large"; // Textgröße Datum
$StyleText[4] = "normal"; // Textgröße Wochentag
$StyleText[5] = "normal"; // Textgröße Eintrag


/****************** Ab hier wieder die Finger lassen **************/

 function ReadCalendar($calName, $maxDays, $shortCut)
    {
    require_once "google-api-php-client/autoload.php";

    // Service Account info
    $client_id = '4554308151-q04rbdr3ckadbbali59vta5n40lq4.apps.googleusercontent.com';
    $service_account_name = '4554320blub1q04989bdr3c232kadb9fkpaji59vta5n40lq4@developer.gserviceaccount.com';
    $key_file_location = IPS_GetKernelDir()."scripts\\certificates\\IPS-Kalender-9de3f97456.p12";;
    
    $client = new Google_Client();
    $client->setApplicationName("IPS");
    $service = new Google_Service_Calendar($client);
    $key = file_get_contents($key_file_location);
    $cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar.readonly'), $key);

    $client->setAssertionCredentials($cred);


    // Convert recurring events to single events
    // Look for events in the next week - now to now+1week
    $params = array( 'singleEvents' => TRUE,
                         'timeMin' => (new DateTime())->format(DateTime::RFC3339),
                         'timeMax' => (new DateTime())->add(new DateInterval('P' .$maxDays .'D'))->format(DateTime::RFC3339),);

    $events = $service->events->listEvents($calName, $params);

//print_r ($events->getItems());

    $c=0;
    foreach ($events->getItems() as $event)
                {
            $Ergebnis[$c]['StartDatum'] = fmt_gdate($event->getStart());
            $Ergebnis[$c]['StartZeit'] = fmt_gtime($event->getStart());
                $Ergebnis[$c]['EndeDatum'] = fmt_gdate($event->getEnd());
                $Ergebnis[$c]['EndeZeit'] = fmt_gtime($event->getEnd());
                $Ergebnis[$c]['Beschreibung'] = iconv('UTF-8', 'ISO-8859-1',$event->getSummary());
                $Ergebnis[$c]['Ort'] = iconv('UTF-8', 'ISO-8859-1',$event->getLocation());
                $Ergebnis[$c]['shortCut'] = $shortCut;
             if($Ergebnis[$c]['StartZeit'] == "00:00" && $Ergebnis[$c]['EndeZeit'] == "00:00")
                {
                $Ergebnis[$c]['EndeDatum'] = date("d.m.Y", strtotime($Ergebnis[$c]['EndeDatum']."-1 day"));
                    }
                $c++;
                }
    usort($Ergebnis, 'DateCompare');
    return $Ergebnis;
   }


function fmt_gdate( $gdate )
    {
     if ($val = $gdate->getDateTime())
         {
       return (new DateTime($val))->format( 'd.m.Y' );
          }
       else if ($val = $gdate->getDate())
        {
        return (new DateTime($val))->format( 'd.m.Y');
        }
    }

function fmt_gtime( $gdate )
    {
     if ($val = $gdate->getDateTime())
         {
           return (new DateTime($val))->format( 'H:i' );
         }
       else if ($val = $gdate->getDate())
          {
        return ('00:00');
            }
   }

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

// Wochentage auf Deutsch

$tag[0] = "Sonntag";
$tag[1] = "Montag";
$tag[2] = "Dienstag";
$tag[3] = "Mittwoch";
$tag[4] = "Donnerstag";
$tag[5] = "Freitag";
$tag[6] = "Samstag";

$deco = "";

if($blinkToday)
   {
    $deco = "blink";
    }


//******************************************************************************

$calc1=ReadCalendar($Userid1, $Tage1, $ShortCut1);
$calc2=ReadCalendar($Userid2, $Tage2, $ShortCut2);
$calcData=array_merge($calc1, $calc2);

//$calcData=$calc2;
usort($calcData, 'DateCompare');

print_r($calcData);

$calDataTxt = "<table style='border-spacing:0px; width:100%'>"; // Starte Tabellenansicht
$check_date = "";

foreach($calcData as $thisData)
        {
      if($thisData['EndeDatum'] != date("d.m.Y", strtotime("yesterday")))
        {
        if($check_date != "" and $thisData['StartDatum'] != $check_date)
             {
             $calDataTxt .= "</table></th></tr>";
             }
        if($thisData['StartDatum'] != $check_date)
           {
           if($thisData['StartDatum'] == date("d.m.Y"))
                {
               $headerTxt = "Heute:";
               }
            elseif($thisData['StartDatum'] == date("d.m.Y", strtotime("+1 day")))
               {
                $headerTxt = "Morgen:";
                }
            else
               {
               $headerTxt = $thisData['StartDatum'];
               }
           $calDataTxt .= "<tr><td style='  padding:4px;
                                                        backgroun-color:#213245;
                                                        background: -moz-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -webkit-gradient(linear, left top, right top, color-stop(4%,rgba(31,50,79,0)), color-stop(100%,#213245));
                                                        background: -webkit-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -o-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -ms-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: linear-gradient(to right, rgba(31,50,79,0) 40%), #213245 100%;'>
                                                        <span style='color:".$StyleText[1].";font-weight:200;font-size:".$StyleText[3]."'>"
                                                        .$headerTxt.
                                                        "</span></td>
                                           <td style='text-align:right; width:100px; padding:4px;background-color:#213245'>"
                                                        ."<span style='color:".$StyleText[2].";font-weight:normal;font-size:".$StyleText[4]."'>"
                                                        .$tag[date("w", strtotime($thisData['StartDatum']))].
                                                        "<span>".
                                                        "</td>
                                                        </tr>
                                                        <tr>
                                                        <th colspan='2' style='text-align:left;padding-left:20px;padding-right:0px;padding-bottom:10px;padding-top:0px;'>
                                                        <table style='border-spacing:0px; width:100%;padding:5px; border:1px solid #1f3247;'>";
            $check_date = $thisData['StartDatum'];
            $calDataTxt .= SetEintrag($thisData);
           }
          else
           {
           $calDataTxt .= SetEintrag($thisData);
           }
        }
     }

$calDataTxt .= "</table></th></tr></table>"; // Tabelle schließen

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

/*********** Werte in eine Datei schreiben. Ich habe keine Verwendung dafür *******/

$calDataTxt = '';

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

/*

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

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



function SetEintrag($thisData)
{
    global $tag, $SC_Farbe, $deco, $StyleText;
    if($thisData['StartZeit'] == "00:00")
        {
        if($thisData['StartDatum'] == $thisData['EndeDatum'])$thisData['StartZeit']="Ganztägig";
        else $thisData['StartZeit']="bis ".substr($tag[date("w", strtotime($thisData['EndeDatum']))],0,2).", ".$thisData['EndeDatum'];
        }
    else $thisData['StartZeit'] .= " - ".$thisData['EndeZeit']." Uhr";
    if($thisData['StartDatum'] == date("d.m.Y"))
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";;color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                        <td style='text-align:right;'>
                        <span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
    }
    else
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                        <td style='text-align:right'><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
    }

}


?>



Seit heute Nacht bekomme ich folgende fehlermeldung

Warning: usort() expects parameter 1 to be array, null given in C:\Program Files\IP-Symcon\scripts\51603.ips.php on line 92
Warning: array_merge(): Argument #2 is not an array in C:\Program Files\IP-Symcon\scripts\51603.ips.php on line 150
Warning: usort() expects parameter 1 to be array, null given in C:\Program Files\IP-Symcon\scripts\51603.ips.php on line 153
Warning: Invalid argument supplied for foreach() in C:\Program Files\IP-Symcon\scripts\51603.ips.php on line 160
Warning: Invalid argument supplied for foreach() in C:\Program Files\IP-Symcon\scripts\51603.ips.php on line 220

Ich habe keine änderung am Script vorgenommen und ich habe keine Ahnung was das jetzt sein kann.

Hat jemand einen Tip für mich ?

Gruß Stephan

Hallo Schablone,

zunächst danke für dein tolles Skript und die Anleitung - hat alles gut funktioniert.

Was ich nicht verstanden habe: „schaun_wir_mal@group.calendar.google.com“ ist meine 2. Kalender-ID z.B. ‚Symcon‘
Beide laufen unter einem Google Konto. Leider bekomme ich nur Daten, wenn ich ihn öffentlich gemacht habe.
Gibt es hierzu eine Lösung (Einstellungen)?

MST

Hallo Michael,

ich hoffe Du bist gut ins neue Jahr gekommen!

Meine Kalender sind nicht öffentlich.
In dem Bild siehst Du das Setup von meinem zweiten Kalender.

PS: Wird es nochmal ein IPS-Treffen in 2015 geben?

Hallo Martin,

danke der Nachfrage: alles gut :slight_smile:

Klar, die Kalender sind nicht öffentlich! Nur wie bekomme ich meinen zweiten rein?

Das Problem ist sicherlich die Schwierigkeit :rolleyes:

VG
Michael

PS: Treffen, ja - wir werden im Sommer an der Ostsee sichtlich etwas veranstalten…

Wie in dem Screenshot dargestellt ist bei mir der Hauptkalender (ID) als berechtigte Person in den zweiten Kalender eingetragen.

… komisch: kaum verwendet man die richtigen Zahlen- Buchstabenkombinationen und schon geht’s :rolleyes: