Simple Lampensteuerung mit Bewegungsmelder

Begonnen von dogas, 12 Dezember 2018, 22:06:35

Vorheriges Thema - Nächstes Thema

dogas

Hallo,

habe mir einen Xiaomi Mi Home Bewegungsmelder zugelegt und über zigbee2mqtt in meine FHEM Landschaft eingebunden.
Nun wollte ich meine IKEA Lampe im Flur damit steuern. Allerdings läuft das nicht wie erhofft.

Hatte mir folgendes DOIF angelegt:
([0x00158d0002b47d71:"^occupancy:.true$"]) (set 0x000b57fffe49654f brightness 255) DOELSE (set 0x000b57fffe49654f OFF)

Funktionierte erst mal ganz gut. Allerdings kam es zu sehr vielen Events. Ein setzen von event-on-change reading am BM sorgte dafür das es nicht mehr ging.

Also ein Versuch mit folgendem DOIF (Mal mit, mal ohne change-on-reading)
([0x00158d0002b47d71:"motion"] and [0x000b57fffe49654f:"OFF"]) (set 0x000b57fffe49654f brightness 255)
DOELSEIF ([0x00158d0002b47d71:"no_motion"] and [0x000b57fffe49654f:"ON"]) (set 0x000b57fffe49654f OFF)


Der funktioniert nun gar nicht.

Jetzt steh ich da und kann mir nicht erklären was ich falsch mache. Jemand ne Idee?


Hier die Gerätedefinition:
defmod 0x00158d0002b47d71 XiaomiMQTTDevice RTCGQ11LM 0x00158d0002b47d71
attr 0x00158d0002b47d71 IODev MQTT
attr 0x00158d0002b47d71 alias Bewegungssensor Flur EG
attr 0x00158d0002b47d71 devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green
attr 0x00158d0002b47d71 room Flur EG
attr 0x00158d0002b47d71 stateFormat state

defmod 0x000b57fffe49654f XiaomiMQTTDevice LED1623G12 0x000b57fffe49654f
attr 0x000b57fffe49654f IODev MQTT
attr 0x000b57fffe49654f alias Licht Flur EG
attr 0x000b57fffe49654f room Flur EG
attr 0x000b57fffe49654f webCmd on:off:brightness
attr 0x000b57fffe49654f widgetOverride brightness:slider,0,1,255



Otto123

#1
ZitatEin setzen von event-on-change reading am BM sorgte dafür das es nicht mehr ging.
Was genau hast Du getan?

Dir ist klar was Du damit tust? -> [0x00158d0002b47d71:"motion"] and [0x000b57fffe49654f:"OFF"]
Zwei Events können zur gleichen Zeit nicht war werden, zwei Zustände schon ...  :o
Hinweis zur Doku

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

RalfRog

Danke Otto für den Hinweis.
Das Thema DOIF mit einer AND Verknüpfung hat mich zuletzt auch Nerven gekostet (bei einem ähnlichen Problem mit Dämmerungssensor) bis mir langsam dämmerte, dass es nicht um Zustände sondern Ereignisse geht.
Muss mich wohl noch mal mit meiner kruden Umgehungslösung beschäftigen.
FHEM auf Proxmox VM Bookworm (Futro S740) - nanoCUL, HM-MOD-RPI-PCB und MAX!Cube über LAN
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder sowie Shelly 3EM, 1PM, PlugS und IT Schaltsteckdosen

dogas

Zitat von: Otto123 am 12 Dezember 2018, 22:38:14
Was genau hast Du getan?


Einfach bei Bewegungsmelder ein event-on-change-reading hinzugefügt mit .*
Danach ging die Lampe nur aus. Aber nicht mehr an.

dogas

Zitat von: Otto123 am 12 Dezember 2018, 22:38:14

Dir ist klar was Du damit tust? -> [0x00158d0002b47d71:"motion"] and [0x000b57fffe49654f:"OFF"]
Zwei Events können zur gleichen Zeit nicht war werden, zwei Zustände schon ...  :o
Hinweis zur Doku


Okay habs verstanden. Was kann ich tun um den Status der Lampe mit in die IF Anweisung zu bekommen?

KernSani

Hi,

Mein erster Tipp wäre mal, deinen Devices vernünftige Namen zu geben (https://fhem.de/commandref.html#rename).

Wenn das erledigt ist, dann musst du nochmal Syntax von DOIF (die zugegebenermassen sehr komplex ist) lesen. Du fragst Events ab... Es ist ziemlich unwahrscheinlich, dass beide Events (Bewegung erkannt und Lampe geht auf OFF) zum gleichen Zeitpunkt eintreten. Was du willst ist. Wenn Event "motion" und Zustand der Lampe "OFF", dann soll etwas passieren...

nur mal in den Raum geworfen:
[0x00158d0002b47d71:"motion"] and [?0x000b57fffe49654f] eq "OFF"]

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

dogas

Zitat von: KernSani am 12 Dezember 2018, 23:16:39
Hi,

Mein erster Tipp wäre mal, deinen Devices vernünftige Namen zu geben (https://fhem.de/commandref.html#rename).

Wenn das erledigt ist, dann musst du nochmal Syntax von DOIF (die zugegebenermassen sehr komplex ist) lesen. Du fragst Events ab... Es ist ziemlich unwahrscheinlich, dass beide Events (Bewegung erkannt und Lampe geht auf OFF) zum gleichen Zeitpunkt eintreten. Was du willst ist. Wenn Event "motion" und Zustand der Lampe "OFF", dann soll etwas passieren...

nur mal in den Raum geworfen:
[0x00158d0002b47d71:"motion"] and [?0x000b57fffe49654f] eq "OFF"]

