FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Spartacus am 08 Dezember 2014, 22:24:26

Titel: on-for-timer Restlaufzeit
Beitrag von: Spartacus am 08 Dezember 2014, 22:24:26
Hallo,
mit
set aktor on-for-timer 3600
schaltet man einen Aktor für 1h  ein. Danach schaltet das Gerät automatisch ab.
fhem protokolliert Ausschalt- und Einschaltzeit im Log.
Ich würde gerne die Restlaufzeit als Countdown in fhem sichtbar machen, oder alternativ die Ausschaltzeit beim Einschalten setzten.  M.E. wird bei o.a. Befehl die Ausschaltzeit vom Device selber verwaltet und fhem kennt diese nicht. Wie würde man ein solche Anforderung am Besten realisieren?
Eine Möglichkeit wäre so etwas. Dann könnte man mit readingsGroup die Ausschaltzeit anzeigen lassen. Ist aber weit weg von einem Countdown...

define AktorOn at *22:15 
# alternativ kann das Einschalten über einen Taster realisiert werden...
set EnO.switch.FFE88604 on;
define AktorOff at +00:02:00 set EnO.switch.FFE88604 off

oder gibt es elegantere Lösungen?
Spartacus
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: KernSani am 08 Dezember 2014, 23:24:38
Hi Spartacus,

es gibt Geräte, die on-for-timer selbst verwalten, andere werden durch FHEM verwaltet (meine Funksteckdosen z.B.). FHEM erzeugt dann einfach ein "at +01:00:00 set <device> off".
Eine spontane Idee für den countdown wäre, einen Dummy zu erzeugen, der beim einschalten den Wert 3600 bekommt (oder 01:00:00) und dann mittels jede Sekunde um eine Sekunde reduziert wird, also etwa (Pseudocode):
define myCountdown at +*{3600} 00:00:01 set <myDummy-1> 

Grüße,

Oli

Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: franky08 am 08 Dezember 2014, 23:50:38
Hallo, vor dem Problem stand ich vor eine Jahr auch, ich wollte mir die Restlaufzeit eines Timers vom Badlicht anzeigen und auswerten lassen um über Text2Spech ansagen zu lassen, dass das Licht gleich ausgeht. Gelöst habe ich das dann über einen zweiten Timer (dummy) der mit dem Licht startet und 5sec vor Ablauf des ersten Timers die Sprachausgabe macht. Eine direkten Weg die verbleibende Zeit anzuzeigen habe ich auch nicht gefunden. Denke das es da auch nichts gibt, was dir einen echten "coundown" anzeigt, habe da auch keine andere Lösung.

VG
Frank
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: fiedel am 09 Dezember 2014, 08:00:16
Hi,

es gibt noch das hier:

Zitatfollow-on-for-timer
schedule a "setstate off;trigger off" for the time specified as argument to the on-for-timer command. Or the same with on, if the command is off-for-timer.

Das ist eine Verwaltung der Timerzeit in FHEM, aber leider auch kein Countdown.

Gruß

Frank
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: Spartacus am 09 Dezember 2014, 11:48:37
Hallo zusammen,
ganz lieben Dank für die vielen Tipps. Ich werde das heute Abend mal ausprobieren.

Gruß,
Spartacus
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: Spartacus am 09 Dezember 2014, 17:59:03
Zitat von: KernSani am 08 Dezember 2014, 23:24:38
Hi Spartacus,

es gibt Geräte, die on-for-timer selbst verwalten, andere werden durch FHEM verwaltet (meine Funksteckdosen z.B.). FHEM erzeugt dann einfach ein "at +01:00:00 set <device> off".
Eine spontane Idee für den countdown wäre, einen Dummy zu erzeugen, der beim einschalten den Wert 3600 bekommt (oder 01:00:00) und dann mittels jede Sekunde um eine Sekunde reduziert wird, also etwa (Pseudocode):
define myCountdown at +*{3600} 00:00:01 set <myDummy-1> 

Grüße,

Oli

Hallo,
mit dem reduzieren des Dummy-wertes um 1 kriege ich das nicht hin! die Set <myDummy-1>-Logik ist mir nicht klar! Wie soll das gehen?

Christian
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: KernSani am 09 Dezember 2014, 23:15:55
Hi Christian,

sorry, da habe ich wohl etwas zu sehr vereinfacht. Und ausserdem (bin ja auch noch Anfänger) ging's auch nicht ganz so einfach, wie ich mir das gedacht habe. So funktionierts (kann man sicher auch noch eleganter umsetzen):


define myCountdownDummy dummy
attr myCountdownDummy room Cnt
define myCountdown at +*{3600}00:00:01 {if(ReadingsVal("myCountdownDummy",'state',0)>0) {fhem("set myCountdownDummy ".(ReadingsVal("myCountdownDummy",'state',0)-1))}}


Kurze Erläuterung:

Grüße,

Oli
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: KernSani am 10 Dezember 2014, 00:22:47
weiterer Anfängerfehler... +*{3600} funktioniert nur genau einmal (wie die Doku schon sagt). Neue Variante sieht so aus:

define myCountdown at +*00:00:01 {if(ReadingsVal("myCountdownDummy",'state',0)>0) {fhem("set myCountdownDummy ".(ReadingsVal("myCountdownDummy",'state',0)-1))} else {fhem("attr myCountdown disable 1")}}

Damit wird das "at" endlos ausgeführt, aber wenn der Dummy 0 erreicht hat disabled. Lostreten kannst du den Countdown dann (in diesem Fall für 10 Sekunden) mit

set myCountdownDummy 10; attr myCountdown disable 0


So... Jetzt habe ich einen Countdown und was mache ich damit?

Grüße,

Oli
Titel: Antw:on-for-timer Restlaufzeit
Beitrag von: Spartacus am 10 Dezember 2014, 19:24:27
Hallo Oli,
ja, Dein Countdown funktioniert!  Muss jetzt erstmal überlegen, wie ich das jetzt für meine Anwendung nutzbar mache.....und ob das wirklich Sinn macht!

Danke für Deine tolle Arbeit,
ich werde berichten, was ich daraus gemacht habe...

Christian