Homematic und Google Apps
Moderator: Co-Administratoren
Re: Homematic und Google Apps
Also ich komme selbst leider nicht auf die Korrektur des Scriptes. Alles, was ich versucht habe, klappt nicht bzw. ich
schaffe es nicht, das Script korrekt anzupassen - obwohl das wieder sicher nur eine Kleinigkeit ist... :/
Würde mich freuen, wenn mir jemand eine Hilfestellung oder zumindest einen passenden Befehl sagen könnte.
Wohl kann man laut Recherche mit Befehlen wie findnext(what:="Restmuell") irgendwie arbeiten, aber egal wie und wo ich es versuche einzubauen, das Script scheint fehlerhaft zu sein...
Danke Euch im Voraus!
schaffe es nicht, das Script korrekt anzupassen - obwohl das wieder sicher nur eine Kleinigkeit ist... :/
Würde mich freuen, wenn mir jemand eine Hilfestellung oder zumindest einen passenden Befehl sagen könnte.
Wohl kann man laut Recherche mit Befehlen wie findnext(what:="Restmuell") irgendwie arbeiten, aber egal wie und wo ich es versuche einzubauen, das Script scheint fehlerhaft zu sein...
Danke Euch im Voraus!
Re: Homematic und Google Apps
Da dies ein Javascript-Skript ist, hat dies leider eigentlich nichts mit Homematic zu tun.deifel hat geschrieben:Würde mich freuen, wenn mir jemand eine Hilfestellung oder zumindest einen passenden Befehl sagen könnte.
Und da ich diesen Google-Service nicht nutze müßte ich mich daher erst komplett in die Syntax des Services einarbeiten.
Sorry, da bin ich aus Zeitgründen raus.
.
Re: Homematic und Google Apps
Hallo zusammen,
könnte mir mal bitte jemand unter die Arme greifen.
Ich habe versucht das erste Script zum laufen zu bringen aber es funktioniert leider nicht.
Folgendes habe ich getan:
Script als App veröffentlicht
Liefert wie gewünscht eine 1 (mit Urlaubseintrag) bzw. 0 (ohne Kalendereintrag) zurück.
Was mich stutzig macht:
Ich habe für den heutigen Tag drei verschiedene Termine im Kalender. "frontline spot on" ist ein ganztägiger Termin, gefolgt von einem Test und einem Urlaub.
Sollte das Script nicht "frontline spot on;Test;Urlaub" ausgeben?
Cux-Deamon ist installiert und wird bereits seit längerem für andere Aufgaben erfolgreich verwendet.
Dann habe ich eine "Programm und Zentralenverknüpfung angelegt, die zum testen alle 10 Sekunden ausgeführt wird.
Als auszuführendes Script habe ich folgendes eingetragen:
Die angelegte Variable "Urlaub" wird leider permanent auf "0" gesetzt.
Fragezeichen erzeugen auch das Objekt "CUxD.CUX2801001:1" bei mir ist das eine 19-Tasten-Fernbedienung und auf dem Kanal ist
KEY|CMD_SHORT = curl -s -k -L https://script.google.com/macros/s/xxxx ... cmd=urlaub
eingetragen. Hat das so seine Richtigkeit.
Ich wäre über ein paar Tips sehr dankbar.
Viele Grüße
wolf331
könnte mir mal bitte jemand unter die Arme greifen.
Ich habe versucht das erste Script zum laufen zu bringen aber es funktioniert leider nicht.
Folgendes habe ich getan:
Script als App veröffentlicht
Code: Alles auswählen
// Script-as-app template.
function doGet(request) {
var answer = "1.0";
if ( request.parameters.cmd == "urlaub" )
{
answer = getVacation();
}
else if (request.parameters.cmd == "events" )
{
answer = getEventsToday();
}
return ContentService.createTextOutput(answer);
}
function getVacation()
{
var today = new Date();
today.getTime();
var events = CalendarApp.getEventsForDay(today);
var result = "0";
for (var i=0; i<events.length; i++)
{
if (events[i].getTitle() == "Urlaub")
{
result="1";
break;
}
}
return (result);
}
function getEventsToday()
{
var today = new Date();
today.getTime();
var events = CalendarApp.getEventsForDay(today);
var result = "";
for (var i=0; i<events.length; i++)
{
if ( result.length > 0) {
result = result+";";
}
result = result + events[0].getTitle().toLowerCase();
}
return (result);
}
Code: Alles auswählen
https://script.google.com/macros/s/xxxxxx/exec?cmd=urlaub
Was mich stutzig macht:
Code: Alles auswählen
https://script.google.com/macros/s/xxxxxx/exec?cmd=events
gibt folgendes zurück:
frontline spot on;frontline spot on;frontline spot on
Sollte das Script nicht "frontline spot on;Test;Urlaub" ausgeben?
Cux-Deamon ist installiert und wird bereits seit längerem für andere Aufgaben erfolgreich verwendet.
Dann habe ich eine "Programm und Zentralenverknüpfung angelegt, die zum testen alle 10 Sekunden ausgeführt wird.
Als auszuführendes Script habe ich folgendes eingetragen:
Code: Alles auswählen
!! Holt den Urlaubsstatus von Google Apps
var url="https://script.google.com/macros/s/xxxxxx/exec";
var cmd = "curl -s -k -L " # url # "?cmd=urlaub";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var oUrlaub = dom.GetObject("Urlaub");
if ( v == "1" )
{
oUrlaub.State ( true );
}
else
{
oUrlaub.State ( false );
}
Die angelegte Variable "Urlaub" wird leider permanent auf "0" gesetzt.
Fragezeichen erzeugen auch das Objekt "CUxD.CUX2801001:1" bei mir ist das eine 19-Tasten-Fernbedienung und auf dem Kanal ist
KEY|CMD_SHORT = curl -s -k -L https://script.google.com/macros/s/xxxx ... cmd=urlaub
eingetragen. Hat das so seine Richtigkeit.
Ich wäre über ein paar Tips sehr dankbar.
Viele Grüße
wolf331
Re: Homematic und Google Apps
Probiere es mal hiermit, hängt vermutlich mit dem "all day events" Bug zusammen.wolf33 hat geschrieben:Hallo zusammen,
könnte mir mal bitte jemand unter die Arme greifen.
Ich habe versucht das erste Script zum laufen zu bringen aber es funktioniert leider nicht.
Was mich stutzig macht:Ich habe für den heutigen Tag drei verschiedene Termine im Kalender. "frontline spot on" ist ein ganztägiger Termin, gefolgt von einem Test und einem Urlaub.Code: Alles auswählen
https://script.google.com/macros/s/xxxxxx/exec?cmd=events gibt folgendes zurück: frontline spot on;frontline spot on;frontline spot on
Sollte das Script nicht "frontline spot on;Test;Urlaub" ausgeben?
Code: Alles auswählen
function doGet(request) {
var answer = "2.0";
if ( request.parameters.cmd == "urlaub" )
{
answer = getVacation();
}
else if (request.parameters.cmd == "events" )
{
answer = getEventsToday();
}
return ContentService.createTextOutput(answer);
}
function getVacation()
{
var today = new Date();
today.getTime();
var events = CalendarApp.getEventsForDay(today);
var result = "0";
for (var i=0; i<events.length; i++)
{
if (events[i].getTitle() == "Urlaub")
{
result="1";
break;
}
}
return (result);
}
// fix the google bug in all day events
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(100);
var endOfDay = new Date(startOfDay.getTime() + 23 * 59 * 59 * 900);
var events = CalendarApp.getDefaultCalendar().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.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;
}
// end fix the google bug in all day events
function todaysEvents()
{
var now = new Date();
var events = daysEvents( now );
return events;
}
function getEventsToday()
{
var events = todaysEvents();
var result = "";
for (var i=0; i<events.length; i++)
{
if ( result.length > 0) {
result = result+";";
}
result = result + events[i].getTitle().toLowerCase();
}
return (result);
}
- RaspberryMatic: 104 Geräten /Developer for RaspberryMatic WebUI Patches
- Addon Support: Email Addon | Programmedrucken CCU2
- Anleitung: Welcher Rauchmelder hat ausgelöst?
Re: Homematic und Google Apps
Super, danke!
gibt jetzt alle Events korrekt aus aber die Variable bleibt noch immer auf "0".
hast du noch eine Idee?
Code: Alles auswählen
https://script.google.com/macros/s/xxxxxx/exec?cmd=events
hast du noch eine Idee?
Re: Homematic und Google Apps
@wolf33
Du meinst beim HM-Script?
Probiere es mal so:
Gruß
Andreas
Du meinst beim HM-Script?
Probiere es mal so:
Code: Alles auswählen
!! Holt den Urlaubsstatus von Google Apps
var url="https://script.google.com/macros/s/xxxxxx/exec";
var cmd = "curl -s -k -L " # url # "?cmd=urlaub";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var oUrlaub = dom.GetObject("Urlaub");
if ( v == "1" )
{
dom.GetObject("Urlaub").State ( true );
}
else
{
dom.GetObject("Urlaub").State ( false );
}
Andreas
- RaspberryMatic: 104 Geräten /Developer for RaspberryMatic WebUI Patches
- Addon Support: Email Addon | Programmedrucken CCU2
- Anleitung: Welcher Rauchmelder hat ausgelöst?
Re: Homematic und Google Apps
@wolf33
Aber wenn Du "https://script.google.com/macros/s/xxxx ... cmd=urlaub" direkt über den Browser aufrufst, bekommst Du eine "1" zurück?
Aber wenn Du "https://script.google.com/macros/s/xxxx ... cmd=urlaub" direkt über den Browser aufrufst, bekommst Du eine "1" zurück?
- RaspberryMatic: 104 Geräten /Developer for RaspberryMatic WebUI Patches
- Addon Support: Email Addon | Programmedrucken CCU2
- Anleitung: Welcher Rauchmelder hat ausgelöst?
Re: Homematic und Google Apps
Deine Systemvariable heißt auch "Urlaub" und ist vom Typ Logikwert?
Bei mir funktioniert es mit dem folgenden Script:
Bei mir funktioniert es mit dem folgenden Script:
Code: Alles auswählen
var url="https://script.google.com/macros/s/xxxxxx/exec";
var cmd = "LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl --trace-ascii /var/log/curl.trace -s -k -L " # url # "?cmd=urlaub";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var v = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
var oUrlaub = dom.GetObject("Urlaub");
if ( v == "1" )
{
dom.GetObject("Urlaub").State ( true );
}
else
{
dom.GetObject("Urlaub").State ( false );
}
- RaspberryMatic: 104 Geräten /Developer for RaspberryMatic WebUI Patches
- Addon Support: Email Addon | Programmedrucken CCU2
- Anleitung: Welcher Rauchmelder hat ausgelöst?