Hauptmenü

on-for-timer Restlaufzeit

Begonnen von Spartacus, 08 Dezember 2014, 22:24:26

Vorheriges Thema - Nächstes Thema

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

KernSani

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

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

franky08

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

fiedel

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
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Spartacus

Hallo zusammen,
ganz lieben Dank für die vielen Tipps. Ich werde das heute Abend mal ausprobieren.

Gruß,
Spartacus
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R

KernSani

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:

  • If-Bedingung, um zu vermeiden, dass nach null noch endlos weitergezählt wird.
  • Bei "Set" kann man keinen Perl-Code verwenden, daher das etwas umständliche Konstrukt, um einen Set Befehl zusammen zu basteln, der dann mittels fhem(..) getriggert wird.

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

KernSani

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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Spartacus

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
Fhem-System: 1 x raspberry PI Typ B, 1 x enOcean PI Typ B | Enocean: PTM210, FMS61NP, FAM14, 2 x FSR14-4x, FTS14-EM | LaCrosse: 2 x TX29D über Jeelink V3 | 1-Wire: 2 x DS18B20 über DS9490R