Ich möchte meine Gartenbeleuchtung zeitverzögert schalten.
Im Keller ist ein HM 4 fach HutschienenRelais
Im Garten ein HM 8 fach Relais
Im Garten mehrere HM Bewegungsmelder
Der Garten soll nicht ständig Strom haben
Also erst im Keller Relais schalten sobald Bewegung im Garten
dann nach ca 15 Sekunden die Lampe im Garten an
In meinem Testcode schalte ich erst die LED_50 für 5 Sekunden bei Bewegung ein
dann Pause dann soll das Ganze auf das 1. Notify reagieren und die Lampe erneut anschalten
######## Bewegungsmelder Garten
################################################
define motion_Garten CUL_HM 379D47
attr motion_Garten IODev hmusb
attr motion_Garten actCycle 000:10
attr motion_Garten actStatus alive
attr motion_Garten autoReadReg 4_reqStatus
attr motion_Garten expert 2_raw
attr motion_Garten firmware 1.6
attr motion_Garten model HM-Sen-MDIR-O
attr motion_Garten peerIDs 00000000,
attr motion_Garten room CUL_HM,Garten
attr motion_Garten serialNr MEQ0247521
attr motion_Garten subType motionDetector
define FileLog_motion_Garten FileLog ./log/motion_Garten-%Y.log motion_Garten
attr FileLog_motion_Garten logtype text
attr FileLog_motion_Garten room CUL_HM
### Bewegungsmelder Garten schaltet Gartenlicht ein
# das hier geht
#define Garten_Relais_an notify motion_Garten:motion set Gartenlichtrelais on-for-timer 240
define Garten_Relais_an notify motion_Garten:motion {fhem ("set LED_50 on-for-timer 5") if (ReadingsVal("motion_Garten","brightness",0) < 234)}
attr Garten_Relais_an room Garten
# das hier geht :
#define Garten_Alarm_an notify motion_Garten:motion sleep 20;set LED.* on-for-timer 180
define Garten_Alarm_an notify Garten_Relais_an:.* sleep 20;set LED_50 on-for-timer 10
attr Garten_Alarm_an room Garten
auf Garten_Relais_An:.* müsste er doch reagieren ?!
Zitat von: Franz Tenbrock am 21 Juni 2017, 18:49:00
auf Garten_Relais_An:.* müsste er doch reagieren ?!
Gibt es denn Events?
Zitatauf Garten_Relais_An:.* müsste er doch reagieren ?!
Nö ;)
Sieh dir den Code mal an, sleep funktioniert wahrscheinlich nicht wenn kein Befehl davor steht, also notify .... set irgendwas; sleep 10; set next, das funktioniert. Ich muss aber dazu sagen das ich sleep ohne vorangestellten Befehl noch nie probiert habe.
Laut commandref:
Zitatdefine a3 at +*00:05 set Windsensor 1w_measure;; sleep 2 quiet;; get Windsensor 1w_temp
Leerzeichen??
;) :)
VG
Frank
das sleep geht
siehe code wo ich ja geschrieben habe was geht
ich habe Schritt für Schritt getestet
also Bewegungsmelder installiert und getestet
dann Lampe ein aus
dann schaltet Bewegungsmelder Lampe ein aus
dann schaltet Bewegungsmelder Lampe zeitverzögert
dann Versuch das 1. notify zu triggern , Bewegungsmelder schaltet Lapme über notify ein, dann sollte das 2. notify die Lampe erneut einschalten
mit motion_Garten:motion aus dem 1.notify wird auch die Lampe beim 2. geschaltet
aber das 2. notify soll ja auf Garten_Relais_an reagieren
und dann verzögert die Lampen einschalten
Nochmal die Frage: generiert dein notify Garten_Relais_An Events im Event Monitor?
Hab kurz bei mir getestet: ein notify erstellt kein Event. Dann ist ein notify auf einem notify nicht möglich
Zitat von: amenomade am 21 Juni 2017, 22:52:57
Nochmal die Frage: generiert dein notify Garten_Relais_An Events im Event Monitor?
Hab kurz bei mir getestet: ein notify erstellt kein Event. Dann ist ein notify auf einem notify nicht möglich
Genau das habe ich gerade auch getestet. Ich kann genau das bestätigen.
Gruß Otto
Hallo
hatten Besuch, nun frei Bahn
also gerade im Log nachgeschaut und dann das Ganze im Event
kein Event
017-06-21 23:07:00 CUL_HM HM_Garten CMDs_pending
2017-06-21 23:07:00 CUL_HM LED_50 set_on-for-timer 5
2017-06-21 23:07:00 CUL_HM motion_Garten brightness: 38
2017-06-21 23:07:00 CUL_HM motion_Garten motion: on (to hmusb)
2017-06-21 23:07:00 CUL_HM motion_Garten motionCount: 44_next:30s
2017-06-21 23:07:00 CUL_HM motion_Garten motion
2017-06-21 23:07:00 CUL_HM motion_Garten trigDst_424242: noConfig
2017-06-21 23:07:00 CUL_HM motion_Garten trigger_cnt: 44
2017-06-21 23:07:01 CUL_HM HM_Garten CMDs_done
2017-06-21 23:07:01 CUL_HM LED_50 deviceMsg: on (to hmusb)
2017-06-21 23:07:01 CUL_HM LED_50 level: 100
2017-06-21 23:07:01 CUL_HM LED_50 pct: 100
2017-06-21 23:07:01 CUL_HM LED_50 on
2017-06-21 23:07:01 CUL_HM LED_50 timedOn: running
2017-06-21 23:07:09 CUL_HM HM_Garten CMDs_done
2017-06-21 23:07:09 CUL_HM LED_50 deviceMsg: off (to hmusb)
2017-06-21 23:07:09 CUL_HM LED_50 level: 0
2017-06-21 23:07:09 CUL_HM LED_50 pct: 0
2017-06-21 23:07:09 CUL_HM LED_50 off
2017-06-21 23:07:09 CUL_HM LED_50 timedOn: off
dann geht nicht weiter...
das 1.Notify Garten_Alarm_an geht ja
das 2. notify Garten_Relais_an
soll jaauf das 1.reagieren, also wenn 1 auslöst soll auch das 2. auslösen
hab ich ncoh nciht gemacht daher ...
man könnte das zweite notify einfach als makro stehen lassen und mit dem trigger Kommando diese notify triggern.
Gruß Otto
trigger Kommando
oder 1. notify erzeugt noch ein dummy?
hab aber keine Erfahrung damit !
aber verstanden hast du was ich da machen will ?
Problem ist auhc das das 2.notify erst ca 15 Sekunden nach der Ausführung des 1. laufen darf
so ungefähr. Aber ein notify erzeugt nun mal keinen event so dass man zwei notify quasi nicht in Reihe schalten kann.
Du könntest am Ende des ersten notify das zweite triggern.
Oder Du setzt am Ende des ersten einen Dummy und triggerst das zweite notify mit diesem dummy.
das liest sich immer so einfach :( >:(
hab gerade das gefunden
define FensterbewegungErkannt notify (HebeSchiebeTuer|Seitentuer|Kuechenfenster|Haustuer):open
ich könnte also schauen ob das Relais auch an is, ( imVersuhcsaufbau hier die LED_50 ) wenn ja dann sleep etc...
das nennt man trigger ?
,muss aber nun ins Bett morgen ruft die echte Arbeit....
das geht auch nicht
define Garten_Alarm_an notify (LED_50):on;;sleep 10;;set LED_50 on-for-timer10
grr zu spät
oder mit DOIF:
define diGarten DOIF ([motion_Garten:"motion"] and [?motion_Garten:brightness] < 234)
(set Gartenlichtrelais on-for-timer 240)
(set LED.* on-for-timer 180)
attr diGarten wait 0,15
attr diGarten do always
Zitat von: Franz Tenbrock am 21 Juni 2017, 23:42:48
das nennt man trigger ?
Moin,
nein, trigger ist ein Kommando -> https://fhem.de/commandref_DE.html#notify
Das notify hält dabei einfach eine Serie von Befehlen und wird gestartet durch seinen eigenen Namen und das trigger Kommando.
Man kann auch Makro dazu sagen.
Gruß Otto
und mit ein wenig lesen und googeln hab ich eine Lösung die scheinbar funktioniert
defmod ist mein Freund
viele Wege führen nach Rom
################################################
######## Bewegungsmelder Garten
################################################
define motion_Garten CUL_HM 379D47
attr motion_Garten IODev hmusb
attr motion_Garten actCycle 000:10
attr motion_Garten actStatus alive
attr motion_Garten autoReadReg 4_reqStatus
attr motion_Garten expert 2_raw
attr motion_Garten firmware 1.6
attr motion_Garten model HM-Sen-MDIR-O
attr motion_Garten peerIDs 00000000,
attr motion_Garten room CUL_HM,Garten
attr motion_Garten serialNr MEQ0247521
attr motion_Garten subType motionDetector
define FileLog_motion_Garten FileLog ./log/motion_Garten-%Y.log motion_Garten
attr FileLog_motion_Garten logtype text
attr FileLog_motion_Garten room CUL_HM
### Bewegungsmelder Garten schaltet Relais im Keller ein
define Garten_Motion_Licht_an notify motion_Garten:motion set Gartenlichtrelais on-for-timer 240 ;; defmod Garten_Licht_an at +00:00:20 set LED_50 on-for-timer 120
attr Garten_Motion_Licht_an room Garten
so nun muss ich noch schauen das das nur im dunkeln schaltet und das es an bleibt wenn bewegung bleibt
so hat er im dunkeln geschaltet, ok Name anders !
define Garten_Relais_an notify motion_Garten:motion {fhem ("set LED_50 on-for-timer 5") if (ReadingsVal("motion_Garten","brightness",0) < 234)}
sollte dann so aussehen, um es zu testen gerade hohe brightness
und das funktioniert auch
define Garten_Motion_Licht_an notify motion_Garten:motion {fhem ("set Gartenlichtrelais on-for-timer 120") if (ReadingsVal("motion_Garten","brightness",0) < 234)} ;; defmod Garten_Licht_an at +00:00:20 set LED_50 on-for-timer 120
so jetzt 3 von den Dingern montieren dann noch 2 Strahler und ne Durchsage an die Störer das sie bei mir nichts zu suchen haben
ach so Foto fehlt noch ...
https://jumpespjump.blogspot.de/2015/09/how-i-hacked-my-ip-camera-and-found.html
eine fertige Kamera nehmen die dann ein Backdoor hat ????
Hab einen Bewegngsmelder von Homematik für aussen , der schafft aber gerade 6 Meter
habt ihr welche die besser sind und die man bei FHEM integrieren kann,
esp ? HM ?
Zitat von: Franz Tenbrock am 22 Juni 2017, 12:58:24
Hab einen Bewegngsmelder von Homematik für aussen , der schafft aber gerade 6 Meter
habt ihr welche die besser sind und die man bei FHEM integrieren kann,
esp ? HM ?
Das wird mit PIR generell schwierig weil der Winkel und die erfasste Fläche zu groß wird. Ich weiß nicht ob es was mit Radar gibt, was vielleicht besser ist? Ansonsten mehrere .. Oder Lichtschranken ...
hab di selbst zusammengebaut,
scheint Unterschiede zu geben
erst mal Nr 4 anschrauben...
wollte ne foscam C1 nehmen, die ist aber beim IPcam Modul echt zickig...
abermein Smart home wird immer besser.
Nachteil von "defmod": da wird eine Änderung in der Config gemacht => ein Frageszeichen kommt dann nach "Save config" in der Weboberfläsche.
Hast Du mit DOIF probiert?
nein kann ich aber noch machen
ok
schwere Materie, mächtiges tool, ewig lange Erklärungen in der commandref
das Beispiel hier trifft ja wohl einen Teil meines Problems
Im Grunde genommen müssen ja beide Schalter sowol das Relais im Keller als auch das Relais für die Lampe on bleiben solange sich jemand draussen bewegt. da ich nun 2 Bewegunsmelder habe die dafür sorgen solle das das Licht an bleibt ....
aber erst mal einfach mit einem Bewegungssensor.
Die Nachbildung eines on-for-timers lässt sich wie folgt realisieren:
define di_on_for_timer ([detector:"motion"])
(set light on)
(set light off)
attr di_on_for_timer do resetwait
attr di_on_for_timer wait 0,30
Hiermit wird das Licht bei Bewegung eingeschaltet. Dabei wird, solange es brennt, bei jeder Bewegung die Ausschaltzeit neu auf 30 Sekunden gesetzt, "set light on" wird dabei nicht unnötig wiederholt.
Die Beispiele stellen nur eine kleine Auswahl von möglichen Problemlösungen dar. Da sowohl in der Bedingung (hier ist die komplette Perl-Syntax möglich), als auch im Ausführungsteil, keine Einschränkungen gegeben sind, sind die Möglichkeiten zur Lösung eigener Probleme mit Hilfe des Moduls sehr vielfältig.
so nun den Code den du mir gegeben hast
define diGarten DOIF ([motion_Garten:"motion"] and [?motion_Garten:brightness] < 234)
(set Gartenlichtrelais on-for-timer 240)
(set LED.* on-for-timer 180)
attr diGarten wait 0,15
attr diGarten do always
motion_Garten:"motion"
"motion" ist das Event es bewegt sich was
[?motion_Garten:brightness] < 234 ## Helligkeit kleiner 234
Werden Status, Readings, Internals und Zeitangaben in der Bedingung mit einem Fragezeichen eingeleitet, triggern sie nicht.
es bewegt sich was und es ist nicht heller als 234
muss dann nicht ein > Zeichen vor die Helligkeit es soll doch nur angehen wenn es dunkel ist
(set Gartenlichtrelais on-for-timer 240) ####schaltet Relais im Keller für 240 Sekunden ein
(set LED_50 on-for-timer 180) ###### schaltet LED_50 im Garten ein
attr diGarten wait 0,15 ## führt den 1.setBefehl sofort aus und wartet mit dem 2. set Befehl 15 Sekunden
attr diGarten do always
Hab ich es vom Prinzip richtig verstanden ?
sehr umfangreiches Tool
man o man
ZitatHab ich es vom Prinzip richtig verstanden ?
ja :)
ok funktioniert
und die fhem.cfg kann ich auch wieder editieren ( ist zwar verpönt .. )
etwas Feintuning brauchts noch..
Helligkeit zb jusitieren , Bewegungsmelder optimal ausrichten zb
was soll das hier im log?
eval: Terasse_Motion_Licht_an: warning in condition c01
2017.06.25 08:40:11 3: CUL_HM set Gartenlichtrelais on-for-timer 120
2017.06.25 08:40:26 3: CUL_HM set LED_50 on-for-timer 19
2017.06.25 08:42:16 1: PERL WARNING: Argument "off" isn't numeric in numeric lt (<) at (eval 8802) line 1.
2017.06.25 08:42:16 3: eval: Garten_Motion_Licht_an: warning in condition c01
2017.06.25 08:42:16 3: CUL_HM set Gartenlichtrelais on-for-timer 40
2017.06.25 08:42:31 3: CUL_HM set LED_50 on-for-timer 10
2017.06.25 08:45:24 1: PERL WARNING: Argument "off" isn't numeric in numeric lt (<) at (eval 8868) line 1.
2017.06.25 08:45:24 3: eval: Terasse_Motion_Licht_an: warning in condition c01
2017.06.25 08:45:24 3: CUL_HM set Gartenlichtrelais on-for-timer 120
2017.06.25 08:45:39 3: CUL_HM set LED_50 on-for-timer 19
die Definition die aktuell ist
################################################
######## Bewegungsmelder Garten
################################################
define motion_Garten CUL_HM 379D47
attr motion_Garten IODev hmusb
attr motion_Garten actCycle 000:10
attr motion_Garten actStatus alive
attr motion_Garten autoReadReg 4_reqStatus
attr motion_Garten expert 2_raw
attr motion_Garten firmware 1.6
attr motion_Garten model HM-Sen-MDIR-O
attr motion_Garten peerIDs 00000000,
attr motion_Garten room CUL_HM,Garten
attr motion_Garten serialNr MEQ0247521
attr motion_Garten subType motionDetector
define FileLog_motion_Garten FileLog ./log/motion_Garten-%Y.log motion_Garten
attr FileLog_motion_Garten logtype text
attr FileLog_motion_Garten room CUL_HM
### Bewegungsmelder Garten schaltet Relais im Keller ein
define Garten_Motion_Licht_an DOIF ([motion_Garten:motion] and [?motion_Garten:motion] < 234)\
(set Gartenlichtrelais on-for-timer 40)\
(set LED_50 on-for-timer 10)
attr Garten_Motion_Licht_an do always
attr Garten_Motion_Licht_an room Garten
attr Garten_Motion_Licht_an wait 0,15
################################################
######## Bewegungsmelder Terasse
################################################
define motion_Terasse CUL_HM 379F4D
attr motion_Terasse IODev hmusb
attr motion_Terasse actCycle 000:10
attr motion_Terasse actStatus alive
attr motion_Terasse autoReadReg 4_reqStatus
attr motion_Terasse expert 2_raw
attr motion_Terasse firmware 1.6
attr motion_Terasse model HM-Sen-MDIR-O
attr motion_Terasse peerIDs 00000000,
attr motion_Terasse room CUL_HM,Garten
attr motion_Terasse serialNr MEQ0247377
attr motion_Terasse subType motionDetector
define FileLog_motion_Terasse FileLog ./log/motion_Terasse-%Y.log motion_Terasse
attr FileLog_motion_Terasse logtype text
attr FileLog_motion_Terasse room CUL_HM
### Bewegungsmelder Garten schaltet Relais im Keller ein
define Terasse_Motion_Licht_an DOIF ([motion_Terasse:motion] and [?motion_Terasse:motion] < 234)\
(set Gartenlichtrelais on-for-timer 120)\
(set LED_50 on-for-timer 19)
attr Terasse_Motion_Licht_an do always
attr Terasse_Motion_Licht_an room Garten
attr Terasse_Motion_Licht_an wait 0,15
ZitatPERL WARNING: Argument "off" isn't numeric in numeric lt (<) at (eval 8802) line 1.
2017.06.25 08:42:16 3: eval: Garten_Motion_Licht_an: warning in condition c01
Der Interpreter sagte es dir:
übersetzt: in der ersten Bedingung vergleichst du "off" mit einer Zahl mit Hilfe des "kleiner"-Zeichens - das geht nicht.
[?motion_Garten:motion] < 234)
meinst du diese Bedingung ?, da geht es ja darum nur zu schalten wenn es dunkel ist ( natürlich mit anderem Wert )
aber müsste da nicht so was stehen wie:
[?motion_Garten:brightness] < 234)
war es doch andersrum
>
tja
wenn man so was nicht öfter macht
muss die Bewegungsmelder noch anders platzieren, bei Wind stören scheinbar die Bäume,lösen aus obwohl kein Tier oder Mensch in der Nähe ist, aber im Ansatz läuft es ja schon mal ganz gut
und wie immer super Unterstützung
Danke !!!!!
Zitat[?motion_Garten:motion] < 234)
meinst du diese Bedingung ?, da geht es ja darum nur zu schalten wenn es dunkel ist ( natürlich mit anderem Wert )
Dunkelheit wird nicht durch "motion" Reading gemeldet, sondern durch brightness... Klar wäre
[?motion_Garten:brightness] < 234)
viel besser ... wie ich es hieroben eigentlich geschrieben hatte...!
schit
Asche auf mein Haupt
da ist was bei copy paste daneben gegangen...
kam mir aber dann auch selbst schon komisch vor
Problem ist aber das aus irgendeinem Grunde das Ding ständig an und aus geht.
hab das Relais im Keller rausgenommen, ist ständig an
also nur Reaktion auf motion dann direkt Lampe an
bekomme das Ding aber nicht so plaziert das es sauber schaltet,
geht bei dem Wind ständig an, wenn das in der Nacht passiert sind die Nachbarn sauer
das kann noch lustig werden
so hmlan nur noch in den overload >:(
erst mal aufräumen
was merkwürdig ist das mit doif ich das Problem hatte das der sensor ständig die Lampe aktivierte ..
jetzt auf notify wieder umgestellt wie am Anfang aber ohne defmod,
bei beiden direktes Ansprechen der LED_50 also ohne Relais im Keller
und bei notify istnun Ruhe, geht nur an wenn ich vorbeigehe
mal sehen
Zitatwas merkwürdig ist das mit doif ich das Problem hatte das der sensor ständig die Lampe aktivierte ..
Ja klar. War das nicht gewünscht? Ein on-for-timer sollte bei jeder Bewegung verlängert werden, oder?
ja
ist schon ok wenn ich mich im Bereich bewege
aber das ging fortlaufend so, die Lampe ging an und aus obwohl niemand in dem Bereich war
und der hmlan war ständig im overload
ob es nun an dem doif lag ist eher akademischer Natur, kann es ja am nächsten WE noch mal ausprobieren,
so ging es aber nicht, unsere armen Nachbarn, oder alles abschalten
ein weiteres Problem ist das die Reichweite der HM Bewegungsmelder nicht alzu groß ist
also noch einiges an Arbeit bis es so läuft wie gewünscht
Frage ist auch
der HM8 Empfänger sollte eigentlich nicht immer aktiv sein, wollte den Garten Licht Stromkreis eigentlich vom Keller aus ausschalten
dh wenn Gartenlichtrelais an wird der HM8 aktiviert also mit Strom versorgt, ca 15 Sekunden später ist er in FHEM
ev macht das ja auch Probleme
wie immer alles nicht so trivial wenn man nicht vom Fach ist