Kurzzeit Timer mit WebCmd

Begonnen von hanske, 12 November 2014, 09:44:11

Vorheriges Thema - Nächstes Thema

hanske

Hallo,

ich wollte mir einen kleinen Kurzeittimer für das Fhem WebGui bauen, mit dem man z.B. eine Lampe für ein paar Minuten oder Stunden anschalten kann.
Das WebGui sollte dann dann drei Aktionen (An, Aus, Timer) und eine möglichst komfortabel einstellbare Zeit haben.
Ich habe es zunächst nur für Minuten versucht, bin aber auch schon daran gescheitert.
Mein letzter Stand (der auch nicht läuft) sieht so aus:

Dummy fürs WebGui:

define dm_timerplug dummy
attr dm_timerplug setList minutes:slider,0,5,180
attr dm_timerplug webCmd on:off:timer:minutes

und das enstprechende Notify:
define n_timerlamp notify dm_timerplug:minutes* {my $seconds=$EVTPART1*60;; Log(3,"Timer: " . $seconds);; fhem ("set sw_plugin on;; sleep $seconds;; set sw_plugin off")}


Das Notify wird beim schieben am Slider nicht ausgelöst. Wahrscheinlich stimmt die RegEx nicht.
Mein vorheriger Ansatz war noch etwas umfangreicher, aber selbst der einfache hier funktioniert nicht.
Ich hatte vorher gedacht ich könnte mehrere Slider (für Stunden und Minuten) als UserReading definieren und dann auf den Status "timer" triggern und die Readings in Sekunden umrechnen, aber das ging auch alles nicht.

Gibt es dafür nicht eine Standard Lösung?
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

Puschel74

Hallo,

was passiert wenn du es so schreibst:
dm_timerplug:minutes.*
Den . vor dem * bitte beachten.
Ist nur ne Vermutung und kann auch falsch sein.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

hanske

Stimmt, muss natürlich .* heißen.
Da hatte ich wohl nur an Wildcards und nicht an RegEx gedacht.
So läuft es nun auch, obwohl ich dachte, dass ich es so schon mal probiert hatte.

Eigentlich suche ich aber nach einer besseren Lösung (z.B. mit Stunden und Minuten als (User)Reading)
Aber danke für die Hilfe.
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

Puschel74

Hallo,

für Stunden und Minuten kannst du setList state:time versuchen mit einem webCmd state.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

hanske

So etwas hatte ich gesucht.
Damit komme ich weiter.  :)

Danke
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Ich habe es jetzt so gelöst und es funktioniert, werde ich aber später nochmal erweitern.


define dm_timerplug dummy
attr dm_timerplug setList state:time
attr dm_timerplug webCmd state
define n_timerlamp notify dm_timerplug:..:.. set sw_plugin on;; delete at_lampTimer;; define at_lampTimer at +$EVENT set sw_plugin off;;
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Hallo,

ich habe mir jetzt einen Timer gebaut, der sowohl einen Kurzzeittimer (Coutdown), als auch eine tägliche Ein- und Ausschaltzeit realisiert.
Es funktioniert gut, aber erscheint mir etwas umständlich insbesondere
wenn ich jetzt noch Wochentage oder eine zweite Ein-/Ausschaltzeit übers GUI einstellen will.
Gibt es da einen einfacheren Ansatz?

Hier die dummies fürs GUI
# Timer 1
define dm_timer1_state dummy
attr dm_timer1_state alias timer1_state
attr dm_timer1_state room Timer
attr dm_timer1_state sortby tm03

define dm_timer1_mode dummy
attr dm_timer1_mode alias timer1_mode
attr dm_timer1_mode room Timer
attr dm_timer1_mode setList state:on,off,timer,countdown
attr dm_timer1_mode sortby tm04
attr dm_timer1_mode webCmd state

define dm_timer1_cd dummy
attr dm_timer1_cd alias timer1_countdown
attr dm_timer1_cd room Timer
attr dm_timer1_cd setList state:time
attr dm_timer1_cd sortby tm05
attr dm_timer1_cd webCmd state

define dm_timer1_ontime dummy
attr dm_timer1_ontime alias timer1_on
attr dm_timer1_ontime room Timer
attr dm_timer1_ontime setList state:time
attr dm_timer1_ontime sortby tm06
attr dm_timer1_ontime webCmd state

define dm_timer1_offtime dummy
attr dm_timer1_offtime alias timer1_off
attr dm_timer1_offtime room Timer
attr dm_timer1_offtime setList state:time
attr dm_timer1_offtime sortby tm07
attr dm_timer1_offtime webCmd state


... und dann noch die notifies
define n_timer1_cd notify dm_timer1_mode:countdown delete at_timer1_off;; delete at_timer1_on;; set dm_timer1_state on;; {fhem("define at_timer1_off at +".Value("dm_timer1_cd")." set dm_timer1_state off")}
define n_timer1_timer notify dm_timer1_mode:timer delete at_timer1_off;; delete at_timer1_on;; {fhem("define at_timer1_on at *".Value("dm_timer1_ontime")." set dm_timer1_state on")};;{fhem("define at_timer1_off at *".Value("dm_timer1_offtime")." set dm_timer1_state off")}
define n_timer_state notify dm_timer1_mode:o.* delete at_timer1_off;; delete at_timer1_on;; set dm_timer1_state $EVENT
define n_timer_connect notify dm_timer1_state set lampxy $EVENT
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Habe die Lösung jetzt in der Commandref gefunden.
Das Schlüsselwort heißt:
WeekdayTimer

Dachte ich mir doch, dass es so was schon geben muss.
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte