Homematic und Google Kalender

Die Homematic CCU2 wird bei uns zur Heimautomatisierung eingesetzt.
Hier stelle ich vor, wie ich aus einem Google Kalendar Termine in der CCU zugreifbar mache.

Überblick
Es wird ein Goolge-Script angelegt, welches Termine aus dem Kalender ausliest und auf Vorkommen von Worten überprüft. Das Ergbenis wird aufbereitet als Booleans bereitgestellt. Die CCU ruft dieses Google-Script als Programm auf und schreibt die empfagenen Booleans in SystemVariablen.

Google-Script
Das Anlegen eines Google-Scriptes geht (vielleicht mit einem frischen GoogleAccount für die CCU) einfach, indem man hier ein „Skript als WebApp“ anlegt. Der Editor ist nahezu selbsterklärend – nur ein Hinweis: Version anlegen vor dem Veröffentlichen!

Mein Google-Script sieht so aus:

// Transfer Calendar entries for homematic
//
// This script parses a calendar for given keywords on vacation and away-state
// States are provided as ,-seperated List for easy parsing at the CCU side
// Output, currently:
// VacationToday, AwayToday, AwayNow, VacationTomorrow, AwayTomorrow;
// Feel free to adopt to your needs!
//
// inspired by http://homematic-forum.de/forum/viewtopic.php?t=11386
// by Henning Mersch mailhenning-mersch.de

//Configuration
//Calendar to access
var cal = 'xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com';
//Patterns to search for
var pattVacation=new RegExp('urlaub|vacation|frei','i');
var pattAway=new RegExp('abwesend|verreist|unterwegs','i');

function doGet(request) {
var answer = "2.0";

if ( request.parameters.cmd == "urlaub" )
{
answer = getVacation();
}

return ContentService.createTextOutput(answer);
}

function getVacation()
//creates a bit mask including todays and tomorrows vacation information
{
//init dates
var today = new Date();
today.getTime();
var tomorrow = new Date();
tomorrow.setTime(tomorrow.getTime(­ ) + (1000*3600*24));
//init bit mask and flags
var result = new Array(0,0,0,0,0); //00000 - initial value
var posVacationToday = 0;
var posAwayToday = 1;
var posAwayNow = 2;
var posVacationTomorrow = 3;
var posAwayTomorrow = 4;

//get information about today
var eventsToday = daysEvents(today);
for (var i=0; i<eventsToday.length; i++)
{
//check event title for vacation
if (pattVacation.test(eventsToday[i].getTitle()))
{
result[posVacationToday] = 1;
}
//check event title/location/description for away state
if (pattAway.test(eventsToday[i].getTitle()) || pattAway.test(eventsToday[i].getLocation())|| pattAway.test(eventsToday[i].getDescription()))
{
result[posAwayToday] = 1;
}
}
//get information about current+1h
var oneHoursFromNow = new Date(today.getTime() + (1 * 60 * 60 * 1000));
var eventsNow = CalendarApp.getCalendarById(cal).getEvents(today, oneHoursFromNow);
for (var i=0; i<eventsNow.length; i++)
{
//check title/location/description for away
if (pattAway.test(eventsNow[i].getTitle()) || pattAway.test(eventsNow[i].getLocation())|| pattAway.test(eventsNow[i].getDescription()))
{
result[posAwayNow] = 1;
}
}
//get information about tomorrow
var eventsTomorrow = daysEvents(tomorrow);
for (var i=0; i<eventsTomorrow.length; i++)
{
if (pattVacation.test(eventsTomorrow[i].getTitle()))
{
result[posVacationTomorrow] = 1;
}
//check event title/location/description for away state
if (pattAway.test(eventsTomorrow[i].getTitle()) || pattAway.test(eventsTomorrow[i].getLocation())|| pattAway.test(eventsTomorrow[i].getDescription()))
{
result[posAwayTomorrow] = 1;
}
}
return(result);
}

