Einfacher programmierbarer Wecker mit einem CUxD-Timer

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

Moderator: Co-Administratoren

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von michaelapp » 22.10.2018, 23:33

die Namen der Systemvariablen sind korrekt:
Variable.jpg
ich erhalte im Systemprotokoll die Meldung:
Bild_2.jpg
Bild_2.jpg (16.74 KiB) 1759 mal betrachtet
Ich habe es ja richtig verstanden, das "timer_w" dann "04:15:00" in "SYSTEM|TIMER_PRESET" schreibt, korrekt?
bild_3.jpg
bild_3.jpg (20.18 KiB) 1759 mal betrachtet

Code: Alles auswählen

! Wertelisteninhalte für Stunden und Minuten in Wecker-Timer schreiben +++++++++
var SYSvar_hh = dom.GetObject("Wecker_HH");
var wert_hh = SYSvar_hh.Value();
var Std = web.webGetValueFromList(SYSvar_hh.ValueList(), wert_hh);
var SYSvar_mm = dom.GetObject("Wecker_MM");
var wert_mm = SYSvar_mm.Value();
var Min = web.webGetValueFromList(SYSvar_mm.ValueList(), wert_mm);
string timer_w = Std # ":" # Min #":" # "00";
dom.GetObject("CUxD.CUX2800001:1.TIMER_SET").State(timer_w);
mein Timer sieht wie folgt aus:
timer.jpg

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

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von Xel66 » 23.10.2018, 07:12

michaelapp hat geschrieben:
22.10.2018, 23:33
Ich habe es ja richtig verstanden, das "timer_w" dann "04:15:00" in "SYSTEM|TIMER_PRESET" schreibt, korrekt?
Nö, was da drin steht ist völlig Wurst. Diese Abfrage muss ein FALSCH ergeben, damit das Programm funktioniert und das Schript im SONST abgearbeitet wird. Die Systemvariablen selbst musst Du schon ändern und nicht deren Bedingungsprüfung. Darum ist ja auch zwei Mal "Wecker_MM" enthalten, damit die Prüfung nie ein WAHR ergeben kann, denn die selbe Systemvariable kann nie zwei unterschiedliche Zustände gleichzeitig haben. Im DANN steht nur was drin, weil ich nicht weiß, ob die CCU leere Aktionen mag. Leere SONST WENNs mag sie jedenfalls nicht. Der STOP-Befehl tut nicht weh.

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

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von michaelapp » 23.10.2018, 09:21

Hallo Xel66,

ich habe jetzt mit einem Programm die Variable Wecker_HH und Wecker_MM gefüllt und mit einem Test Programm einfach die beiden Werte in den Timer geschoben:
Clipboard-1.jpg

Code: Alles auswählen

! Wertelisteninhalte für Stunden und Minuten in Wecker-Timer schreiben +++++++++
var SYSvar_hh = dom.GetObject("Wecker_HH");
var wert_hh = SYSvar_hh.Value();
var Std = web.webGetValueFromList(SYSvar_hh.ValueList(), wert_hh);
var SYSvar_mm = dom.GetObject("Wecker_MM");
var wert_mm = SYSvar_mm.Value();
var Min = web.webGetValueFromList(SYSvar_mm.ValueList(), wert_mm);
string timer_w = Std # ":" # Min #":" # "00";
dom.GetObject("CUxD.CUX2800001:1.TIMER_SET").State(timer_w);
Somit bin ich sicher das das Skript und die Variablen funktionieren :-)

Wenn ich Dein Programm inkl. Skript verwende:
Clipboard-2.jpg
erhalte ich folgenden Fehler und es wird nichts in den Timer geschrieben:
Clipboard-3.jpg
der alte Wert wird aber gelöscht:
Clipboard-4.jpg
Clipboard-4.jpg (17.48 KiB) 1716 mal betrachtet
Ein wenig komisch.

