mediola

Cux Timer

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

Werbung


Cux Timer

Beitragvon 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:
ftpgonzo
 
Beiträge: 148
Registriert: 16.12.2014, 21:03

Re: Cux Timer

Beitragvon 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.
Benutzeravatar
JRiemann
 
Beiträge: 1805
Registriert: 12.11.2015, 22:05
Wohnort: Aurich

Re: Cux Timer

Beitragvon ftpgonzo » 23.04.2017, 21:58

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

danke
ftpgonzo
 
Beiträge: 148
Registriert: 16.12.2014, 21:03

Re: Cux Timer

Beitragvon 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);
....
Cash
 
Beiträge: 626
Registriert: 09.01.2016, 18:42
Wohnort: Sauerland

Re: Cux Timer

Beitragvon 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 1.10a, RFD-Monitor, Vellemann K8055, SSH KeyDir
211 Kanäle in 118 Geräten und 101 CUxD-Kanäle in 47 CUxD-Geräten:
Benutzeravatar
uwe111
 
Beiträge: 3139
Registriert: 26.02.2011, 23:22

Re: Cux Timer

Beitragvon 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 :)
ftpgonzo
 
Beiträge: 148
Registriert: 16.12.2014, 21:03

Re: Cux Timer

Beitragvon 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
Cash
 
Beiträge: 626
Registriert: 09.01.2016, 18:42
Wohnort: Sauerland

Re: Cux Timer

Beitragvon 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)
ftpgonzo
 
Beiträge: 148
Registriert: 16.12.2014, 21:03

Re: Cux Timer

Beitragvon 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
dtp
 
Beiträge: 3320
Registriert: 21.09.2012, 08:09
Wohnort: Stuttgart

Re: Cux Timer

Beitragvon 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
---------------------------------------------------------------------------------
231 Kanäle in 83 Geräten und 100 CUxD-Kanäle in 19 CUxD-Geräten:
---------------------------------------------------------------------------------
Xel66
 
Beiträge: 2550
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg

Nächste

Zurück zu CUxD

Wer ist online?

Mitglieder in diesem Forum: Yahoo [Bot] und 4 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.