Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Xel66
Beiträge: 14181
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 589 Mal
Danksagung erhalten: 1502 Mal

Re: Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Beitrag von Xel66 » 04.02.2024, 18:30

Ich habe gerade das Script noch mal in meinen SDV kopiert und lediglich die Kalenderadresse ausgetauscht und vor dem Abschnitt "! ++++ Abfrage der zwischegespeicherten..." die Zeilen

Code: Alles auswählen

WriteLine (bio_m);
WriteLine (rest_m);
WriteLine (papier_m);
quit;
eingefügt (stellt die Variableninhalte dar und bricht das Script ab), sowie heute einen ganztägigen Kalendereintrag "Bio" erstellt. Funktioniert out of the box. Dann das "quit;" entfernt, und auch die Systemvariable wird entsprechend gesetzt. Also bei mir arbeitet das Script fehlerfrei.

Löschst Du ggf. beim Ändern der Kalender-URL das abschließende Anführungszeichen und das Semikolon? Kommen beim manuellen Ausführen des Scripts im Editor-Fenster irgendwelche Fehlermeldungen?

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Roli01
Beiträge: 102
Registriert: 06.04.2008, 23:56
Wohnort: nähe Krems/Donau
Danksagung erhalten: 3 Mal

Re: Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Beitrag von Roli01 » 05.02.2024, 18:09

Hi.
So hab heute nochmals gestestet.
Auf meiner aktuellen Haupt CCU3 mit Originaler letzter EQ3 Firmware geht es nicht.
Auf meiner Test CCU3 mit letzter Raspberrymatic geht es.
Spiele jetzt zum probieren mal meine letztes Backup auf die Raspberrymatic und teste dann nochmal.

Oder geht das script nur auf Raspberrymatic?

Dank
Roli
492 Kanäle in 92 Geräten und 37 CUxD-Kanäle in 4 CUxD-Geräten:

Xel66
Beiträge: 14181
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 589 Mal
Danksagung erhalten: 1502 Mal

Re: Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Beitrag von Xel66 » 05.02.2024, 19:50

Roli01 hat geschrieben:
05.02.2024, 18:09
Oder geht das script nur auf Raspberrymatic?
Kann ich mir eigentlich nicht vorstellen. Das Script nutzt keine speziellen Aufrufe. Da aber jmaus das darunterliegende Betriebssystem (buildroot und den Kernel) aktuell hält, kann es durchaus sein, dass die Originalfirmware an bestimmten Stellen etwas veraltet ist. Da ich keine Original-CCU3-Firmware betreibe, kann ich da auch nichts probieren. Vielleicht fehlt da .Substr oder .Find?

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

ManLi
Beiträge: 5
Registriert: 29.11.2015, 12:51

Re: Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Beitrag von ManLi » 01.05.2024, 19:19

Hallo,
ich habe auch das Problem, dass ich alles was hier geschrieben wurde gemacht habe, aber meine Systemvariablen reagieren nicht.

Ich bin nicht geübt in Scripts usw, daher kopiere ich die und versuche meine Daten einzugeben.
Also in diesem Fall habe ich meine URL angegeben, die ich aus dem Google Kalender als private Adresse kopieren konnte.
Und ich habe noch eine weitere Mülltonne eingegeben.
Im GoogleKalender sind Ganztags-Termine mit der Bezeichnung, wie sie im Summary stehen angelegt.

var url = "https://calendar.google.com/calendar/ic ... /basic.ics";
####
integer gelbe = ics_quelldaten.Find("SUMMARY:Gelbe"); ! Suche nach Müllart und Setzen des Status
if ((gelbe > 0) && (gelbe < eventende)) { boolean gelb_m = true;}
integer papier = ics_quelldaten.Find("SUMMARY:Papier"); ! Suche nach Müllart und Setzen des Status
if ((papier > 0) && (papier < eventende)) { boolean papier_m = true;}
####
if (rest_m > 0) { dom.GetObject(ID_SYSTEM_VARIABLES).Get("Muelltonne_gelb").State("true");}
else { dom.GetObject(ID_SYSTEM_VARIABLES).Get("Muelltonne_gelb").State("false");}
if (papier_m > 0) { dom.GetObject(ID_SYSTEM_VARIABLES).Get("Muelltonne_gruen").State("true");}
else { dom.GetObject(ID_SYSTEM_VARIABLES).Get("Muelltonne_gruen").State("false");}

In meiner CCU3 habe ich die Variablen angelegt und ein Programm erstellt.
Programm Abfuhrkalender.JPG
In dem Programm wirf das Script keinen Fehler aus.
kein Fehler lt Scriptmeldung.JPG
Ich hoffe, dass es korrekt ist, wenn ich bei: ! Abfrage über system.Exec() keine ! habe.
(ich weiß nämlich nicht genau, was das bedeutet, aber CuX traf nicht ein. Daher mein Ausschlußverfahren)

Was kann ich nun noch tun, dass meine Homi meinen Google Kalender versteht?

Ich habe mir auch das Script für Urlaub (-> urlaub_m usw.) kopiert.
Aber das funktioniert auch nicht.
Daher scheine ich ja etwas grundlegendes nicht verstanden zu haben.
Sorry, dass ich mich etwas ungeschickt anstelle.

Viele herzliche Grüße
ManLi

Xel66
Beiträge: 14181
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 589 Mal
Danksagung erhalten: 1502 Mal

Re: Systemvariablen für ical Termine setzen (am Beispiel ics eines Google Kalenders) für Mülltermine und Urlaub

Beitrag von Xel66 » 01.05.2024, 21:53

Die zweite Zeile Deines (sichtbaren)Scriptteils ist ein "quit;"! Heißt, an dieser Stelle wird die Bearbeitung des Scripts abgebrochen. Also kann danach eingegebener Code (das eigentliche Setzen der Systemvariablen) auch nicht zur Ausführung kommen. Außerdem fragst Du auf "if (rest_m > 0)" für die gelbe Tonne ab. Das dürfte auch nicht funktionieren. Da müsste schon mal "if (gelb_m > 0)" gemäß Deiner Deklaration hin.

Weiterhin gab es oben schon mal Probleme bei einer Abfrage über eine originale CCU. Ich benutze Raspberrymatic und weiß nicht, ob in der originalen Firmware vielleicht bestimmte Funktionsaufrufe (.Substr oder .Find) fehlen. Und nein, das mit den fehlenden Ausrufezeichen (kennzeichnen einen Kommentar und verhindern somit die "Ausführung" des dahinterstehenden Textes) beim sytem.Exec()-Aufruf ist korrekt. Wenn man kein CUxD für die URL-Abfrage benutzt, braucht man nichts zu ändern.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“