Hallo zusammen,
ich habe HM-LC-Sw1PBU-FM (Schalter) und HM-Sen-MDIR-WM55 (Bewegungsmelder) gepeered. Wenn der Bewegungsmelder anschlägt. Nach einer bestimmten (mit shOnTime eingestellten) Zeit geht das Licht wieder aus. Soweit so gut.
Leider geht das Licht auch aus, wenn in der Zwischenzeit der Bewegungsmelder nochmal eine Bewegung feststellt. Dann sollte eigentlich die An-Zeit nochmal von vorne starten. Wie kann ich dieses Verhalten erreichen?
Viele Grüße
Frank
Hallo Frank,
ich bin nicht sicher ob das nachtriggern mit dem peering funktioniert. In Abhängigkeit der Helligkeit funktioniert, das hab ich schon gelesen.
Ich habe das bei mir so gelöst:
defmod di_Flurlicht DOIF ([PIR1:"motion:.on"] and (!isday("REAL")?1:0 or [?PIRWg:brightness] < 130)) (set SW01_Sw01 on)(set SW01_Sw01 off)
attr di_Flurlicht do resetwait
attr di_Flurlicht room Flur
attr di_Flurlicht wait 0,180
Es gibt auch ein template dafür - hast Du damit gepeert? Geht jetzt mit peerSmart (https://forum.fhem.de/index.php/topic,99349.msg927393.html#msg927393).
Gruß Otto
Hallo Otto,
vielen Dank für deinen Vorschlag. Ich werde das so umsetzen.
Ein Template habe ich nicht genutzt, da weiß ich nie, was dort abläuft ...
Viele Grüße
Frank
Nachtriggern funktioniert auch mit peering. Allerdings sind auch hier die Restriktionen des Bewegungsmelders zu beachten: Er sendet derfault nach einer Bewegungserkennung erst nach 240s = 4 Minuten (Register "minInterval") die nächste Meldung, auch wenn er in der Zwischenzeit eine Bewegung erkennt. Eine in der "Warteperiode" erkannte Bewegung wird dann "nachgereicht", wenn das Register "captInInterval" auf "on" steht, ansonsten führt erst eine Bewegungserkennung nach Ablauf der "Warteperiode" zu einer erneuten Triggerung.
Um ein kontinuierliches Licht zu erhalten, muss man die Einschaltzeit des Aktors verlängern (mindestens auf die "Warteperiode") oder - auf Kosten der Batterielebensdauer - die Warteperiode verkürzen. "captInInterval" ist in manchen Fällen hilfreich, in manchen kontraproduktiv (ein in der Warteperiode manuell ausgeschaltetes Licht würde nach Ablauf der Warteperiode wieder angehen, auch wenn es nach der manuellen Betätigung keine Bewegung mehr gab). Die richtige Einstellung hängt sehr vom Anwendungszweck ab.
Zitat von: Pfriemler am 15 April 2019, 00:23:04
Nachtriggern funktioniert auch mit peering. Allerdings sind auch hier die Restriktionen des Bewegungsmelders zu beachten: .... Die richtige Einstellung hängt sehr vom Anwendungszweck ab.
Der Meinung war ich auch: "minInterval" des Bewegungsmelders auf 15s, shOnTime des Schalters auf 1min gestellt. Das müssten ja während der Laufzeit des Timers im Schalter mehrfach neue Trigger umgesetzt werden. Diese Trigger werden auch generiert und kommen beim Schalter an, nur bewirken tun sie nichts, d.h. der Schalter bleibt bei seinem Zeitinterval, welcher er beim ersten Trigger gesetzt hat.
Ich vermute, da muss noch eine Einstellung im Schalter gesetzt werden ...
Hi Frank,
Deine Vermutung ist richtig, es müssen im Schalter noch weitere Register verändert werden. Alledings kann ich aufgrund Deiner Beschreibung und knappen Infos nur raten..
Vielleicht erst mal zur Theorie, siehe Doc "Heimautomatisierung mit fhem" von Ullrich Maaß.
Der Schalter hat 4 Zustände (mit Register Defaultwerten, hier nur für short Trigger):
- off der Schalter ist dauerhaft ausgeschaltet
- dlyOn der Schalter ist noch ausgeschaltet und wird nach Ablauf des timers shOnDly einschalten
- on der Schalter ist dauerhaft eingeschaltet
- dlyOff der Schalter ist noch eingeschaltet und wird nach Ablauf des timer shOffDly ausschalten
Für jeden dieser Zustände gibt es je 3 Register, die das Verhalten des Schalters in diesem Status bestimmen.
a) die Timer shOffTime,shOnDly, shOnTime und shOffDly (bestimmen die Verweildauer im jeweiligen Status)
b) die Jump-Condition-Register (unter welchen Bedingungen soll der Status verlassen werden)
c) die Jump-Target-Register (Sprungziel, zu welchem Status soll gesprungen werden)
Ich nehme mal an, dass der Bewegungsmelder nur ab einer bestimmten Dunkelheit das Treppenlicht schalten soll. Das macht er nach Deiner Beschreibug auch und zwar scheint er vom Status off nach on zu sringen, da Du das Register shOnTime auf 60 gestellt hast.
Es müste folglich das Register shSwJtOff auf on als Sprungziel stehen. Das Register gilt aber nur für einen Sprung aus dem Status off und nicht für einen Sprung aus dem Status on! Nach dem 1. Trigger befindet sich der Schalter in on und nicht mehr in off und der 2. Trigger funktioniert daher nicht wie gewünscht.
Lösung:
Register
shCtOn auf den gleichen Wert wie shCtOff setzen
shSwJtOn auf on setzen
Jetzt gibt es für den 2. und die folgenden Trigger eine gültige Kondition im Status on und die Timer laufen erneut an, da der Schalter von on nach on springt.
Sollte so gehen, probier bitte mal. Im Zweifelsfall brauchen wir als Info alle Registerinhalte für diesen Peer.
Falls Du auch über einen anderen Peer Dauerlicht schalten möchtest, wird es in dieser Konstellation Probleme geben, da der Bewegungsmelder nach 1 Minute immer wieder das Dauerlicht ausschalten wird. Dann sollte statt on der Status dlyOff genutzt werden.
Mon und viel Erfolg
Bernd
Wie wârs mit einem template?
Das stellt alles ein. Fertig. Falls es dich interessiert, schaue es dir an.
set hm templateDef SwMdirNew brightness:ontime "handle motion detector trigger" CtOff:ltHi SwJtDlyOn:no CtValLo:70 OnTime:0 SwJtOff:dlyOff CtOn:ltHi SwJtOn:no OnTimeMode:minimal OffTimeMode:minimal OffDly:p1 ActionType:jmpToTarget CtValHi:p0 CtDlyOff:ltHi OffTime:unused CtDlyOn:ltHi SwJtDlyOff:dlyOff MultiExec:off OnDly:0
Dann die beiden Parameter einstellen, ab welcher Helligkeit geschaltet werden soll und wie lange es an sein soll
Hallo,
ich stehe gerade auch auf Kriegsfuss mit dem Bewegungsmelder in Kombination mit dem Schaltaktor, wie im Titel des TE genannt. Beide Devices sind erfolgreich gepairt und gepeert. Alles funktioniert. Licht an / aus per Taster sowie Licht an bei Bewegungserkennung.
Als Trigger habe ich ein Notify hinterlegt:
define KellerMotion notify KellerBW_Motion {fhem ("set Kellerlicht on-for-timer 60") if (ReadingsVal("KellerBW","brightness",0) < 34)}
Liste Bewegungsmelder
Internals:
.triggerUsed 1
CFGFN
DEF 36164903
FUUID 5cdc5a6a-f33f-45fc-10cf-2861561c2face9b7
NAME KellerBW_Motion
NOTIFYDEV global
NR 700
STATE noMotion
TYPE CUL_HM
chanNo 03
device KellerBW
peerList Kellerlicht,
.attraggr:
.attrminint:
READINGS:
2019-05-15 20:29:02 .R-ledOnTime 0 s
2019-05-15 22:52:08 .peerListRDate 2019-05-15 22:52:08
2019-05-15 22:52:08 R-Kellerlicht_chn-01-peerNeedsBurst off
2019-05-15 22:47:34 R-brightFilter 7
2019-05-15 22:47:34 R-captInInterval off
2019-05-15 22:52:03 R-evtFltrNum 3
2019-05-15 22:52:03 R-evtFltrPeriod 6 s
2019-05-15 22:47:34 R-minInterval 60
2019-05-15 20:29:02 R-sign off
2019-05-15 22:52:07 RegL_01. 00:00 01:3C 02:72 08:00 22:00 30:03
2019-05-15 22:52:08 RegL_04.Kellerlicht_chn-01 00:00 01:00
2019-05-15 22:57:32 brightness 0
2019-05-15 22:58:34 motion off
2019-05-15 22:57:32 motionCount 38_next:60s
2019-05-15 22:58:34 motionDuration 62
2019-05-15 22:52:08 peerList Kellerlicht,
2019-05-15 22:58:34 state noMotion
2019-05-15 22:57:32 trigger_cnt 38
helper:
peerFriend peerAct,peerVirt
peerIDsRaw ,6644DC01,00000000
peerOpt 4:motionAndBtn
regLst 1,4p
expert:
def 1
det 0
raw 1
tpl 0
regCollect:
role:
chn 1
shadowReg:
tmpl:
Attributes:
model HM-SEN-MDIR-WM55
peerIDs 00000000,6644DC01,
room Treppenhaus
Ich habe erwartet, dass durch meine Filtereinstellungen (captInInterval, evtFltrNum und evtFltrPeriod) das gewünschte Verhalten eintritt, dass das Licht bei Bewegungserkennung nur einmal an und nach 60 Sekunden wieder ausgeschaltet wird. Leider aber nicht der Fall. Es wird 2x für 60 Sekunden Licht geschaltet.
Woran kann das liegen?
Hi,
KellerBW_Motion
Du triggerst damit auf jeden Event!
Je nach dem wann das Licht angehen soll, würde ich auf KellerBW_Motion:motion:.on
triggern ;)
Am Besten schaust Du Dir das im Eventmonitor (https://wiki.fhem.de/wiki/Event_monitor) an, mit dessen Hilfe kannst Du auch den trigger ändern :)
Allerdings machst Du es jetzt sowieso doppelt!? Du hast den BM mit dem Aktor gepeert und schickst trotzdem noch ein on-for-timer hinterher. Ich würde empfehlen: entweder die Register setzen und den peer machen lassen oder nur das notify nehmen.
Was passiert den wenn Du das notify mal totlegst? -> inactive
Gruß Otto
Hi Otto,
ich kriegs nicht gebacken. Das steht im Eventmonitor
2019-05-16 00:02:16 CUL_HM Kellerlicht trigLast: KellerBW_Motion:0
2019-05-16 00:02:16 CUL_HM Kellerlicht trig_KellerBW_Motion: 0_51
2019-05-16 00:02:16 CUL_HM Kellerlicht set_on-for-timer 60
2019-05-16 00:02:16 CUL_HM Kellerlicht set_on-for-timer 60
2019-05-16 00:02:16 CUL_HM Kellerlicht set_on-for-timer 60
2019-05-16 00:02:16 CUL_HM Kellerlicht set_on-for-timer 60
2019-05-16 00:02:16 CUL_HM Kellerlicht set_on-for-timer 60
2019-05-16 00:02:16 CUL_HM KellerBW_Motion brightness: 0
2019-05-16 00:02:16 CUL_HM KellerBW_Motion motion: on (to Kellerlicht)
2019-05-16 00:02:16 CUL_HM KellerBW_Motion motionCount: 51_next:60s
2019-05-16 00:02:16 CUL_HM KellerBW_Motion motion
2019-05-16 00:02:16 CUL_HM KellerBW_Motion trigger_cnt: 51
2019-05-16 00:02:16 CUL_HM Kellerlicht NACK
2019-05-16 00:02:16 CUL_HM Kellerlicht deviceMsg: on (to VCCU)
2019-05-16 00:02:16 CUL_HM Kellerlicht level: 100
2019-05-16 00:02:16 CUL_HM Kellerlicht pct: 100
2019-05-16 00:02:16 CUL_HM Kellerlicht on
2019-05-16 00:02:16 CUL_HM Kellerlicht timedOn: running
2019-05-16 00:02:16 CUL_HM Kellerlicht deviceMsg: on (to VCCU)
2019-05-16 00:02:16 CUL_HM Kellerlicht level: 100
2019-05-16 00:02:16 CUL_HM Kellerlicht pct: 100
2019-05-16 00:02:16 CUL_HM Kellerlicht on
2019-05-16 00:02:16 CUL_HM Kellerlicht timedOn: running
2019-05-16 00:02:17 CUL_HM Kellerlicht deviceMsg: on (to VCCU)
2019-05-16 00:02:17 CUL_HM Kellerlicht level: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht pct: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht on
2019-05-16 00:02:17 CUL_HM Kellerlicht timedOn: running
2019-05-16 00:02:17 CUL_HM Kellerlicht deviceMsg: on (to VCCU)
2019-05-16 00:02:17 CUL_HM Kellerlicht level: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht pct: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht on
2019-05-16 00:02:17 CUL_HM Kellerlicht timedOn: running
2019-05-16 00:02:17 CUL_HM Kellerlicht deviceMsg: on (to VCCU)
2019-05-16 00:02:17 CUL_HM Kellerlicht level: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht pct: 100
2019-05-16 00:02:17 CUL_HM Kellerlicht on
2019-05-16 00:02:17 CUL_HM Kellerlicht timedOn: running
Wenn ich das notify so ändere
define KellerMotion notify KellerBW_Motion:motion: on (to Kellerlicht) {fhem ("set Kellerlicht on-for-timer 60") if (ReadingsVal("KellerBW","brightness",0) < 34)}
geht das Licht nicht mehr an.
Kannst du mir bitte sagen, wie ich es richtig definieren muss aufgrund des Eventlogs?
Ohne notify auf Basis des peerings (notify weg) schaltet das Licht auch nicht. Muss ich da noch etwas spezielles in den Registern setzen? Wenn ja wo?
Vielen Dank vorab.
Ja ich habe nicht dran gedacht: er ist gepeert.
Leerzeichen musst Du im notify im regExp durch Punkte ersetzen. Den Peer würde ich durch .* ersetzen.
KellerBW_Motion:motion:.on.*
Hast Du versucht es vom Eventmonitor machen zu lassen?
Zitat von: Otto123 am 16 Mai 2019, 00:13:09
Ja ich habe nicht dran gedacht: er ist gepeert.
Leerzeichen musst Du im notify im regExp durch Punkte ersetzen. Den Peer würde ich durch .* ersetzen.
KellerBW_Motion:motion:.on.*
Hast Du versucht es vom Eventmonitor machen zu lassen?
Hallo Otto,
jetzt hab ich es gerafft mit dem Eventmonitor. Das ist das Ergebnis, welches nun funktioniert!
KellerBW_Motion:motion:.on.\(to.Kellerlicht\) {fhem ("set Kellerlicht on-for-timer 60") if (ReadingsVal("KellerBW","brightness",0) < 34)}
Allerbesten Dank zu später Stunde!
Sollte ich das peering des BM nun besser unpeeren? Kann das Probleme machen?
Gruß
Udo
Moin Udo,
:D
ich würden das regExp nach meinem Vorschlag abwandeln. Der Teil (to Kellerlicht) kann sich auch mal ändern und der ist für dein notify nicht relevant.
Ein punkt im regExp steht für ein beliebiges Zeichen und der Stern dahinter für beliebig viele Zeichen des vorhergehenden - also beliebig viele beliebige Zeichen.
Ich finde eher die Frage interessant, warum hast Du gepeert um das Peerig dann durch ein notify zu umgehen/ersetzen/ergänzen? Das was das notify jetzt tut, kannst Du auch im Aktor einstellen, dann funktioniert die ganze Sache auch ohne FHEM.
Gruß Otto
Zitat von: Otto123 am 16 Mai 2019, 09:37:55
Moin Udo,
Ich finde eher die Frage interessant, warum hast Du gepeert um das Peerig dann durch ein notify zu umgehen/ersetzen/ergänzen? Das was das notify jetzt tut, kannst Du auch im Aktor einstellen, dann funktioniert die ganze Sache auch ohne FHEM.
Gruß Otto
Hallo Otto,
ich wollte beide Varianten testen und dann beurteilen, was mir besser gefällt. Aber du hast schon das Beste Argument geliefert, das Notify zu deaktivieren und direkt den Aktor zu programmieren, damit es auch ohne FHEM geht.
Da fehlt mir ehrlich gesagt aber eine gute Doku / Wiki, um es nachbauen zu können.
Naja, das wollte ich so nicht sagen :)
Ich habe seit Jahren ein DOIF dafür, weil ich bei der Programmierung des Schalters auch nicht durchgeblickt habe. Ich meine was solls, wenn das Licht bei mir mal im Flur nicht bei Bewegung angeht müsste ich den Taster drücken :)
Und FHEM läuft immer :)
defmod di_Flurlicht DOIF ([PIR1:"motion:.on"] and (!isday("REAL")?1:0 or [?PIRWg:brightness] < 130)) (set SW01_Sw01 on)(set SW01_Sw01 off)
attr di_Flurlicht do resetwait
attr di_Flurlicht room Flur
attr di_Flurlicht wait 0,180
Es gibt jetzt mittlerweile Templates dafür (hmInfo) z.B. get hm templateList motionOnSw
liefert diese InfomotionOnSw params:ontime brightness Info:Switch: on for time if MDIR-brightness below level
ActionType :jmpToTarget
CtDlyOff :ltLo
CtDlyOn :ltLo
CtOff :ltLo
CtOn :ltLo
CtValLo :brightness
OffTime :unused
OnTime :ontime
SwJtDlyOff :dlyOn
SwJtDlyOn :on
SwJtOff :dlyOn
SwJtOn :on
Das peeren kann man mittlerweile mit peerSmart am Aktor interaktiv einstellen und auch template auswählen / Werte setzen geht interaktiv.
Einziger Nachteil: Es hat noch keiner so wirklich aufgeschrieben wie es wirklich geht.
Vielleicht bist Du der Erste und schreibst es auf?
Such im Forum einfach nach peerSmart, es gab schon ein paar Beiträge.
Ich habe mir es zwar vorgenommen, aber momentan fehlt die Zeit. 8)
Gruß Otto