Systemvariable wird nicht von der CCU2 übernommen

Kabellose und kabelgebundene Sender und Empfänger der Serie Homematic "classic"

Moderator: Co-Administratoren

hussi
Beiträge: 6
Registriert: 10.07.2018, 20:10

Systemvariable wird nicht von der CCU2 übernommen

Beitrag von hussi » 11.08.2018, 13:56

Hallo Leute,

ich bin neu und hier und mache gerade meine ersten Schritte in der Homematic Welt. Derzeit scheitere ich aber an folgendem Szenario:

Die Lampen auf der Terrasse sollen immer am Wochenende und an Feiertagen nach der Dämmerung eingeschaltet werden und um 23:30 aus gehen. Folgende Programme und Variablen bzw. Skripte habe ich:

Programm Licht an:
Bild

Programm Licht aus:
Bild

Programm Wochenende:
Bild

Variable Wochenende:
Bild

Variable Feiertag:
Bild

So weit so gut. Das Problem das ich habe ist, dass die Variable Wochenende von der CCU2 nicht übernommen werden.

Das Skript zur Wochenendberechnung sieht so aus:

Code: Alles auswählen

object wochenende = dom.GetObject('Wochenende');
integer d = system.Date("%w").ToInteger();

! ### DEBUG ###
WriteLine(d);
! ###
if( (d == 5) || (d == 6) || (d == 0) ){
 boolean myVar = true;
 string myText = "Wochenende";
} else {
 boolean myVar = false;
 string myText = "Werktags";
}
! ### DEBUG ###
WriteLine(myText);
! ###
wochenende.State(myVar);
Wenn ich es Teste ist das Ergebnis in Ordnung (Siehe Ausgabe):
Bild

Davon merkt die CCU aber nichts und schaltet somit das Licht nicht ein:
Bild

Wo ist mein Fehler?

66er
Beiträge: 2230
Registriert: 23.08.2015, 11:06

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von 66er » 11.08.2018, 15:35

Hallo Hussi, willkommen im Forum. :D
hussi hat geschrieben:
11.08.2018, 13:56
Hallo Leute,

ich bin neu und hier und mache gerade meine ersten Schritte in der Homematic Welt.
Jeder hat mal angefanngen. :wink:

Sei mir nicht böse und nimm das Folgende nicht persönlich:

Ich wundere mich in der letzten Zeit immer häufiger, warum Anfänger direkt mit Skripten anfangen. Daher unbedingt mein Rat, erstmal in den Basics und den eigenen Möglichkeiten der Homematic sicher zu werden und die (manchmal eigensinnige) Logik der Homematic-Programmierung verstehen.

Ein Fahranfänger steigt auch nicht gleich in einen Formel 1 Wagen. :wink:

Nun zu den ersten entdeckten Fehlern:

Programm Licht an: Bitte den leeren SONSTWENN-Zweig löschen, das mag die CCU gar nicht.

Programm Licht aus: Dein SONST-Zweig gehört ins DANN

Zu den Skripten kann ich leider nichts beitragen.

LG und viel Spass hier und mit Homematic

Stefan

manfredh
Beiträge: 1595
Registriert: 09.09.2012, 10:41

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von manfredh » 11.08.2018, 16:45

66er hat geschrieben:
11.08.2018, 15:35
Ich wundere mich in der letzten Zeit immer häufiger, warum Anfänger direkt mit Skripten anfangen.
Dito.

Vor allem, wenn man bedenkt, dass das Ziel auch problemlos mit ein paar Mausklicks per WebUi-Programm erreicht werden kann.

Stichwort: Zeitmodul.

Jede Woche am Samstag 00:01 Uhr, SV Wochenende auf Wahr.
Jede Woche am Sonntag 22:30, SV Wochenende auf Falsch.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

hussi
Beiträge: 6
Registriert: 10.07.2018, 20:10

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von hussi » 13.08.2018, 10:36

66er hat geschrieben:
11.08.2018, 15:35
Hallo Hussi, willkommen im Forum. :D

Sei mir nicht böse und nimm das Folgende nicht persönlich:

Ich wundere mich in der letzten Zeit immer häufiger, warum Anfänger direkt mit Skripten anfangen. Daher unbedingt mein Rat, erstmal in den Basics und den eigenen Möglichkeiten der Homematic sicher zu werden und die (manchmal eigensinnige) Logik der Homematic-Programmierung verstehen.
Das ist richtig. Das Skript schein ja aber nicht das Problem da es ja lt. Skripttest Ok ist. Ebenfalls sei angemerkt, dass GENAU diese Programme, Variablen und Skripte bei meinem Freund laufen. Allerdings unter einer älteren FW Version. Wir finden den Fehler allerdings nicht.
66er hat geschrieben:
11.08.2018, 15:35

Programm Licht an: Bitte den leeren SONSTWENN-Zweig löschen, das mag die CCU gar nicht.

Programm Licht aus: Dein SONST-Zweig gehört ins DANN
Werde ich korrigieren. Dankeschön und Grüße zurück!
manfredh hat geschrieben:
11.08.2018, 16:45

Vor allem, wenn man bedenkt, dass das Ziel auch problemlos mit ein paar Mausklicks per WebUi-Programm erreicht werden kann.

Stichwort: Zeitmodul.

Jede Woche am Samstag 00:01 Uhr, SV Wochenende auf Wahr.
Jede Woche am Sonntag 22:30, SV Wochenende auf Falsch.
Muss ich mir einmal anschauen bzw. Google mal etwas nutzen. Dankeschön.

manfredh
Beiträge: 1595
Registriert: 09.09.2012, 10:41

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von manfredh » 13.08.2018, 11:30

hussi hat geschrieben:
13.08.2018, 10:36

manfredh hat geschrieben:
11.08.2018, 16:45

Vor allem, wenn man bedenkt, dass das Ziel auch problemlos mit ein paar Mausklicks per WebUi-Programm erreicht werden kann.

Stichwort: Zeitmodul.

Jede Woche am Samstag 00:01 Uhr, SV Wochenende auf Wahr.
Jede Woche am Sonntag 22:30, SV Wochenende auf Falsch.
Muss ich mir einmal anschauen bzw. Google mal etwas nutzen. Dankeschön.
Ein paar Klicks in der Oberfläche der Programmerstellung und dir wird die Erleuchtung kommen. :mrgreen:
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Benutzeravatar
ecky78
Beiträge: 73
Registriert: 03.06.2016, 21:55

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von ecky78 » 13.08.2018, 12:04

Schreib doch mal in der letzten Skriptzeile

Code: Alles auswählen

wochenende.State(myVar);
das W groß.
Grüße,
Ecky

alchy
Beiträge: 7711
Registriert: 24.02.2011, 01:34

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von alchy » 13.08.2018, 19:33

Nö, dann erhält er eines SyntaxError.

Alchy

.................... Full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
ecky78
Beiträge: 73
Registriert: 03.06.2016, 21:55

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von ecky78 » 14.08.2018, 22:40

Oh, ääh .. stimmt, das Object ist ja doch klein geschrieben. :oops:
Grüße,
Ecky

alchy
Beiträge: 7711
Registriert: 24.02.2011, 01:34

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von alchy » 14.08.2018, 23:13

Sag ich ja, das ist nicht die Ursache. :wink:

Bevor ich hier wieder gekillt werde.Die Ursache wird wie üblich daran liegen, das
a:)
Tipps wie Kein Objekt darf heißen wie ein anderes!
seit Jahren gnadenlos von den Forenusern ignoriert werden.
Das liegt aber auch an Forumuser, die behaupten, alles egal, macht keine Probleme, hab ich ewig schon so
und
natürlich ist auch EQ3 daran Schuld, weil bei der Erstellung von Objekten in der KLickibunti nur halbherzig die Namensvergabe gecheckt wird. :twisted:

oder / und

b:)
immer noch allgemeine Zugriffe mittels

Code: Alles auswählen

dom.GetObject("Wochenende");
statt genauerer Selektierung

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Wochenende");
o.ä. verwendet werden. Dann würde der gleiche Name in dem Fall keine Rolle spielen.
Auch das ist schon vor Jahren durch BadenPower bekannt geworden und wird gnadenlos ignoriert.

Erklärung:
Das Programm Wochenende ruft ein Script auf, was dem Objekt Wochenende den Status wahr oder unwahr zuweisen will.
Kann funktionieren. In 50% der Fälle, hat das Programm die niedrigere ISE_ID und im Script wird dann versucht statt der gewollten Systemvariablen Wochenende dem Programm Wochenende den Status aufzudrücken - und damit hat der TE dann ein Problem.

Aber dem TE scheint sein Thread eh nicht mehr zu interessieren, das also nur als Erklärung für Stolperer.
Also Programm umbenennen um a zu beachten und Script testen, ob es dann funktioniert.

Alchy

.................... Full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

hussi
Beiträge: 6
Registriert: 10.07.2018, 20:10

Re: Systemvariable wird nicht von der CCU2 übernommen

Beitrag von hussi » 05.09.2018, 20:41

alchy hat geschrieben:
14.08.2018, 23:13
Aber dem TE scheint sein Thread eh nicht mehr zu interessieren, das also nur als Erklärung für Stolperer.
Also Programm umbenennen um a zu beachten und Script testen, ob es dann funktioniert.

Alchy
Nee nee. Das würde ich so nicht sagen. Nur ich hatte in den letzen Tagen/Wochen andere Dinge um die Ohren, als mich um die Schaltung zu kümmern, die nur am Wochenende läuft, an denen ich Momentan eh nicht zu Hause bin :)

Wie schon gesagt bin ich absoluter Neuling verstehe alles nicht so gut. Daher muss ich viel Zeit investieren. Genau diese Zeit fehlt mir aber gerade. Ich habe nun erst einmal alle Programme und Variablen die mit dieser Schaltung zusammen hängen gelöscht. Diese lege ich nun noch einmal an und sehe was passiert.

Du sagst:
alchy hat geschrieben:
14.08.2018, 23:13
Kein Objekt darf heißen wie ein anderes!
Aber bei mir heisst doch kein Objekt wie ein anderes, oder?

Ebenfalls sagst du:
alchy hat geschrieben:
14.08.2018, 23:13
immer noch allgemeine Zugriffe mittels

Code: Alles auswählen

dom.GetObject("Wochenende");
statt genauerer Selektierung

Code: Alles auswählen

dom.GetObject(ID_SYSTEM_VARIABLES).Get("Wochenende");
Somit sollte "mein" Script eher so heissen:

Code: Alles auswählen

object wochenende = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Wochenende");
integer d = system.Date("%w").ToInteger();

! ### DEBUG ###
WriteLine(d);
! ###
if( (d == 5) || (d == 6) || (d == 0) ){
 boolean myVar = true;
 string myText = "Wochenende";
} else {
 boolean myVar = false;
 string myText = "Werktags";
}
! ### DEBUG ###
WriteLine(myText);
! ###
wochenende.State(myVar);
Sehe ich das richtig?

Viele Grüße
Martin

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren“