Hallo Leute,
ich habe mal eine Frage an euch:
Ich habe für mein el. Dachluke einen Homematic-Rolladenaktor verbaut und in FHEM eingebunden.
Kann mir jemand sagen, wie ich folgendes Ziel erreichen kann:
Sobald das Dachfenster am Schalter direkt geöffnet wird (Zustand ist dann größer =0), soll das Fenster nach 30 Minuten automatisch wieder schließen.
Status 0 = geschlossen / Status 100 = geöffnet.
Ich bin bei meinen Versuchen mit timern leider gescheitert.
Würde mich extrem über euer Feedback freuen.
Grüße Tom
Ein einfaches Modul dafür ist DOIF, ist sehr anfänger freundlich.
Siehe hier:
http://commandref.fhem.de/commandref_DE.html#DOIF
Hat allerdings sehr viele Möglichkeiten und könnte dich am Anfang etwas verwirren.
define notifyDachfenster notify dachfensterdevice:pct:.* { if( $EVTPART1 > 0) { fhem("sleep 1800; set $DEVICE pct 0") }
Könnte so gehen
Zitat von: CoolTux am 06 Dezember 2017, 12:41:20
Könnte so gehen
Oder z.B. einen watchdog, der auf öffnen triggert und nach 30 Minuten schliesst, wenn nicht in der Zeit geschlossen.
Wir kennen ja die ganzen bisherigen Versuche nicht!? :-\
Das ist sogar noch viel viel besser. Ich vergesse immer wieder den Watchdog. Dabei ist der echt gut
Hey Leute,
wow das ging aber schnell. Danke für eure Ansätze.
Werde mir das DoIf aufjeden Fall anschauen.
Hat bezüglich dem Watchdog jemand auf die Schnelle eine Idee, wie das realisierbar wäre?
Die Wiki-Einträge zum Watchdog erschlägt mich etwas :-)))
Grüße
presenceNadin.presence:.present 00:05:35 presenceNadin.presence:.absent {systemCommand("wd_GTagBatterieNadin","gtagbattery",5)} ; trigger wd_GTagBatterieNadin .
Achtung der Punkt am Ende ist wichtig, nicht übersehen!
wow, danke für die schnelle Antwort. Jetzt sollte ich es nur noch kapieren :-)
"wd_GTagBatterieNadin" wäre dann durch den Namen meines Gerätes zu ersetzen, oder?
Sorry mein Fehler. So kannst Du natürlich nichts erkennen
Internals:
CFGFN
CMD {systemCommand("wd_GTagBatterieNadin","gtagbattery",5)} ; trigger wd_GTagBatterieNadin .
DEF presenceNadin.presence:.present 00:05:35 presenceNadin.presence:.absent {systemCommand("wd_GTagBatterieNadin","gtagbattery",5)} ; trigger wd_GTagBatterieNadin .
NAME wd_GTagBatterieNadin
NR 473
NTFY_ORDER 50-wd_GTagBatterieNadin
RE1 presenceNadin.presence:.present
RE2 presenceNadin.presence:.absent
STATE defined
TO 335
TYPE watchdog
READINGS:
2017-12-06 10:34:15 Activated activated
2017-12-06 10:39:50 Triggered triggered
helper:
Attributes:
So sieht man was was ist. Im Grunde funktioniert watchdog ähnlich wie notify.
presenceNadin.presence:.present 00:05:35 presenceNadin.presence:.absent - getriggert wird auf das Device presenceNadin mit dem Reading presence und den Wert present wenn das als Event kommt löst der watchdog aus. Dann wird 5min und 35sekunden gewartet und wenn in dieser Zeit kein Event kommt was das Device presenceNadin mit dem Reading presence und dem Wert absent beinhaltet wird ausgelöst.
Hallo CoolTux,
vielen Dank für Deine Mühe. Erst mal sorry für meine späte Antwort. Ich musste kurzfristig wegfahren.
Bitte lache mich nicht aus, aber ich bin immernoch nicht ganz dahinter gestiegen, würde es aber gerne verstehen.
Mein Device, das ich schalten will heißt bad_Dachfenster. Es soll nach der Zeit den Status 0 erhalten.
Wäre das dann die Zeile, die ich eingeben muss? Oder muss ich hierzu ein dummy o.ä. anlegen?
define bad_Dachfenster.presence:.present 00:05:35 bad_Dachfenster.presence:.absent {systemCommand("wd_GTagBatterieNadin","gtagbattery",5)} ; trigger wd_GTagBatterieNadin .
Besten Dank und Grüße
Zitat von: tomily am 11 Dezember 2017, 08:19:37
Hallo CoolTux,
vielen Dank für Deine Mühe. Erst mal sorry für meine späte Antwort. Ich musste kurzfristig wegfahren.
Bitte lache mich nicht aus, aber ich bin immernoch nicht ganz dahinter gestiegen, würde es aber gerne verstehen.
Mein Device, das ich schalten will heißt bad_Dachfenster. Es soll nach der Zeit den Status 0 erhalten.
Wäre das dann die Zeile, die ich eingeben muss? Oder muss ich hierzu ein dummy o.ä. anlegen?
define bad_Dachfenster.presence:.present 00:05:35 bad_Dachfenster.presence:.absent {systemCommand("wd_GTagBatterieNadin","gtagbattery",5)} ; trigger wd_GTagBatterieNadin .
Besten Dank und Grüße
Ok schauen wir mal zusammen.
Du möchtest einen watchdog anlegen
define wd_badDachfensterTimerClosed watchdog
Damit legst Du fest das etwas definiert wird (define), den Namen des Watchdogs, also wie er heißen soll (wd_badDachfensterTimerClosed) und um was für ein Gerätetyp es sich handelt (watchdog)
Nun kommt das eigentliche was soll getriggert/überwacht werden
define wd_badDachfensterTimerClosed watchdog bad_Dachfenster:pct.[1-9]+ 00:05:35 bad_Dachfenster:pct.0 set bad_Dachfenster pct 0, trigger wd_badDachfensterTimerClosed .
bad_Dachfenster:pct.[1-9]+
getriggert wird auf das Event bad_Dachfenster:pct.[1-9]+ , um es einfach zu sagen wenn das Device bad_Dachfenster im Reading pct eine Änderung erfährt vom Wert > 0 dann lasse den watchdog anlaufen (das [1-9]+ ist RegEx)
lasse den Watchdog 00:05:35 lang laufen so lange nicht ein Event kommt bad_Dachfenster:pct.0 , also einfach ausgedrückt wenn das Device bad_Dachfenster im Reading pct eine Änderung erfährt vom Wert gleich 0
Das trigger am Ende ist noch alte Schule, dafür gibt es mittlerweile ein Attribut, geht nur darum das er beim nächsten mal wieder triggert.
Hi,
danke für deine mega schnelle Reaktionen und die ausführliche Erklärung.
Habs definiert und es wurde auch angelegt. Leider fährt das Fenster nach Ablauf der Zeit nicht automatisch zu :-/
Hab mal 2 Screenshots angehängt, vielleicht kannst Dir das ja mal anschauen :-)
Grüße
Ist denn der Watchdog abgelaufen? Kannst du bitte Mal ein list geben.
define wd_badDachfensterTimerClosed watchdog bad_Dachfenster:pct:.[1-9]+ 00:00:10 bad_Dachfenster:pct:.0 set bad_Dachfenster pct 0; trigger wd_badDachfensterTimerClosed .
Getestet und für gut befunden. Bitte kopie paste machen.
cool! Danke. Also jetzt habe ich es grob gerafft, um was es geht.
Das anlegen hat geklappt. Allerdings funktioniert der Watchdog nur genau 1x.
Nach Anlage läuft der Timer zur korrekten Zeit und schließt auch das Fenster. Allerdings bleibt der watchdog dann für immer auf "triggered" stehen,
obwohl das Fenster wie im Screenshot auf Wert 10 (also über 0) steht.
Habe gerade noch festgestellt, dass der geschlossene Zustand "off" und nicht 0 ist. Kann es damit zu tun haben?
FHEM zeigt den Zustand also bis 0.1 in Zahlen und zeigt anschließend "off" als Schaltzustand an.
Liebe Grüße
Gib mal bitte list vom watchdog.
Also in FHEMWEB oben Kommandozeile list watchdogname
Und das selbe bitte vom fensterdevice wenn es zu ist.
Kann mir nicht vorstellen das das Reading pct off zeigt
Hi,
beim reinkopieren sieht es furchbar aus. Habe dir die Ergebnisse in einer Textdatei angehängt, damit du Sie mit Notepad++ aufmachen kannst.
Passt das?
Danke und Grüße
Hab kein Notepad++
Schau Dir bitte noch einmal an was ich bei meinem Beispiel zu stehen habe und wie Deine DEF vom Watchdog aktuell aus schaut. Da fehlt noch was.
Das pct 0 ist auch ok. Das Reading pct 0 ist korrekt.
Zunächst mal vielen Dank für die Mühe, die du Dir wegen mir machst. Bin echt begeistert vom Support in diesem Forum.
Wenn es nicht klappt ist es nicht so schlimm. Bekomme ja langsam ein schlechtes Gewissen ;-)
Ich habe den define-Befehl von Dir 1:1 kopiert und bei mir eingefügt. Komischerweise hat der Watchdog einmal funktioniert. Dann nicht mehr.
Anbei die List-als Screenshot. Vielleicht funktioniert das besser?!
Grüße Tom
Guten Morgen,
Screenshot ist Kacke. Lieber list machen und hier in Codetags (oben in der Symbolleiste das Raute Zeichen) einfügen.
Kann sein das auch was angeschnitten ist beim Screen.
Aber überlege mal kurz was dafür sorgen könnte das der watchdog wieder getriggert wird. Also so rein aus meinen Code den Du hast. Wie gesagt vielleicht steht das ja drin und ich sehe es nicht im screen weil es abgeschnitten ist.
Hier noch mal mein Code
define wd_badDachfensterTimerClosed watchdog bad_Dachfenster:pct:.[1-9]+ 00:00:10 bad_Dachfenster:pct:.0 set bad_Dachfenster pct 0; trigger wd_badDachfensterTimerClosed .
achso, klar so gehts natürlich auch ::)
List watchdog:
Internals:
CMD set bad_Dachfenster pct 0
DEF bad_Dachfenster:pct:.[1-9]+ 00:00:10 bad_Dachfenster:pct:.0 set bad_Dachfenster pct 0
NAME wd_badDachfensterTimerClosed
NOTIFYDEV wd_badDachfensterTimerClosed,bad_Dachfenster
NR 35
NTFY_ORDER 50-wd_badDachfensterTimerClosed
RE1 bad_Dachfenster:pct:.[1-9]+
RE2 bad_Dachfenster:pct:.0
STATE defined
TO 10
TYPE watchdog
Readings:
2017-12-12 07:13:49 Activated activated
2017-12-12 07:13:59 Triggered triggered
2017-12-12 08:13:54 state defined
Attributes:
room 3-Bad
List Fenster:
Internals:
CUL1_MSGCNT 38
CUL1_RAWMSG A0D0EA4105ED8B2F1000106010000::-56.5:CUL1
CUL1_RSSI -56.5
CUL1_TIME 2017-12-12 08:13:54
DEF 5ED8B2
IODev CUL1
LASTInputDev CUL1
MSGCNT 38
NAME bad_Dachfenster
NOTIFYDEV global
NR 34
NTFY_ORDER 50-bad_Dachfenster
STATE off
TYPE CUL_HM
lastMsg No:0E - t:10 s:5ED8B2 d:F10001 06010000
protLastRcv 2017-12-12 08:13:54
protSnd 44 last_at:2017-12-12 08:13:54
protState CMDs_done
rssi_CUL1 cnt:10 lst:-58 max:-55 avg:-56.9 min:-58
rssi_at_CUL1 max:-54 min:-61.5 avg:-57.46 cnt:38 lst:-56.5
Readings:
2017-12-12 08:13:46 CommandAccepted yes
2017-12-03 14:39:25 D-firmware 2.11
2017-12-03 14:39:25 D-serialNr OEQ0893326
2017-12-12 08:04:19 PairedTo 0xF10001
2017-12-03 14:39:30 R-driveDown 50 s
2017-12-03 14:39:30 R-driveTurn 0.5 s
2017-12-03 14:39:30 R-driveUp 50 s
2017-12-03 14:39:30 R-pairCentral 0xF10001
2017-12-03 14:39:30 R-powerUpAction off
2017-12-03 14:39:30 R-sign off
2017-12-12 08:04:19 RegL_00. 02:01 0A:F1 0B:00 0C:01 15:FF 18:00 00:00
2017-12-12 08:04:20 RegL_01. 08:00 09:00 0A:00 0B:01 0C:F4 0D:01 0E:F4 0F:05 10:00 30:06 57:24 56:00 00:00
2017-12-12 08:13:54 deviceMsg off (to CUL1)
2017-12-12 08:13:54 level 0
2017-12-12 08:13:54 motor stop:off
2017-12-12 08:13:54 pct 0
2017-12-12 08:04:17 powerOn 2017-12-12 08:04:17
2017-12-12 08:13:54 recentStateType info
2017-12-12 08:13:54 state off
2017-12-12 08:13:54 timedOn off
Helper:
HM_CMDNR 14
PONtest 0
cSnd 01F100015ED8B2010E,01F100015ED8B2010E
dlvlCmd ++A011F100015ED8B20201000000
mId 006A
peerIDsRaw ,00000000
rxType 1
supp_Pair_Rep 0
Dir:
cur stop
rct down
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +5ED8B2,00,00,00
nextSend 1513062834.55004
prefIO
rxt 0
vccu
p:
5ED8B2
00
00
00
Mrssi:
mNo 0E
Io:
CUL1 -54.5
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
prs 1
Rpt:
IO CUL1
flg A
ts 1513062834.45354
ack:
HASH(0x2651640)
0E8002F100015ED8B200
Rssi:
Cul1:
avg -56.9
cnt 10
lst -58
max -55
min -58
At_cul1:
avg -57.4605263157895
cnt 38
lst -56.5
max -54
min -61.5
Shadowreg:
Attributes:
IODev CUL1
autoReadReg 4_reqStatus
devStateIcon off:fts_window_roof on:fts_window_roof_open_2 on:10px-kreis-gelb on:fts_window_roof_open_2 >=0:10px-kreis-gelb >=1:fts_window_roof_open_2 >1:fts_window_roof_open_2
expert 2_raw
firmware 2.11
icon fts_window_roof
model HM-LC-Bl1PBU-FM
peerIDs 00000000,
room 3-Bad
serialNr OEQ0893326
subType blindActuator
webCmd statusRequest:toggleDir:on:off:up:down:stop
Ok ich sehe was der Unterschied von meiner zu Deiner Definition ist.
Nun bist Du dran. Ich helfe sehr gerne, aber auch nur wenn der Hilfesuchende Eigeninitiative zeigt. Ich bilde mir nun ein Dich auf das Problem recht gut gelenkt zu haben. Schau mal bitte
Ok lieber CoolTux. Jetzt habe ich nicht nur exakt die Funktion, die ich haben wollte, sondern habe nochmal viel im FHEM, sowie ein neues Feature dazugelernt.
Beim Copy und Pasten hat es den Part "; trigger wd_badDachfensterTimerClosed ." nicht übernommen. Diesen habe ich händisch nochmal hinzugefügt und siehe da...it works auch 2x
8)
Meine Tests waren jetzt alle per Remote, da ich nicht Vorort bin. Werde das ganze heute Abend nochmals testen, ob es auch Funktioniert wenn das Fenster über den Taster gefahren wird.
Was komisch ist, dass es ab und zu nicht funktioniert, wenn das Fenster durch den Watchdog zugefahren wurde und ich des danach wieder öffne. Prüft der Watchdog auch, ob es eine gewisse Zeit geschlossen war?
Ich danke Dir für die Unterstützung! Wirklich sehr sehr geil!
Nein der Watchdog prüft da gar nichts. Der Watchdog reagiert immer nur auf Events. Und zwar auf die welche Du als Regex da eingegeben hast.
Im Gründe musst Du also nur prüfen ob ein entsprechendes Event beim auffahren erzeugt wird. Schau dazu im Eventmonitor nach und filter da schon nach Dein Dachfenster.
Grüße
Nochmals ganz herzlichen Dank! Ich werde heute Abend das ganze noch per Schalterbetätigung testen.
Wenn das funktioniert schließe ich den Thread und bin sehr happy :)
Grüße
Sehr gerne. Schließen musst Du ihn nicht.
Einfach in Deinen ersten Post gehen und im Betreff [erledigt] oder [gelöst] vorne anschreiben.
Grüße
Leon
Moin zusammen,
nochmals Danke für den Support. Hier ein kleiens Fazit:
Der Watchdog als solches funktioniert innerhalb von FHEM nun so wie er soll. Ich habe beim Anlegen einfach einen Fehler gemacht bzw. bemerkt, dass nicht nicht der ganze Code kopiert worden ist.
Wenn das Fenster über den Homematic Schalter DIREKT geöffnet wird, wird im FHEM-Log kein Event erzeugt. Somit wird der watchdog nicht ausgelöst.
Seltsamerweise geht es manchmal. Also etwas buggy und Ich werde noch versuchen herauszufinden, wann es geht.
Viele Grüße