Hallo,
hatte die Frage schon im Anfänger Thread gestellt. Mein bis jetzt eingesetzter Code läuft ohne Probleme, leider soll nach Ablauf des Timers und es sind noch Personen im Raum die Zeit des Timers verlängert werden:
# Badlicht steuern
define Bewegung_Bad notify IR_Sensor:motion.* {\
if (Value("Lichtsensor1") eq "dunkel") {\
fhem "set Badlicht on-for-timer 480";;\
\
}}
Wenn nach den 8 Minuten noch jemand im Bad ist, soll das Licht anbleiben. Habe schon 10 Stunden mit watchdog experimentiert aber leider erfolglos.
Hat hier jemand einen Tipp der mir weiterhelfen würde?
Vielen Dank
Frank
kann es sein das dein lichtsensor nicht mehr dunkel liefert nach dem das licht bei der ersten bewegung eingeschaltet wurde und dadurch die nachfolgenden bewegungen kein neues on-for-timer mehr auslösen?
du musst etwas mehr logik einbauen und dir merken das durch den sensor eingeschaltet wurde.
z.b. in einem reading das du dir in der lampe anlegst wenn das erste mal motion kommt. in motion musst du dann in dem if den lichtsensor auf dunkel und zusätzlich das eben angelegte reading per oder prüfen und die lampe auch dann einschalten. zusätzlich brauchst du ein notify an der lampe das sobald die lampe aus geht das hilfs reading wieder löscht.
gruss
andre
Hallo Andre, jetzt nerv ich dich schon wieder. Der Sensor bleibt bei Licht an immer noch auf "dunkel" daran liegt es nicht.
Der gesamte Code ist:
#Badlicht schalten
#---- Lichtsensor
define Lichtsensor1 dummy
attr Lichtsensor1 fp_Grundriss 200,485,0,
attr Lichtsensor1 room Bad
define Daemmerung notify IR_Sensor.*brightness.* {\
if(ReadingsVal("IR_Sensor","brightness","---")<=35){\
fhem "set Lichtsensor1 dunkel"};;\
if(ReadingsVal("IR_Sensor","brightness","---")>35){\
fhem "set Lichtsensor1 hell"};;\
}
#---- Badlicht steuern
define Bewegung_Bad notify IR_Sensor:motion.* {\
if (Value("Lichtsensor1") eq "dunkel") {\
fhem "set Badlicht on-for-timer 480";;\
\
}}
Wie gesagt, im Moment ist der Junge im Bad und der Sensor liefert "dunkel".
die frage ist was er in dem momment liefert wenn das motion notify zum verlängern kommt. schau in den event monitor.bau wieder Log meldungen ein.
je nach dem wie gross das bad ist passt auf einfach die stelle nicht und er erkennt nicht das jemand da ist. oder auch wenn sich jemand nicht bewegt. dann hilft es vielleicht auch das intervall für die motion nachrichten von 4 minuten auf 2 oder sogar eine zu setzen.
gruss
andre
Schau mal in diesem Post von Martin, er beschreibt am Ende die Funktion des letzten Wertes der Jump liste...
Link (http://forum.fhem.de/index.php?topic=12447.msg93898#msg93898)
Das lässt sich bestimmt nur in den Registern vom Sensor machen (die motion nachrichten von 4 minuten auf 2 oder sogar eine zu setzen) Da nur ca. alle 2 Minuten ein Event vom dämmerunsschalter kommt. Der Sensor deckt definitiv das ganze Bad ab. Wie gesagt, ich habe heute den ganzen Tag nach einer Lösung (watchdog, triggern) gesucht aber leider hat das alles nicht zum Erfolg geführt.
das interval zu setzen geht über das minInterval register. 4 minuten ist der default.
also der erste schritt ist auf jeden fall zu schauen ob die motion nachrichten kommen. wenn die nicht kommen nützt alles andere auch nicht :)
gruss
andre
Verabschiede mich erst mal in die Nacht baue morgen mal ein Log3 IR_Sensor ein. Meine Frau fand es nicht so gut, dass das Badlicht ausgeht.
Frank
Also, der Event Monitor liefert folgendes:
2013-09-15 10:08:49 dummy Lichtsensor1 hell
2013-09-15 10:08:49 CUL_HM IR_Sensor motion
2013-09-15 10:08:49 CUL_HM IR_Sensor motion: on (to broadcast)
2013-09-15 10:08:49 CUL_HM IR_Sensor motionCount: 100_next:8-240
2013-09-15 10:08:49 CUL_HM IR_Sensor brightness: 86
2013-09-15 10:09:48 CUL_HM Differenz_1_2 T: -1.2
2013-09-15 10:09:48 CUL_HM Differenz_2_1 T: 1.2
2013-09-15 10:09:48 CUL_HM Differenz_2_1 DiffTemp: 1.2
2013-09-15 10:09:48 CUL_HM Temperatur_1 T: 22.1
2013-09-15 10:09:48 CUL_HM Temperatur_2 T: 23.3
2013-09-15 10:09:54 CUL_HM THSensor temperature: 23.4
2013-09-15 10:09:54 CUL_HM THSensor humidity: 58
2013-09-15 10:09:54 CUL_HM THSensor T: 23.4 H: 58
2013-09-15 10:11:22 dummy Lichtsensor1 hell
2013-09-15 10:11:22 CUL_HM IR_Sensor brightness: 87
2013-09-15 10:11:22 CUL_HM IR_Sensor cover: closed
2013-09-15 10:11:22 CUL_HM IR_Sensor battery: ok
2013-09-15 10:12:32 CUL_HM Differenz_1_2 T: -0.3
2013-09-15 10:12:32 CUL_HM Differenz_2_1 T: 0.3
2013-09-15 10:12:32 CUL_HM Differenz_2_1 DiffTemp: 0.3
2013-09-15 10:12:32 CUL_HM Temperatur_1 T: 22.1
2013-09-15 10:12:32 CUL_HM Temperatur_2 T: 22.4
2013-09-15 10:12:33 CUL_HM THSensor temperature: 23.3
2013-09-15 10:12:33 CUL_HM THSensor humidity: 58
2013-09-15 10:12:33 CUL_HM THSensor T: 23.3 H: 58
2013-09-15 10:12:57 dummy Lichtsensor1 hell
2013-09-15 10:12:57 CUL_HM IR_Sensor motion
2013-09-15 10:12:57 CUL_HM IR_Sensor motion: on (to broadcast)
2013-09-15 10:12:57 CUL_HM IR_Sensor motionCount: 101_next:8-240
Im Moment ist jemand im Bad und motion wird auch ausgelöst
Log:
2013.09.15 10:25:02 3: HMLAN1 device opened
2013.09.15 10:25:02 2: HMLAN_Parse: HMLAN1 new condition init
2013.09.15 10:25:03 1: Including ./log/fhem.save
2013.09.15 10:25:08 3: Device Diff_Temp_Sensor added to ActionDetector with 000:10 time
2013.09.15 10:25:08 3: Device IR_Sensor added to ActionDetector with 000:10 time
2013.09.15 10:25:08 3: Device Schalter_Tuer added to ActionDetector with 028:00 time
2013.09.15 10:25:08 3: Device THSensor added to ActionDetector with 000:10 time
2013.09.15 10:26:34 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:26:34 3: IR_Sensor
2013.09.15 10:26:34 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:26:34 3: IR_Sensor
2013.09.15 10:26:34 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:26:34 3: IR_Sensor
2013.09.15 10:26:34 2: HMLAN_Parse: HMLAN1 new condition ok
2013.09.15 10:27:05 2: CUL_HM set Herdlicht off
2013.09.15 10:31:06 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:31:06 3: IR_Sensor
2013.09.15 10:31:07 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:31:07 3: IR_Sensor
2013.09.15 10:31:07 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:31:07 3: IR_Sensor
2013.09.15 10:35:29 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:35:29 3: IR_Sensor
2013.09.15 10:35:29 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:35:29 3: IR_Sensor
2013.09.15 10:35:29 2: CUL_HM set Badlicht on-for-timer 360
2013.09.15 10:35:29 3: IR_Sensor
Ich denke die Sache hätte sich erledigt wenn man das Intervall von 4 Minuten auf 2 oder 1 ändern würde.
list: register | range | peer | description
0: intKeyVisib | literal | | visibility of internal channel options:visib,invisib
0: pairCentral | 0 to 16777215 | | pairing to central
0: sabotageMsg | literal | | enable sabotage message options:on,off
1: brightFilter | 0 to 7 | | brightness filter - ignore light at night
1: captInInterval | literal | | capture within interval options:on,off
1: evtFltrNum | 1 to 15 | | sensitivity - read each n-th puls
1: evtFltrPeriod | 0.5 to 7.5s | | event filter period
1: ledOnTime | 0 to 1.275s | | LED ontime
1: minInterval | literal | | minimum interval in sec options:240,60,120,30,15
4: peerNeedsBurst | literal | required | peer expects burst options:on,off
get Config
set regSet minInterval 15
Mal sehen ob´s was bringt.
Viele Grüße
Frank
Das minInterval setzt du mit...
set IR_Sensor regSet minInterval 120
Auf in diesem fall 120 Sekunden
Nach einem Motion des Sensors wird also erst nach 120 Sekunden wieder auf Bewegungen reagiert...
Mit dem shDimJtOn : on oder no kannst dem aktor sagen ob er während seiner timer zeit auf neue Impulse des bewegungsmelders reagieren soll...
Ich habe bei mir den minInterval auf 120 Sekunden gesetzt und das Licht für 135 Sekunden an... shDimJtOn steht auf on
Sollte also in den letzten 15 Sekunden des Timers bewegung registriert werden wird der timer neu angestoßen...
Danke, der-Lolo, dass mit dem Register setzen hatte ich schon gemacht. Hatte dann nochmal nachgelesen dass der Anlernknopf gedrückt sein muss.
Setze jetzt noch shDimJtOn auf on. Wo sehe ich ob der Sensor die Register geschrieben hat, mit getConfig oder wo?
Manchmal ist man blind, steht doch alles in den Readings :-)
set shDimJtOn geht nicht:
shDimJtOn failed: supported register are brightFilter captInInterval evtFltrNum evtFltrPeriod intKeyVisib ledOnTime minInterval pairCentral peerNeedsBurst sabotageMsg
Gruß
Frank
Ich glaube du versuchst das falsche Register zu verändern, nicht im Bewegungsmelder agieren, sondern im Lichtschalter...
set badlicht regSet shDimJtOn on
Beim MDIR solltest du jeweils nach einem getConfig oder einem regSet die anlerntaste kurz drücken damit die Werte geschrieben werden.
Ein abschließendes getConfig zeigt dir dann die geschriebenen Werte sollte dort noch was von set_on bei shDimJtOn stehen wurde der Wert noch nicht übertragen...
Oder muss das dieses Register sein:
captInInterval | literal | | capture within interval options:on,off
Das ist natürlich vom MDIR -)
Die Werte im MDIR wurden geschrieben und die minInterval Zeit steht jetzt auf 15 sec. Damit scheint alles bestens zu laufen.
Gruß Frank
Wenn ich das richtig verstanden habe ist das capInInterval dafür zuständig ob überhaupt nach bewegung geschaut wird im Bewegungsmelder.
shDimJtOn sagt quasi das weitere trigger während der timerzeit den timer im aktor neu anstoßen oder nicht beachtet werden...
Das Register gibt es bei dem Schalter (HM-LC-Sw1PBU-FM) definitiv nicht:
0: intKeyVisib
0: localResDis
0: pairCentral
1: sign
1: statusInfoMinDly
1: statusInfoRandom
1: transmitTryMax
3: lgActionType
3: lgCtDlyOff
3: lgCtDlyOn
3: lgCtOff
3: lgCtOn
3: lgCtValHi
3: lgCtValLo
3: lgMultiExec
3: lgOffDly
3: lgOffTime
3: lgOffTimeMode
3: lgOnDly
3: lgOnTime
3: lgOnTimeMode
3: lgSwJtDlyOff
3: lgSwJtDlyOn
3: lgSwJtOff
3: lgSwJtOn
3: shActionType
3: shCtDlyOff
3: shCtDlyOn
3: shCtOff
3: shCtOn
3: shCtValHi
3: shCtValLo
3: shOffDly
3: shOffTime |
3: shOffTimeMode
3: shOnDly
3: shOnTime
3: shOnTimeMode
3: shSwJtDlyOff
3: shSwJtDlyOn
3: shSwJtOff
3: shSwJtOn
Stimmt, weil es ein Schalter und kein Dimmer ist...
Es geht um shswJtOn
Sw statt dim
Ja, mann da hätte ich aber auch selber draufkommen können :-)
fhem schreibt aber beim setzen des shSwJtOn Registers Peer not spezifiziert oder ähnlich. Der Schalter ist ja auch nicht gepeert sondern mit dem HMLan gepairt.
Dann lasse ich das jetzt erst mal so, mal sehen wer heute Abend dann im dunklen steht.
Vielen Dank
Frank
Ich bin auch gerade durch dieses Thema durchgeschlittert, weil mir die "programmierte" Lösung nicht performant genug war hatte ich beschlossen den weg über peers zu gehen... Außerdem gewährleistet dass das die Funktion vorhanden bleibt auch wenn fhem mal nicht läuft...
Ob es nun performanter ist wird sich auch hier erst am Abend zeigen... Kann auch sein das die Empfindlichkeit des MDIR nicht ausreichend ist für meinen Zweck...
Also, von der Empfindlichkeit des MDIR war ich überrascht. Ich hatte zuvor auch deine Beiträge zu dem Thema verfolgt und war dann doch überrascht wie schnell das Teil schaltet. Im Prinzip Badtür auf und sofort geht das Licht an.
Ich hab das Gefühl als ob meiner beim unterkriechschutz sehr schnell reagiert, aber das eigentlich auf den Flur gerichtete Auge stark verzögert...
Kannst du mir mal deine regList zeigen?
Internals:
DEF 1A4F71
EVENTS 7
HMLAN1_MSGCNT 7
HMLAN1_RAWMSG E1A4F71,0000,05522F34,FF,FFB2,5A84101A4F71123ABC06012100
HMLAN1_RSSI -78
HMLAN1_TIME 2013-09-15 20:10:25
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 7
NAME IR_Sensor
NR 145
STATE motion
TYPE CUL_HM
lastMsg No:5A - t:10 s:1A4F71 d:123ABC 06012100
protLastRcv 2013-09-15 20:10:25
protSnd 5 last_at:2013-09-15 20:10:25
protState CMDs_done
rssi_at_HMLAN1 avg:-80 min:-83 max:-76 lst:-78 cnt:7
Readings:
2013-09-15 19:51:04 Activity alive
2013-09-15 11:47:44 CommandAccepted yes
2013-09-15 11:46:41 PairedTo 0x123ABC
2013-09-15 11:47:42 R-brightFilter set_7
2013-09-15 11:47:42 R-captInInterval set_off
2013-09-15 11:46:40 R-evtFltrNum 1
2013-09-15 11:46:40 R-evtFltrPeriod 1 s
2013-09-15 11:46:39 R-intKeyVisib invisib
2013-09-15 11:46:40 R-ledOnTime 0 s
2013-09-15 11:47:42 R-minInterval set_15
2013-09-15 11:46:39 R-pairCentral 0x123ABC
2013-09-15 11:46:39 R-sabotageMsg on
2013-09-15 13:16:00 RegL_00: 0
2013-09-15 20:10:25 battery ok
2013-09-15 20:10:25 brightness 33
2013-09-15 20:10:25 cover closed
2013-09-15 19:52:45 motion on (to broadcast)
2013-09-15 19:52:45 motionCount 73_next:4-15
2013-09-15 19:52:45 state motion
Helper:
mId 004A
rxType 28
Respwait:
Role:
chn 1
dev 1
Rssi:
At_hmlan1:
avg -80
cnt 7
lst -78
max -76
min -83
Attributes:
actCycle 000:10
actStatus alive
expert 2_full
firmware 1.0
model HM-SEC-MDIR
peerIDs
room Bad
serialNr JEQ0155556
subType motionDetector