Cux Timer
Moderator: Co-Administratoren
Cux Timer
Nabend, ist es möglich einen CuxTimer zu erstellen der Zb von 120 runterzählt,bei einen bestimmten Ereigniss pausiert und dann wieder weiterläuft ?
Sperre und Stop als Auswahlmöglichkeiten kommen da wohl nicht in Frage .....
danke
Sperre und Stop als Auswahlmöglichkeiten kommen da wohl nicht in Frage .....
danke
Re: Cux Timer
Nein! Eine Pausenfunktion gibt es nicht.
Per TIMER-GET könnte man aber die Restlaufzeit auslesen und dann bei Bedarf mit diesem Wert den Timer neu setzen.
Das funktioniert aber nur per Befehlszeile. Dabei müsste einer der Skript-Spezis helfen.
Per TIMER-GET könnte man aber die Restlaufzeit auslesen und dann bei Bedarf mit diesem Wert den Timer neu setzen.
Das funktioniert aber nur per Befehlszeile. Dabei müsste einer der Skript-Spezis helfen.
Viele Grüße!
Jörg
Jörg
-
- Beiträge: 1184
- Registriert: 09.01.2016, 17:42
- Wohnort: Sauerland
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Cux Timer
ich habe es nicht getestet aber es sollte so gehen.
Auslesen:
Setzen:
Das Problem sind zwei Kleinigkeiten. Du musst einen Trigger finden. Z. B. durch öffnen der Tür wird die erste Script Zeile ausgeführt.
Somit ist in der Variable tmpa die Restzeit vom Timer.
Der nächste Trigger wenn Tür geschlossen setzt den Timer wieder mit tmpa. Wichtig ist dabei natürlich das die Variable nicht durch ein anderes Programm überschrieben wurde.
Deshalb würde ich eine Systemvariable anlegen und dort Zwischenspeichern.
zum setzen dann:
Evtl beim setzen vorher noch per if abfragen ob die Systemvariable überhaupt gefüllt ist.
Wichtig nach dem auslesen ist natürlich den Timer zu stopen deshalb ein TIMER_SET mit 0.
Ich verwende das bei mir aber nicht. Ich verwende so etwas ähnliches. Ich lasse mich über sehr hohe oder sehr niedrige Temperaturen in den Zimmern per Push warnen. Am Anfang kam dann öfter die Pushnachrichten wenn die Temperatur um den Schwellenwert war.
Deshalb setze ich nun einen Timer bei der ersten Temperaturwarnung mit 10800 Sekunden (= 3 Stunden).
Vor dem Versenden frage ich dann ab ob der Timer gerade nicht läuft. Wenn er nicht läuft setze ich den Timer und verschicke die Pushnachricht:
Auslesen:
Code: Alles auswählen
var tmpa = dom.GetObject("CUxD.CUX2800001:10.TIMER_GET").State();
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
Code: Alles auswählen
var tmpa;
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
Somit ist in der Variable tmpa die Restzeit vom Timer.
Der nächste Trigger wenn Tür geschlossen setzt den Timer wieder mit tmpa. Wichtig ist dabei natürlich das die Variable nicht durch ein anderes Programm überschrieben wurde.
Deshalb würde ich eine Systemvariable anlegen und dort Zwischenspeichern.
Code: Alles auswählen
var tmpa = dom.GetObject("CUxD.CUX2800001:10.TIMER_GET").State();
dom.GetObject("CCU SV Systemvariable").State(tmpa);
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(0);
Code: Alles auswählen
var tmpa = dom.GetObject("CCU SV Systemvariable").Value();
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
Wichtig nach dem auslesen ist natürlich den Timer zu stopen deshalb ein TIMER_SET mit 0.
Ich verwende das bei mir aber nicht. Ich verwende so etwas ähnliches. Ich lasse mich über sehr hohe oder sehr niedrige Temperaturen in den Zimmern per Push warnen. Am Anfang kam dann öfter die Pushnachrichten wenn die Temperatur um den Schwellenwert war.
Deshalb setze ich nun einen Timer bei der ersten Temperaturwarnung mit 10800 Sekunden (= 3 Stunden).
Vor dem Versenden frage ich dann ab ob der Timer gerade nicht läuft. Wenn er nicht läuft setze ich den Timer und verschicke die Pushnachricht:
Code: Alles auswählen
! Angabe in Minuten wie lange keine erneute Temperaturwarnung für den Raum kommen soll
integer tmpA = dom.GetObject("SV T Temperaturwarnung").Value()*60;
if(!dom.GetObject("CUxD.CUX2800001:10.WORKING").State()) {
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpA);
....
- uwe111
- Beiträge: 4820
- Registriert: 26.02.2011, 22:22
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 245 Mal
- Kontaktdaten:
Re: Cux Timer
Ich habe Deinen Beitrag editiert, da das Auslesen vom aktuellen TIMER_GET-Datenpunkt mittels .State() und nicht .Value() erfolgen muss.
Viele Grüße
Uwe
Viele Grüße
Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN Download: CUxD 2.11, SSH KeyDir
SPENDEN Download: CUxD 2.11, SSH KeyDir
Re: Cux Timer
Das hört sich ja mal nach einer Lösung an , sofern ich das hier umsetzten kann
Hintergrund ist der das meine Kids zuviel im www surfen, da ich keine festen Zeiten setzten möchte (was ja auch intern im Router geht) dachte ich mir ich mach dies über einen Timer ala Cux etc. Jetzt extra einen Hotspot einrichten und Splash page wäre ja blödsinn ...
Ich werde mir die Anletung mal morgen genauer anschauen und Testen
ich gebe bescheid
Hintergrund ist der das meine Kids zuviel im www surfen, da ich keine festen Zeiten setzten möchte (was ja auch intern im Router geht) dachte ich mir ich mach dies über einen Timer ala Cux etc. Jetzt extra einen Hotspot einrichten und Splash page wäre ja blödsinn ...
Ich werde mir die Anletung mal morgen genauer anschauen und Testen
ich gebe bescheid
-
- Beiträge: 1184
- Registriert: 09.01.2016, 17:42
- Wohnort: Sauerland
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 1 Mal
Re: Cux Timer
Sofern die Kids über einen PC der an einer Steckdose von Homematic hängt sollte es gehen...
Wenn die ipads oder so was nutzen fehlt Dir der Trigger. Ich würde das über die Kindersicherung vom Router lösen, wenn ich sowas wirklich machen wollte. Was ich nicht machen würde
Wenn die ipads oder so was nutzen fehlt Dir der Trigger. Ich würde das über die Kindersicherung vom Router lösen, wenn ich sowas wirklich machen wollte. Was ich nicht machen würde
Re: Cux Timer
Nein da sind keine Steckdosen.Das möchte ich ja via Ping lösen, ich habe einen dd-wrt und tomato router laufen .. leider kann ich bei beiden nur den Zeitraum einstellen ... keinen Timer ....(oder via script , was ich noch nicht gefunden habe)
-
- Beiträge: 10658
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 320 Mal
- Danksagung erhalten: 501 Mal
Re: Cux Timer
Am WE hat mich der CUxD-Timer auch etwas geärgert. Hatte nämlich gedacht, dass TIMER_STOP den Timer anhält, ohne ihn auf Null zu setzen. De facto wird der Timer zwar angehalten, aber auch auf Null gesetzt. In Verbindung mit "TIMER_GET kleiner oder gleich 0 bei Aktualisierung" führt das dann zu einem ungewollten Auslösen. Nun könnte man zwar TIMER_EVENT als Trigger abfragen, da ja bei TIMER_STOP kein Event ausgelöst wird, aber vor der Anwendung von TIMER_EVENT wird ja explizit gewarnt.
Im Moment löse ich mein Problem durch die Verwendung der Timer-Sperr- und Entsperrfunktion. Funktioniert auch; aber ist das auch so gewollt?
Und noch was. Ich fände es toll, wenn man direkt per ioBroker einen Timer-Datenpunkt auslesen könnte, der den aktuellen Timer-Wert enthält. In der CUxD-Übersicht wird ja der aktuelle Timer-Wert angezeigt, nur leider lässt er sich nicht per ioBroker auslesen. Derzeit behelfe ich mir dabei, einfach im ioBroker per Javascript einen eigenen Countdown herunterzuzählen, der von TIMER_SET getriggert wird. Nur leider laufen die beiden Timer nicht immer sehr synchron. Oder gibt es da doch noch eine andere Möglichkeit, den aktuellen Timer-Wert kontinuierlich auszulesen? Ein sekündliches Aufrufen von
erscheint mir irgendwie suboptimal.
Gruß,
Thorsten
Im Moment löse ich mein Problem durch die Verwendung der Timer-Sperr- und Entsperrfunktion. Funktioniert auch; aber ist das auch so gewollt?
Und noch was. Ich fände es toll, wenn man direkt per ioBroker einen Timer-Datenpunkt auslesen könnte, der den aktuellen Timer-Wert enthält. In der CUxD-Übersicht wird ja der aktuelle Timer-Wert angezeigt, nur leider lässt er sich nicht per ioBroker auslesen. Derzeit behelfe ich mir dabei, einfach im ioBroker per Javascript einen eigenen Countdown herunterzuzählen, der von TIMER_SET getriggert wird. Nur leider laufen die beiden Timer nicht immer sehr synchron. Oder gibt es da doch noch eine andere Möglichkeit, den aktuellen Timer-Wert kontinuierlich auszulesen? Ein sekündliches Aufrufen von
Code: Alles auswählen
var Time = dom.GetObject("CUxD.CUX2800001:1.TIMER_GET").State();
Gruß,
Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
-
- Beiträge: 14149
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 583 Mal
- Danksagung erhalten: 1497 Mal
Re: Cux Timer
Wäre vielleicht einen Featurerequest an Uwe111 wert. Vorschlag TIMER_PAUSE. Damit könnte man den aktuellen Stand einfrieren und durch Starten wieder weiterlaufen lassen. Habe zwar keinen Anwendungsfall dafür, aber würde das Problem umgehen. Ich benutze zwar auch TIMER_STOP an verschiedensten Stellen und löse meine Aktionen mit TIMER_GET aus, aber ich bin bisher noch nicht darüber gestolpert. Kann natürlich sein, dass meine sonstigen Randbedingungen zu dem Zeitpunkt anders sind... Ich habe gerade mal nachgeschaut. Ich habe das vermutlich intuitiv anders gemacht. Bei manchen Aktionen stetze ich den Timer verzögert auf STOP und bei anderen als erstes. Je nachdem, ob der Timer mir in die Suppe spucken würde.dtp hat geschrieben:...erscheint mir irgendwie suboptimal.
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
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