// corrects a google bug in all day events
// thanks to user "dwm" from homematic-forum.de!
function daysEvents( aDate )
{
var now = new Date( aDate );
now.setHours(12);
now.setMinutes(0);
now.setSeconds(0);

var startOfDay = new Date(now);
startOfDay.setUTCHours(0);
startOfDay.setMinutes(0);
startOfDay.setSeconds(0);
startOfDay.setMilliseconds(0);
var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);

var events = CalendarApp.getCalendarById(cal).getEvents(startOfDay, endOfDay);
var result = new Array;

for (var i=0; i<events.length; i++)
{
var theTitle=events[i].getTitle();
if ( events[i].isAllDayEvent() )
{
result.push(events[i]);
}
}

events = CalendarApp.getCalendarById(cal).getEventsForDay( now );
for (var i=0; i<events.length; i++)
{
var theTitle=events[i].getTitle();
if ( !events[i].isAllDayEvent() )
{
result.push(events[i]);
}
}

return result;
}

CCU
Auf der CCU werden entsprechende SystemVariablen angelegt und folgendes Programm ruft per CuxD-System-Exec Gerät (ein solches kann einfach über die CuxD-Oberfläche angelegt werden) per Curl das Google-Script auf.

Hinweis: In Foren liest man häufiger von manuellen Curl Installationen – das ist nicht mehr nötig; mittlerweile liefert CuxD curl selber mit.


! Get Vacation/away from Google Calendar
! inspired by http://homematic-forum.de/forum/viewtopic.php?t=11386
! by Henning Mersch mailhenning-mersch.de
! SystemVariables (bool):
! All-Google-Urlaub
! All-Google-AbwesendHeute
! All-Google-Abwesend
! All-Google-UrlaubMorgen
! All-Google-AbwesendMorgen

var url="https://script.google.com/macros/s/HIER-DIE-SCRIPT-ID/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L " # url # "?cmd=urlaub";

dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();

var oUrlaub = dom.GetObject("All-Google-Urlaub");

!Parse the output
if ( v.StrValueByIndex(",",0) == "1" )
{
dom.GetObject("All-Google-Urlaub").State ( true );
}
else
{
dom.GetObject("All-Google-Urlaub").State ( false );
}

if ( v.StrValueByIndex(",",1) == "1" )
{
dom.GetObject("All-Google-AbwesendHeute").State ( true );
}
else
{
dom.GetObject("All-Google-AbwesendHeute").State ( false );
}

if ( v.StrValueByIndex(",",2) == "1" )
{
dom.GetObject("All-Google-Abwesend").State ( true );
}
else
{
dom.GetObject("All-Google-Abwesend").State ( false );
}

if ( v.StrValueByIndex(",",3) == "1" )
{
dom.GetObject("All-Google-UrlaubMorgen").State ( true );
}
else
{
dom.GetObject("All-Google-UrlaubMorgen").State ( false );
}

if ( v.StrValueByIndex(",",4) == "1" )
{
dom.GetObject("All-Google-AbwesendMorgen").State ( true );
}
else
{
dom.GetObject("All-Google-AbwesendMorgen").State ( false );
}

Das wars schon 🙂

