Cux Timer

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

ftpgonzo
Beiträge: 199
Registriert: 16.12.2014, 20:03

Cux Timer

Beitrag von ftpgonzo » 23.04.2017, 21:42

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 :mrgreen:

Benutzeravatar
JRiemann
Beiträge: 3903
Registriert: 12.11.2015, 21:05
Wohnort: Aurich
Danksagung erhalten: 3 Mal

Re: Cux Timer

Beitrag von JRiemann » 23.04.2017, 21:46

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.
Viele Grüße!
Jörg

ftpgonzo
Beiträge: 199
Registriert: 16.12.2014, 20:03

Re: Cux Timer

Beitrag von ftpgonzo » 23.04.2017, 21:58

dachte ich mir schon :( mal gucken ob es da ne möglichkeit gibt .... :D

danke

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Cux Timer

Beitrag von Cash » 24.04.2017, 11:07

ich habe es nicht getestet aber es sollte so gehen.

Auslesen:

Code: Alles auswählen

var tmpa = dom.GetObject("CUxD.CUX2800001:10.TIMER_GET").State();
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
Setzen:

Code: Alles auswählen

var tmpa;
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
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.

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);
zum setzen dann:

Code: Alles auswählen

var tmpa = dom.GetObject("CCU SV Systemvariable").Value();
dom.GetObject("CUxD.CUX2800001:10.TIMER_SET").State(tmpa);
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:

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);
....

Benutzeravatar
uwe111
Beiträge: 4820
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 245 Mal
Kontaktdaten:

Re: Cux Timer

Beitrag von uwe111 » 24.04.2017, 16:37

Ich habe Deinen Beitrag editiert, da das Auslesen vom aktuellen TIMER_GET-Datenpunkt mittels .State() und nicht .Value() erfolgen muss.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

ftpgonzo
Beiträge: 199
Registriert: 16.12.2014, 20:03

Re: Cux Timer

Beitrag von ftpgonzo » 24.04.2017, 20:29

Das hört sich ja mal nach einer Lösung an , sofern ich das hier umsetzten kann :lol:

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 :)

Cash
Beiträge: 1184
Registriert: 09.01.2016, 17:42
Wohnort: Sauerland
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Cux Timer

Beitrag von Cash » 24.04.2017, 21:01

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

ftpgonzo
Beiträge: 199
Registriert: 16.12.2014, 20:03

Re: Cux Timer

Beitrag von ftpgonzo » 24.04.2017, 21:47

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)

dtp
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

Beitrag von dtp » 15.05.2017, 07:59

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

Code: Alles auswählen

var Time = dom.GetObject("CUxD.CUX2800001:1.TIMER_GET").State();
erscheint mir irgendwie suboptimal.

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.

Xel66
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

Beitrag von Xel66 » 15.05.2017, 08:58

dtp hat geschrieben:...erscheint mir irgendwie suboptimal.
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.

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 „CUxD“