Schönen guten Abend,
ich bin nun seit ca. 2 Wochen am tüfteln und komme einfach nicht wirklich weiter. Ich möchte gerne meine indirekte LED-Beleuchtung im Flur über einen Bewegungsmelder schalten. Die Beleuchtung schaltet sich abends um 18.30 Uhr selbstständig ein und um 22 Uhr wieder aus. Der Bewegungsmelder soll dann von 22 Uhr bis 7 Uhr morgens das Licht schalten (damit der Weg zur Toilette gut beleuchtet ist). Nun zum eigentlichen Problem.
Ich habe den vom Bewegungsmelder gesendeten Code via EventMonitor ausgelesen. Ich erhalte die Codes ID: 27 und Unit:7. Habe den Melder dann durch...
define BWM pilight_switch arctech_switch_old 27 7
in FHEM eingelernt. Durch einen einfachen DOIF dann auf das Licht welches er schalten soll angeknüpft...
define Bewegung_Flur DOIF ([BWM:"on"]) (set LED_Flur on) DOELSE (set LED_Flur off)
Das funktionierte ca. 2 mal, danach bleibt mir laut FHEM der Melder auf "on" stehen. Licht schaltet danach nicht mehr. Ich weiss nicht mehr weiter an der Stelle. Im EventMonitor bekomme ich bei einer erkannten Bewegung das Signal "on" angezeigt und auch dass er mir mein DOIF ausführt. Jedoch schaltet das Licht nicht mehr und wie schon gesagt, der Melder bleibt auf "on" stehen (so zeigt es mir das Glühlampen Symbol an).
Woran könnte das liegen? Und wenn das dann ohne Probleme funktioniert, was muss ich tun um den Melder nur im Zeitraum 22Uhr bis 7Uhr "scharf" zu stellen?
Ich hoffe es kann mir hier jemand helfen.
Bitte seid mir nicht böse , sollte es dafür eine ganz einfache Lösung geben und ich bin einfach nur zu beschränkt.
Liebe Grüße
Hi,
mein Flurlichtschalter sieht so aus:
define di_Flurlicht DOIF ([PIR1:"motion:.on"] and ([?Tageslicht] eq "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
Ich habe einen dummy den ich mit sunrise_el setze, Du kannst aber auch eine feste Zeit nehmen ([PIR1:"motion:.on"] and [22:00-07:00])
Warum Dein BW Melder nicht tut weiß ich leider nicht, meiner geht nach 120 sec wieder auf off. Deswegen sind die Zeiten mit nachtriggern so gewählt.
Gruß Otto
Hallo Otto123,
erstmal Danke für Deine Antwort. Habe nun den BWM soweit, dass er nicht nach einer gewissen Zeit auf "on" hängen bleibt. Habe jetzt ein DOIF angelegt. Funktioniert soweit auch prima, er erkennt eine Bewegung und schaltet mir die Lampe. Jedoch nur im System selbst... Also er schaltet und das Symbol springt auf "on". Jedoch wird dieses "on" Signal nicht an meine Funkschaltsteckdose (welche für die Beleuchtung zuständig ist) weitergeleitet.
Das hatte ich bisher noch nicht. Habe den DOIF-Command mehrere male kontrolliert und kann keinen Fehler erkennen. Er sieht wie folgt aus:
define Bewegung_Flur DOIF ([BWM:"on"]) (set LED_Flur on) DOELSE (set LED_Flur off)
Wie schon erwähnt.. Er erkennt die Bewegung; das DOIF wird ausgeführt - Lampensymbol springt auf "on".
Woran kann das nun liegen?
Ich hoffe ich bin damit im richtigen Forenbereich. Hatte das Thema schon in "Anfängerfragen" gestellt und kam jedoch nicht so richtig auf einen grünen Zweig.
Grüße
Es könnte an der Funk-Reichweite liegen, eventuell hilft es die Wiederholung der Funksequenz zu erhöhen (sendCount).
Meine Zeitschaltung funktioniert sonst ohne Probleme.. also Funkreichweiten technisch kann keine schwierigkeiten bereiten. Die Funkschaltsteckdose reagiert auf manuelles schalten via FHEM ohne Probleme... bzw. wie schon gesagt über Zeitschaltung.
Oder verstehe ich Dich da gerade falsch?
Was sind denn TYPE und IODEV von LED_Flur ?
Grüße Markus
IODev : Pilight_121
TYPE : pilight_switch
schade, dann hab ich wohl nicht die Lösung für Dich :'( Beim CUL gibt es schon mal das Problem, dass er noch empfängt u. schon zu senden versucht. Läuft dann auf das selbe Symptom raus. Abhilfe schafft dann ein kurzes sleep for dem set. Aber wer weiß, vielleicht hat pilight ja ein ähnliches Problem ?
Kein Problem, ich bin dankbar für jegliche Unterstüzung. Nur durch Fehlersuche lernt man weiter^^.
Habe jetzt mal just 4 fun die Zeit am Melder selbst hochgeschraubt und nun scheint es zu funktionieren. Ich bin mal gespannt für wie lange. *Daumen drücken*
Ich setzte den Thread vorerst mal auf gelöst. Sollte noch etwas auftreten, melde ich mich.
Liebe Grüße und ein schönes Wochenende!
Ein Frohes neues Jahr euch allen.
Ich habe jetza auch ein bischen gebastelt und habe mir im Flur ein Motion Sensor der bei Bewegung bei mir im Zimmer eine Led einschaltet gebastelt.
Das alles läuft über ein NodeMCU der an FHEM angbunden ist und meine Led Steuert.
Nun würde ich aber gerne das bewegungen Nur in der Zeit von 20:00 - 05:00 Uhr wargenommen werden und die led einschalten.
Tagsüber Brauche ich das nicht.
Ich kriege es aber einfach nicht heraus wie ich es in FHEM definieren kann.
Zitat von: Otto123 am 09 März 2017, 18:59:17
Hi,
....
Du kannst aber auch eine feste Zeit nehmen ([PIR1:"motion:.on"] and [22:00-07:00])
Gruß Otto
Das würde mir gefallen. Aber wie kann ich das eintragen??
Danke
Hast Du schon in der Commandref unter DOIF nachgesehen?
Schon aber kriege das alles noch nicht ganz umgesetzt.
Das ist alles noch neues Terrain für mich.
Bin froh das ich das so schon mal hinbekommen hab.
Lese mir das mal aber durch mal sehen.
Danke
So jetzt hab ich es, glaube ich, mal sehen wenn die Uhrzeit soweit ist ob es auch klappt.
Hi Zander1st,
define <Selbstvergebener Name> DOIF ([PIR1:"motion:.on"] and [22:00-07:00]) (<mach was Code>)
Beantwortet das Diene Frage?
Gruß Otto
Hi sorry für die extrem späte antwort. Aber für ein Danke ich habe es zum laufen bekommen ist es nie zu spät. Thx
Hallo,
ich wollte mal den Thread noch mal auffrischen. Ich bäuchte noch mal Hilfe von euch.
Da mein kleiner Pir Sensor flöten gegangen ist habe ich mir ein neuen geholt und soweit eingebunden was auch ganz gut funktioniert.
Leider klappt aber nicht das er nur von 20:00 -2:30 funktioniert.
Hier mal meine Config vielleicht seht ihr etwas was ich nicht sehe. Danke
Das wäre meine Led Kette
define ESPEasy_LED ESPEasy 192.168.xxx.x xx ESPBridge LED
attr ESPEasy_LED IODev ESPBridge
attr ESPEasy_LED Interval 300
attr ESPEasy_LED devStateIcon on on:ios-on-green:off off:ios-off:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr ESPEasy_LED eventMap /gpio 4 on:on/gpio 4 off:off/status gpio 4:check/
attr ESPEasy_LED group ESPEasy Device
attr ESPEasy_LED icon light_led_stripe
define PC_LED DOIF ([IT_V3_25778001:"on"]) (set ESPEasy_LED off) (set ESPEasy_LED on)
attr PC_LED do resetwait
attr PC_LED room Flur
attr PC_LED wait 0,3
define LEDPC_aus DOIF ([IT_V3_25778001:"on"] and [02:30-20:00]) (set ESPEasy_LED on)
attr ESPEasy_LED presenceCheck 1
attr ESPEasy_LED readingSwitchText 1
attr ESPEasy_LED room ESPEasy,PC
attr ESPEasy_LED setState 3
attr ESPEasy_LED stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"GPIO4","")}
attr ESPEasy_LED webCmd on:off
On und OFF sind bei mir umgekehr.
[02:30-20:00] != 20:00 -2:30
Danke für die schnelle Antwort leider schaltet er immer noch und bei den Readings bekomme ich jetzt diese ERROR Meldung.
So sieht jetzt meines DOIF aus
([IT_V3_25778001:"on"] and [2:30-20:00]!=20:00-2:30) (set ESPEasy_LED on)
READINGS
Device IT_V3_25778001 2019-01-20 10:46:50
cmd 0 2019-01-20 10:45:40
e_IT_V3_25778001_events off 2019-01-20 10:46:50
error condition c01: syntax error, line 1, near "20:" 2019-01-20 10:46:50
mode enabled 2019-01-20 10:45:40
state initialize 2019-01-20 10:45:40
timer_01_c01 21.01.2019 02:30:00 2019-01-20 10:45:40
timer_02_c01 20.01.2019 20:00:00
Das war kein Code das war eine Aussage :o
Du willst
ZitatLeider klappt aber nicht das er nur von 20:00 -2:30 funktioniert.
Schreibst aber im Code
[2:30-20:00]
::)
Zitat von: Otto123 am 20 Januar 2019, 12:16:39
Das war kein Code das war eine Aussage :o
Du willstSchreibst aber im Code [2:30-20:00]
::)
Ich glaube, das versteht er nicht.
Du definierst:
[IT_V3_25778001:"on"] and [2:30-20:00]
willst offenbar aber:
[IT_V3_25778001:"on"] and
[20:00-2:30]Das Eine ist das Gegenteil vom Anderen.
;D
Naja ich verstehe das hier auch nicht -> On und OFF sind bei mir umgekehr.
Deswegen wollte ich nicht einfach den Code korrigieren. ::)
Der Code sieht nämlich auch nicht nach umgekehrt aus? Also vielleicht denkt er negiert?
Zitat von: Otto123 am 20 Januar 2019, 13:20:10
;D
Naja ich verstehe das hier auch nicht -> On und OFF sind bei mir umgekehr.
Damit meinte ich wenn ich on button drücke das die LED aus geht und bei off geht die LED an .
Deswegen habe ich (set ESPEasy_LED on) damit sie ausbleibt.
Zitat von: Damian am 20 Januar 2019, 13:04:18
Ich glaube, das versteht er nicht.
Du definierst:
[IT_V3_25778001:"on"] and [2:30-20:00]
willst offenbar aber:
[IT_V3_25778001:"on"] and [20:00-2:30]
Das Eine ist das Gegenteil vom Anderen.
Richtig
ich habe beide Varianten ausprobiert
[IT_V3_25778001:"on"] and [2:30-20:00] (set ESPEasy_LED on) ->damit dachte ich das ich die led in der Zeit von 2:30-20:00 deaktiviere wen der Motion Sensor Bewegung erkennt. Passiert aber leider nichts.
Genauso wie mit diesem Befehl:
[IT_V3_25778001:"on"] and [20:00-02:30] (set ESPEasy_LED on oder off)->LED geht immer an
Einzige Variante die ich noch nicht probiert habe ist FHEM nach den einträgen und abspeichern mal neu zu starten.
Hoffe konnte mich jetzt verständlicher ausdrücken.
Den befehl habe ich so verstanden
wenn [ motiondetector : "on"] und [ die Uhrzeit zwischen 20:00und02:30 liegt ](dann schalte ESPEasy_LED ein) alles außelhalb dieser Zeit bleibt die ESPEasy_LED aus
Ist das Richtig so??
Oder gibt es eine andere Option den Motion sensor in der Zeit zu ignorieren oder stumm zu schalten?
ZitatDen befehl habe ich so verstanden
wenn [ motiondetector : "on"] und [ die Uhrzeit zwischen 20:00und02:30 liegt ](dann schalte ESPEasy_LED ein) alles außelhalb dieser Zeit bleibt die ESPEasy_LED aus
Ist das Richtig so??
Präziser:
Wenn motiondetector einen Event erzeugt in dem das Wort on vorkommt! Und es zwischen 20:00 und 02:30 ist, dann schalte on (was aber nach Deiner Aussage off ist ???)
Gruß Otto
Also verstanden habe ich das und er schaltet auch aber leider den ganzen Tag und nicht nur in der gewünschten Zeit.
Würde es denn gehen fhem zu sagen er soll den Status des Sensors nur in der von mir gewünschten Zeit abrufen?
Hi,
das kann eigentlich nicht sein. Kannst Du bitte nochmal ein aktuelles list von Deinem DOIF posten?
Bist sicher, dass nicht ein anderes Gerät auch schaltet?
Die Bedingung [motiondetector:"on"] and [20:00-02:30]
wird nur wahr wenn beide Teilbedingungen wahr werden. Also außerhalb der Zeit passiert nichts, nicht von einem DOIF mit dieser Bedingung. Das glaub ich nicht.
Ich weiß immer noch nicht, ob Du mit dem on und off durcheinander kommst!
Mach das list am Besten einmal innerhalb der Zeit und einmal außerhalb der Zeit.
Gruß Otto
Internals:
CFGFN
DEF ([IT_V3_25778001:"on"] and [02:00-20:30]) (set IT_V3_25778001 off)
MODEL FHEM
NAME LEDPC_aus
NR 64251
NTFY_ORDER 50-LEDPC_aus
STATE cmd_2
TYPE DOIF
READINGS:
2019-01-21 18:06:12 Device IT_V3_25778001
2019-01-21 18:06:12 cmd 2
2019-01-21 18:06:12 cmd_event IT_V3_25778001
2019-01-21 18:06:12 cmd_nr 2
2019-01-21 18:06:12 e_IT_V3_25778001_events off
2019-01-20 14:29:37 mode enabled
2019-01-21 18:06:12 state cmd_2
2019-01-20 20:30:00 timer_01_c01 21.01.2019 02:00:00
2019-01-20 20:30:00 timer_02_c01 21.01.2019 20:30:00
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('IT_V3_25778001',$hash,'on',1) and ::DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
0 IT_V3_25778001
all IT_V3_25778001
do:
0:
0 set IT_V3_25778001 off
1:
helper:
event off
globalinit 1
last_timer 2
sleeptimer -1
timerdev IT_V3_25778001
timerevent off
triggerDev IT_V3_25778001
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: IT_V3_25778001
state: cmd_2
timerevents:
off
timereventsState:
state: off
triggerEvents:
off
triggerEventsState:
state: off
internals:
interval:
0 -1
1 0
intervalfunc:
intervaltimer:
itimer:
localtime:
0 1548032400
1 1548099000
readings:
realtime:
0 02:00:00
1 20:30:00
time:
0 02:00:00
1 20:30:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
0 0 1
trigger:
all IT_V3_25778001
triggertime:
1548099000:
localtime 1548099000
hash:
uiState:
uiTable:
Attributes:
room PC
Internals:
CFGFN
DEF ([IT_V3_25778001:"on"]) (set ESPEasy_LED on) (set ESPEasy_LED off)
MODEL FHEM
NAME PC_LED
NR 64188
NTFY_ORDER 50-PC_LED
STATE cmd_1
TYPE DOIF
READINGS:
2019-01-21 18:06:12 Device IT_V3_25778001
2019-01-21 18:05:56 cmd 1.2
2019-01-21 18:05:56 cmd_event IT_V3_25778001
2019-01-21 18:05:56 cmd_nr 1
2019-01-21 18:05:56 cmd_seqnr 2
2019-01-21 18:06:12 e_IT_V3_25778001_events off
2019-01-20 13:21:11 mode enabled
2019-01-21 18:05:56 state cmd_1
2019-01-21 18:05:56 wait_timer no timer
Regex:
attr:
cmdState:
wait:
0:
0
3
waitdel:
condition:
0 ::EventDoIf('IT_V3_25778001',$hash,'on',1)
devices:
0 IT_V3_25778001
all IT_V3_25778001
do:
0:
0 set ESPEasy_LED on
1 set ESPEasy_LED off
1:
helper:
event off
globalinit 1
last_timer 0
sleepdevice IT_V3_25778001
sleepsubtimer -1
sleeptimer -1
timerdev IT_V3_25778001
timerevent on
triggerDev IT_V3_25778001
DOIF_eventas:
cmd_nr: 1
cmd_seqnr: 2
cmd_event: IT_V3_25778001
state: cmd_1
timerevents:
on
off
timereventsState:
on
state: off
triggerEvents:
off
triggerEventsState:
state: off
internals:
itimer:
readings:
trigger:
all IT_V3_25778001
uiState:
uiTable:
Attributes:
do resetwait
room PC
wait 0,3
Hi,
das mit den Codetags konntest Du doch schon mal. ;D
Also das erste DOIF reagiert auf IT_V3_25778001 und setzt sofort auf off wenn der auf on geht.
Aktuell in dem list hatte er nicht geschaltet, er steht auf cmd_2 was es nicht gibt. Ist aber klar weil ein off Event sofort wieder kam.
Das zweite DOIF reagiert auch auf IT_V3_25778001 und schaltet ESPEasy_LED auf on und nach drei Sekunden wieder auf off
Sorry, aber verstehen tue ich den Sinn / das Konstrukt nicht. Und ich sehe auch kaum Zusammenhang zu Deiner bisherigen Fragestellung? :-[
Gruß Otto
Also werde ich mich erst mal darum bemühen das mit den on/off richtig einzustellen.
Das ist meine momentane Relais Funktion.
eventMap /gpio 4 on:off/gpio 4 off:on/status gpio 4:check/
Danke erst mal für die Unterstützung
Kannst Du nochmal erklären, was die beiden DOIFs aus deiner Sicht machen sollten?
Zitat von: Otto123 am 21 Januar 2019, 21:48:29
Kannst Du nochmal erklären, was die beiden DOIFs aus deiner Sicht machen sollten?
Nee das möchte ich jetzt nicht :-[ (schäm)
Danke für den Denkanstoß und die Geduld.
DEF ([IT_V3_25778001:"on"] and [20:00-02:30]) (set ESPEasy_LED on) (set ESPEasy_LED off)
Habe die doifs zusammengefasst. Jetzt geht es.
Punkt 20 Uhr ist der Bewegungsmelder aktiv geworden
;D
So verstehe ich das DOIF. Alles gut wenn es jetzt geht.
Gruß Otto