45 thoughts on “Homematic und Google Kalender

  1. Hallo, mich interessiert ob man z.B. die Heizung auch vor dem Kalendereintrag aktivieren kann.

    Ein Beispiel:
    Im Kalender steht das ab 16 – 17 Uhr die Heizung in Raum 1 21°C haben soll.
    Da ich weiß wie lange es dauert den Raum aufzuheizen, möchte ich das die Heizung 20 Minuten vor dem Termin (15:40 Uhr) einschaltet und nach Möglichkeit auch 20 Minuten nach dem Termin (bis 17:20 Uhr) noch weiter heizt, falls der Raum länger genutzt wird.

    Ist das möglich das in das Script zu integrieren?

    • Sorry, Dein Post ist im SPAM Verdacht hängen geblieben…

      Falls noch von Interesse. Ab der Zeile „get information about current+1h“ hole ich zukünfige Ereignisse ab. Wenn man stattdessen „+20min“ rechnet schaut man 20min in die Zukunft und sieht, ob man _jetzt_ die Heizung anmachen sollte.
      Man muss dann halt häufig genug das Skript starten ….

      Gruss – Henning

  2. Hallo,

    ich bin über diese Lösung gestolpert und versuche diese seit Tagen umzusetzen.

    Zwei Fragen:
    – Was ist mit „var cal = ‚xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com“ gemeint?
    und
    Sobald ich das Skript in Homematic starte kommt bei dom.GetObject(„CUxD.CUX2801001:1.CMD_RETS“).State()
    „“!DOCTYPE html html head link rel=“shortcut icon“ href=“//ssl.gstatic.com/docs/script/images/favicon.ico“ title Fehler /title style type=“text/css“ body {background-color: #fff; margin: 0; padding: 0;}.errorMessage {font-family: Arial,sans-serif; font-size: 12pt; font-weight: bold; line-height: 150%; padding-top: 25px;} /style /head body div img src=“//ssl.gstatic.com/docs/script/images/logo.png“ /div center TypeError: Methode "getEvents" von null kann nicht aufgerufen werden. /center /body /html „“

    Was mache ich falsch?

    Andi

    • Hallo,

      Zu 1) Das ist die Kanender-ID von Google (damit der richtige Kalender gelesen wird). Bekommt man in den Kalender-Einstellungen recht weit unten bei „Kalenderadresse“ angezeigt (bei den XML,iCal etc Buttons)
      Zu 2) CuxD ist installiert und ein Exec Gerät angelegt? Dann muss die Id (bei mir CUX2801001) ggf noch angepasst werden

      HTH, Henning

  3. Danke erstmal für das/die Scripts.

    Ich habe das Problem, dass die Systemvariablen nicht richtig gesetzt werden. Der Google Output der Webapp passt (1,0,0,1,0) und die Systemvariablen werden beim manuellen Starten des Programms auch aktualisiert, jedoch alle mit false. Im Syslog unter CUxD stehen keine Fehlermeldungen, von daher gehe ich davon aus, dass curl richtig eingebunden ist (angepasst auf CUxD.CUX2801001:1).

    Woran könnte das Problem noch liegen? Wie kann ich weiter debuggen?

    Danke
    Carsten

    • Nachtrag: Es ist doch ein Google-Problem. Wenn ich mich vom Google-Konto abmelde, soll ich mich beim Aufruf der Webapp wieder anmelden, obwohl sie für alle freigegeben ist.

      In den Google-Projekteigenschaften steht:
      Das folgende Skript benötigt einen OAuth-Bereich:
      https://www.google.com/calendar/feeds

      Der Google Kalender ist auch veröffentlicht.

      Any ideas? 🙁

  4. Nachtrag 2: Ich hab’s. Fehler war die Webapp-Freigabe:
    – App ausführen als: Ich
    – Zugriff: Alle, auch anonyme

    Nun stimmen auch die Systemvariablen 🙂

    • Da ist man mal einen Abend nicht am Rechner … 😉
      Schön, dass es tut – bei mir ist seit der ersten Einrichtung alles stabil, sodass ich mich wirklich mittlerweile voll drauf verlassen kann, dass ich bei „abwesend“ auch die Heizungen runter bekommt, Anwesenheitssimulation startet etc.

      Viel Spass damit!

  5. Hallo,

    heute habe ich das Problem, dass ich angeblich heute Urlaub habe. Der steht aber erst für morgen drin. Also ein Tag Versatz.

    Komisch.

    Muss mal suchen gehen.

    Andi

  6. So, ich bins nochmal. Also bei mir ist der ganztägige Termin ein Problem. Sobald ich für morgen (Samstag 4.7.) einen Tag Urlaub (ganztätig) eintrage wird der heute schon als Urlaub 1,0.0,1,0 übergeben. Trage ich den Urlaub als Termin für 0:00 oder 8.00 morgen ein läuft es richtig.
    Irgendeine Idee? Kann jemand das Problem bestätigen?
    Sonnige Grüße an den Rest der Homematic Mitstreiter
    Andi

  7. weiß nicht, ob ich jetzt was falsch gemacht habe… aber

    var endOfDay = new Date( aDate )
    endOfDay.setHours(23);
    endOfDay.setMinutes(59);
    endOfDay.setSeconds(59);
    endOfDay.setMilliseconds(0);

    löst mein Problem Stand jetzt. Bin gespannt was die Profis sagen 😉

    • Bei mir schon länger her, aber … ich denke, Du setzt 1000ms weniger als ich für das endOfDay.
      Beobachte einfach mal, ob das bei Dir funktioniert.

      Im original Thread auf homematic-forum.de sind einige Beiträge von „dwm“, der auch grundsättzlich erklärt, was bei Google bei den AllDay-Einträgen schief läuft. Vielleicht hilft das …

  8. @Andi
    ich habe seit kurzem auch wieder die Probleme mit den allDayEvents. Magst Du mal deine komplette Korrektur posten.

  9. Da der Fix von Andy leider bei mir nicht funktioniert hat, habe ich nochmal experimentiert und folgende Lösung für mich gefunden. Start Of Day um 100 Millisekunden verzögert und End Of Day 100 Millisekunden früher.

    var startOfDay = new Date(now);
    startOfDay.setUTCHours(0);
    startOfDay.setMinutes(0);
    startOfDay.setSeconds(0);
    startOfDay.setMilliseconds(100);
    var endOfDay = new Date(startOfDay.getTime() + 23 * 59 * 59 * 900);

  10. Hallo,
    könntest du vielleicht noch ein zwei Sätze zur Fehleranalyse sagen.
    Ich habe im CUx ein System>Exec-Gerät angelegt, Variablen erzeugt,
    Google Script erstellt und ein neues Programm erstellt, welches bei drücken einer Taste auf dem neuen Gerät das Script ausführt.

    Dummerweise tut sich absolut gar nichts. Ich hätte eigentlich Log-Meldungen im CUx erwartet aber dort tut sich nichts. Kannst du mir einen Tip geben?
    Besten Dank

    • Hallo,
      Der häufigste Fehler ist, dass das GoogleScript nicht zugreifbar ist.
      Dafür im Browser aus Google ausloggen und die URL des Scriptes aufrufen — erscheint der gewünschte „String“ (ala 0,1,0,…) im Browser?

      Danach weiss man zumindest, ob man bei Google oder bei der CCU weitersuchen muss.

      Das Script funktioniert seit Erstinbetriebnahme ansonsten absolut zuverlässig bei mir.

      Gruss – Henning

  11. Hey super,
    ich bin stark beeindruckt. Es lag tatsächlich an den Rechten.
    Eine Frage habe ich jedoch noch, in welchem Fall wird die Variable „All-Google-Abwesend“ gefüllt?
    Heute und morgen ist klar und funktioniert aber die eben genannte scheint mir überflüssig zu sein!?
    Nochmals vielen Dank für dieses spitzenmäßige Projekt!!!
    Gruß
    Dennis

    • Hallo,
      Klasse, dass es geholfen hat.
      All-Google-Abwesend ist für mich der „Aktualwert“ — also ob gerade jetzt ein Abwesend-Termin im GCal steht.
      ….darauf reagieren bei mir Heizungen etc.
      „Heute“ sagt nur generell, ob „heute irgendwann mal“ ein Abwesend existiert.

      Gruss – Henning

  12. Hallo nochmal,
    könntest du noch erzählen wir man ein weiteres Event hinzufügt?
    Ich hätte gern eine Reaktion auf Homeoffice-Einträge, meinetwegen kann dafür auch die Urlaubs-Variable gefüllt werden aber ich bekomme es einfach nicht hin.
    Ein kleiner Hinweis wäre super 🙂

    • Hallo,
      Eigentlich müsstest Du doch dann nur im Google-Script recht unter Configuration die Schlagwörter von pattVacation auf HomeOffice ändern. Dann „lauscht“ er halt auf andere Events …

      Gruss – Henning

  13. Hallo zusammen,

    wenn ich die Google Web-App starte, bekomme ich folgende Fehlermeldung: TypeError: Eigenschaft „parameters“ von undefined kann nicht gelesen werden. (Zeile 22, Datei „Code“)

    mache ich was falsch?

    Wenn ich das script über die URL aufrufe, bekomme ich 2.0 ausgegeben.

    Hat jemand eine Idee?

    Gruß

  14. Es gibt in dem Editor den Reiter Ausführen. Und dann den ersten Unter Reiter. Alle Variablen in der Ccu stehen auf false.

    • Hallo,

      Die Variablen der CCU werden durch das CCU Script gesetzt; Dein „Ausführen“ ist aber in Google, richtig? D.h. erst das CCU Skript holt die Daten ab und setzt die Vars in der CCU.
      Bekommst Du mit dem „urlaub“ als cmd-param denn den passenden (0,0,0,0…)-Array?

      Gruss

  15. Hallo,
    ich habe es nun hinbekommen. Homeoffice hatte ich bereits zu den Schlagwörtern hinzugefügt, funktionierte nur leider nicht. HomeMatic schien die Änderungen nicht erkannt zu haben.
    Problem war das Script-Projekt, nach diversen löschen und neu anlegen hat es nun funktioniert.

    Ich würde neuen Nutzern empfehlen (die von den Scripten genauso wenig Ahnung haben wie ich) sich im vorhinein über die Kalendereinträge Gedanken zu machen.

    Nochmals besten Dank

  16. Nein wenn ich die URL in einem Browser eingebe, wo ich nicht mit Google Verbunden, bekomme ich den Wert 2.0 ausgegeben.

    Gruß

  17. Hallo,

    ich habe das Problem in den Griff bekommen.
    Wenn man an dem Script bei Google Apss etwas ändert, hilft es unter Datei -> Version verwalten eine neue Version anzulegen. Anschließend Veröffentlichen und die entsprechende Version auswählen und veröffentlichen. Schon klappt es 🙂 Danke

  18. Hallo Henning,

    erst einmal vielen Dank für Deine Arbeit, echt ein klasse Projekt!

    Bei mir werden die Variablen seit geraumer Zeit nicht mehr in die CCU2 übernommen.

    Wenn ich die GoogleScript URL aufrufe erscheint nur „2.0“. Vor einigen Wochen hat noch alles tadelos funktioniert und ich habe in der Zwischenzeit keine Änderungen vorgenommen.

    Hast Du eine Idee, wo und wie sich der Fehler eingeschlichen haben könnte?

    Beste Grüße,
    Christian

    • Hi,

      Wenn Du da Script ohne parameter aufrufst, soll es genau 2.0 ausgeben. Wenn Du z.B. „?cmd=urlaub“ anfügst solltest Du einen 0,1,0,1,0 oder ähnliches sehen — das ist das, was die CCU auch verarbeitet. Damit kannst Du dann also sehen, ob das GoogleScript oder Deine CCU das Problem haben..

      Viel Erfolg
      Henning

      • Vielen Dank für die Rückmeldung.

        Wenn ich „?cmd=urlaub“ einfüge bekomme ich folgende Fehlermeldung:
        „Folgender Dienst an einem Tag zu häufig aufgerufen: calendar (Zeile 105, Datei „Code“, Projekt „R1u2″)“

        Hast Du schon einmal mit diesem Fehler zu tun gehabt?

        Beste Grüße
        Christian

  19. Hi,

    Nein – hatte ich nicht. Rufst Du das Script aus der CCU vielleicht permanent auf? Kontrollier das mal … und dann schauen ob Google Dir zu den Aufrufen bzw den maximalen Aufrufen irgendwas sagt.
    Diese kostenlosen Clouddienste haben alle irgendwo ein Limit

  20. Hallo Henning,

    Erstmla vielen Dank für diese Anleitung.
    Derzeit suche ich eine klar verständliche Anleitung und bin glaube hier fündig geworden.

    Ich verstehe nur rein garnichts von dem Script und mir bleibt nichts anderes übrig als es zu kopieren in der Hoffnung das es klappt. Wenn ich aber genauer hinschaue, kann man das ein oder andere zumindest erahnen.

    Mein Wunsch ist sehr banal. Ich möchte einfach nur einen Müll und Feiertagskalender in die CCU einbinden, damit ich darüber dann in Mediola meine Termine angezegt bekomme. Muss ich denn dafür was ändern in deinem Script?

    Die Feiertage möchte ich nutzen, um mein Heizungsproramm auszuhebeleln, damit dieses an Feiertagen nicht runter regelt. Den Kindern ist sonst einfach zu kalt 🙂

    • Hallo,
      1) Feiertage habe ich „lokal“ in der CCU, denn die lassen sich berechnen (denn sie haben Regeln) – das muss man nicht von Remote abrufen. Da gibts ein passendes Script im Homematic-forum.de
      2) Müll kannst Du nach dem Prinzip des Blogposts abholen, wie ich das mit „Abwesend“ etc mache – hauptsächlich musst Du die Keywords dafür ändern – und vielleicht die „Anzahl“ des Arrays, (also 0,1,0,1,0) etc. Würde Dir empfehlen erst 1:1 das zum Laufen zu bringen und dann in einem zweiten Schritt Deine Anpassungen machen

      Gruss – Henning

      • Hallo,

        vielen Dank für deine Antwort.
        Ja, so in etwa habe ich mir das schon gedacht. Mit den Keywords meinst du dann die Wörter wie „Abwesend“ und so. Die werden dann geändert in die Wörter wie aus dem Kalender. Damit er danach suchen kann.

        Was müsste ich denn noch ändern, damit er mir die besagte Mülltonne ab der letzten anzeigt. Sprich, wenn Resttonne war, dann ab dem Folgetag die ganze Woche die nächste Tonne anzeigen.

        Grüsse Sandro

  21. Hallo,
    Du müsstest Dich mit dem Google Skript beschäftigen und Dir die Google-Calender-API anschauen – irgendwie die „Vorwärtssuche“ nach der nächsten Tonne in den kommenden Tagen realisieren. Entweder auf Basis der Funkionen die ich oben auch verwende (iterieren über die kommenden Tage, bis man einen Treffer hat) oder vielleicht kann man aber auch direkt suchen?

    Interessiert Dich das wirklich? Mich interessiert doch eher am Vorabend, dass ich eine Tonne rausstellen muss und sonst garnichts, oder? Ausserdem: Bei uns werden meistens mehrere Tonnen an einem Tag abgeholt, sodass man garnicht sagen kann, was die eine, nächste Tonne ist.

    Zu Müllterminen gibts aber auch im Homematic-Forum eigene Skripte, die nach dem gleichen Muster wie hier funktionieren. Vielleicht startest Du eher von so einem Skript

  22. Hallo,

    Bei ändern sich die Systemvariablen nicht.
    Wenn ich den Link vom google script im browser aufrufe bekomme ich als Antwort: 2.0

    Wenn ich den Link noch mit cmd=urlaub aufrufe bekomme ich folgende Fehlermeldung:

    TypeError: Methode „getEvents“ von null kann nicht aufgerufen werden. (Zeile 105, Datei „CCU2“, Projekt „CCU2“)

    Zeile 105 im Script ist:
    var events = CalendarApp.getCalendarById(cal).getEvents(startOfDay, endOfDay);

    Sorry bin nicht so der Programmierer 🙁

    Gruß

  23. Hallo,
    Das getCalenderById(cal) liefert anscheinend NULL zurück — und darauf kann getEvents nicht aufgerufen werden. Also ist Dein „cal“ nicht gut – passende ID eingetragen?
    Gruss

  24. Hallo Herr Mersch,

    ich hbae ebenfalls das Problem, dass ich bei Überprüfung des Codes in der Google Script Anwendung folgenden Fehler erhalte:
    TypeError: Methode „getEvents“ von null kann nicht aufgerufen werden. (Zeile 105, Datei „Code“)

    Nachdem was ich hier lese, besteht das Problem offensichtlich mit dem iCal Link.
    Ich habe ihn folgendermaßen im Script angepasst: ‚https://calendar.google.com/calendar/ical/XXXXXXXgmail.com/public/basic.ics‘

    Vielleicht können Sie mir einen Tipp geben, was damit nicht stimmt?

    Mit freundlichen Grüßen,
    André

  25. Hallo,

    ich habe es hinbekommen, der Link zum Kalender war total daneben.

    Vielen Dnk für das tolle Script.

    Gruß,
    André

  26. Hallo Henning,

    nachdem ich dein Script nun erfolgreich laufen habe, überlege ich, wie man damit die Abholtermine der Mülltonnen auslesen kann?

    Nachdem, was ich weiter oben leen, muss ich folgendes anpassen, oder bin ich damit auf dem Holzweg?

    //Configuration
    //Calendar to access
    var cal = ‚xxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com‘;
    //Patterns to search for
    var pattGelbe_Tonne=new RegExp(‚gelb|gelbe Tonne‘,’i‘);
    var pattBlaue_Tonne=new RegExp(‚blau|blaue Tonne|Papier Müll‘,’i‘);
    var pattBraune_Tonne=new RegExp(‚braun|blaue Tonne|Bio Müll‘,’i‘);
    var pattSchwarze_Tonne=new RegExp(’schwarz|schwarze Tonne‘,’i‘);

    Außerdem noch folgendes:
    var result = new Array(0,0,0,0,0,0,0,0); //00000000 – initial value
    var posGelbeTonneToday = 0;
    var posGelbeTonneTomorrow = 1;
    var posBlaueTonneToday = 2;
    var posBlaueTonneTomorrow = 3;
    var posBrauneTonneToday = 4;
    var posBrauneTonneTomorrow = 5;
    var posSchwarzeTonneToday = 6;
    var posSchwarzeTonneTomorrow = 7;

    Denke ich richtig bzw. muss ich sonst noch etwas im Google Script anpassen?

    Muss ich im Homematic Script das cmd=urlaub und var oUrlaub = dom.GetObject(„All-Google-Urlaub“); ändern? Welchen Wert nutze ich jetzt dafür?

    var url=“https://script.google.com/macros/s/AKfycbwF_rH2tUW1KJr60zzfu5mD72j6VHalA7MKfvNgnAuiUfUtCaY/exec“;
    var cmd = „LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -L “ # url # „?cmd=urlaub“;

    dom.GetObject(„CUxD.CUX2801001:11.CMD_SETS“).State(cmd);
    dom.GetObject(„CUxD.CUX2801001:11.CMD_QUERY_RET“).State(1);
    var v = dom.GetObject(„CUxD.CUX2801001:11.CMD_RETS“).State();

    var oUrlaub = dom.GetObject(„All-Google-Urlaub“);

    Vielen Dank für deine Unterstützung.

    Gruß,
    André

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Time limit is exhausted. Please reload the CAPTCHA.