Gruß
Michael

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

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von Xel66 » 23.10.2018, 11:05

michaelapp hat geschrieben:
23.10.2018, 09:21
Ein wenig komisch.
Komisch, ja. Aber das Programm ist immer noch nicht wie vorgestellt, also hast Du was anderes laufen und ob das Script dann auch identisch ist, kann ich nicht beurteilen. Bei mir läuft es exakt mit diesem abgebildeten Script. Nur die Seriennummer des beschriebenen Timers ist eine andere. Aber das dürfte nicht der Unterschied sein. Bei mir ist es "dom.GetObject("CUxD.CUX2800003:6.TIMER_SET").State(timer_w);". Unabhängig scheint das Programm selbst ja zu laufen, nur das Script kann den Timer nicht beschreiben. Wird wohl ein unsichtbarer Tippfehler oder ein c&p-Fehler sein. Was wird angezeigt, wenn Du die letzte Zeile des Scripts mit "WriteLine(timer_w);" (ohne Anführungszeichen) ersetzt?

Vielleicht hilft die Standardvorgehensweise. Programm löschen und komplett neu anlegen und Script nicht per Word oder andere verändernden Windows-Tools einfügen.

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

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von michaelapp » 23.10.2018, 11:25

Wenn ich das Skript ändere und teste, erhalte ich genau die Werte der beiden Variablen:
Clipboard-1.jpg
hier noch mal mein CUxD
Clipboard-1.jpg
Sehr komisch ...

Gruß
Michael

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

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von Xel66 » 23.10.2018, 12:51

Ja, komisch, zumal TIMER_WECKER manchmal groß und manchmal anders geschrieben ist. Das Programm ist auch nicht so wie in der Anleitung. Daher nochmals meine Standardempfehlung. Programm löschen und neu machen. Und ggf. einen anderen Timerkanal benutzen.

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

michaelapp
Beiträge: 280
Registriert: 16.05.2018, 22:54
Hat sich bedankt: 6 Mal
Danksagung erhalten: 5 Mal

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von michaelapp » 23.10.2018, 20:10

Hallo Xel66,

So ich habe das Programm mal komplett neu angelegt und getestet.

Am Anfang hat er mir die Zeit in den Kanal 6 geschrieben aber immer nur wenn die neue Zeit früher war als die vorhandene. Jetzt schreibt er wieder nichts mehr.

Gruß
Michael

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

Re: Einfacher programmierbarer Wecker mit einem CUxD-Timer

Beitrag von Xel66 » 23.10.2018, 20:29

Also funktioniert sowohl Programm und Script grundsätzlich auch auf Deinem System. Die Ursache für die Nichtbeschreibbarkeit des Timers muss folglich in Deinem System liegen. Bei dem Support bin ich allerdings raus. Da stecke ich zuwenig in den Eingeweiden des Systems. Ich schreibe allerdings in dem Weckerprogramm keine neue Zeiten zu Laufzeiten des Timers rein. Vielleicht musst Du diesen stoppen, die Zeit reinschreiben bzw. die Systemvariablen ändern und dann wieder die Wecker einschalten. Vielleicht hilft das ja. Wenn ja, sollte man (ich) für einen Automatismus hierfür im Script sorgen (also vor dem Schreiben der Uhrzeit den Timer stoppen). Aber erst mal klären, ob es daran liegt.

Allerdings konfiguriere auch in einem anderen Programm andere Timer zur Laufzeit, z.B. in meiner eigenen Sonnenstandsuhrzeitvorziehlösung. Hierbei lese ich nachts die vom System zur Verfügung gestellten Sonnenauf- und -untergangszeiten aus, schreibe diese in Timer und subtrahiere im Nachgang einfach die Anzahl der Sekunden, die ich diese Zeiten vorziehen will. Funktioniert seit ca. einem Jahr problemlos und ist ein Sechszeiler. Und das alles, während der Timer läuft, weil er automatischen Repeat hat.

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!“