Grüße,

Oli

Okay, das hab ich verstanden. Aber das genau das funktioniert halt nicht.
Sobald ich eine and verknüpfung hinzufüge, geht die Lampe nur aus und nicht mehr an.

Otto123

#7
Zitat von: dogas am 12 Dezember 2018, 23:03:26
Einfach bei Bewegungsmelder ein event-on-change-reading hinzugefügt mit .*
Danach ging die Lampe nur aus. Aber nicht mehr an.
Ich kenne Deinen BM nicht, was genau macht und liefert der?
Nur motion wenn sich was bewegt? (Scheint so)
Was macht er wenn sich nichts bewegt? Liefert er dann sowas wie nomotion?

Ansonsten hat KernSani schon einen Ansatz geliefert  :D
Ich denke übrigens KernSani seine Aussage "... ziemlich unwahrscheinlich..." ist nicht richtig, obwohl ich auch immer sehr vorsichtig mit meiner Argumentation bin. Ich glaube wir hatten das sogar schon mal erörtert: Es ist in FHEM vielmehr unmöglich, dass zwei Events zur gleichen Zeit eintreffen.  ;D

Edit: Du hast wirklich den Vorschlag von KernSani probiert? Das ist eine andere Verknüpfung als Deine!!!

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dogas

#8
Habe KernSani's Vorschlag verwendet und angepasst. Funzt soweit. Allerdings schießt der BW noch immer übel viele Events bei Bewegung ab. Bei keiner Bewegung nach einer Minute feuert  er ein no_motion Event. Habe aber jetzt einfach die occupancy genommen und noch eine Abfrage auf die Helligkeit mit Lux gemacht, damit das Licht nicht immer an geht.

Hab mal die Zustände angehangen.(https://uploads.tapatalk-cdn.com/20181213/dc633440b39a37e984be830783390d38.jpg)

Es stellt sich mir nur noch die Frage wie ich die Eventhäufigkeit mindern kann, und das DOIF auch weiter funzt.

Gesendet von meinem LEX720 mit Tapatalk


Otto123

Moin,

ich würde einfach beim Bewegungsmelder ein attr event-on-change-reading .* hinzufügen.

Mach das mal bitte, schau dir die Events im Eventmonitor an und hänge mal bitte die Ausgabe von list 0x00158d0002b47d71hier an. Aber bitte nicht als Link bei Tapatalk sondern in Codetags.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dogas

Scheint jetzt zu funktionierten. Danke für die Hilfe.  :)

dogas

Leider scheint es doch nicht zu funktionieren.
Gestern Abend war noch alles ok, heute Morgen keine Funktion.
In der Log aber auch keinerlei Einträge.  :(

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dogas

Also es scheint wirklich an dem event-on-change-reading zu liegen.
Wenn ich das am BW setze funktioniert die Schaltung nur sporadisch, oder garnicht.

Erklären kann ich es mir nicht wirklich.

Anbei die Definitionen.

defmod sensor_motion_Flur_EG XiaomiMQTTDevice RTCGQ11LM 0x00158d0002b47d71
attr sensor_motion_Flur_EG IODev MQTT
attr sensor_motion_Flur_EG alias Bewegungssensor Flur EG
attr sensor_motion_Flur_EG devStateIcon motion:motion_detector@red off:motion_detector@green no_motion:motion_detector@green
attr sensor_motion_Flur_EG icon people_sensor
attr sensor_motion_Flur_EG room EG,Flur EG
attr sensor_motion_Flur_EG stateFormat state


defmod bulb_licht_flur_eg XiaomiMQTTDevice LED1623G12 0x000b57fffe49654f
attr bulb_licht_flur_eg IODev MQTT
attr bulb_licht_flur_eg alias Licht Flur EG
attr bulb_licht_flur_eg icon light_led
attr bulb_licht_flur_eg room EG,Flur EG
attr bulb_licht_flur_eg webCmd on:off:brightness
attr bulb_licht_flur_eg widgetOverride brightness:slider,0,1,255


defmod doif_licht_flur_eg DOIF ([sensor_motion_Flur_EG:"^occupancy:.true$"] and [?bulb_licht_flur_eg] eq "OFF" and [?sensor_motion_Flur_EG:lux] < 30)\
(set bulb_licht_flur_eg brightness 255) \
DOELSEIF ([sensor_motion_Flur_EG:"^occupancy:.false$"] and [?bulb_licht_flur_eg] eq "ON") \
(set bulb_licht_flur_eg OFF)
attr doif_licht_flur_eg alias Licht bei Bewegung Flur EG
attr doif_licht_flur_eg room X_Logik


Was mir aufgefallen ist, ist das der STATE der Lampe mal off und mal OFF bzw. ON/on ist. Also mal groß und mal klein geschrieben.
Wird bei einem DOIF case sensitive abgefragt?

Otto123

Es wird immer Case Sensitive abgefragt!  :o

Wie gesagt ein list würde auch helfen ... da würde man das sehen.

Aber wenn es so ist wie Du sagst, musst Du die Werte wandeln.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz