Fibaro Motion Sensor - Hue Licht - Bei geringem LUX

Begonnen von simon2207, 17 März 2016, 00:59:54

Vorheriges Thema - Nächstes Thema

simon2207

Hallo Leute,

seit ca. einer Woche beschäftige ich mich nun mit FHEM auf meinem Rasp. - soweit so gut -
ich bekomme es allerdings nicht hin mit den Wikis, Codeschippseln aus zig Threads, und sonstigen
Versuchen meine "erste" Automatisierung ans laufen zu bekommen.

Ich möchte gerne 3 Lampen ( Philips HUE ) einschalten lassen, sobald der Fibaro Motion Sensor
eine Bewegung erkennt und der Lichtwert des Sensor - LUX - geringer 10 ist.

Ich habe es mit Notify - DOIF - Klammern, AT - Sunset - Sun... Zeiten - einfach allem ausprobiert...
keine Chance.

Kann mir jemand einen funktionierenden Code String für die Fhem Zeile geben?

Testbeispiele - noch ohne LUX Wert wie:

define SensorGalerieSceneLicht DOIF ([18:30- 06:30] and [SensorGalerie]eq "open" ) (set LichtGalerieDach1 on-for-timer 30)

gehen nicht - sie werden zwar akzeptiert... aber die Lampen bleiben dunkel...

Grundsätzlich bin ich recht fit was das "einlesen" in solche Thematiken angeht - jedoch empfinde ich die FHEM Wikis / Einsteiger Seiten / in Kombination mit zig Varianten gerade zu Beginn sehr unübersichtlich und nicht nachvollziehbar. Von daher hoffe ich auf jemanden hier im Forum - der diesen Sensor für eine Lichtsteuerung einsetzt und seine Code sharen kann.

Vielen Dank
Simon

jsChris

Hi Simon,

ich empfehle dir erst einmal bei dem Fibaro Sensor ein paar UserReadings einzubauen:

attr SensorGalerie userReadings motion {ReadingsVal("SensorGalerie","state","") =~/^open/? ReadingsVal("SensorGalerie","state","0"):ReadingsVal("SensorGalerie","reportedState","0")}, lux { ReadingsVal("SensorGalerie","state","") =~/^luminance/? ReadingsNum("SensorGalerie","state","0"):ReadingsNum("SensorGalerie","luminance","0") }, celsius { ReadingsVal("SensorGalerie","state","") =~/^temperature/? ReadingsNum("SensorGalerie","state","0"):ReadingsNum("SensorGalerie","temperature","0") }

Dann hast du schon mal die Attribute lux und celsius als Zahlen, was jede weitere Verarbeitung einfacher macht (motion gibt es noch on top dazu).

Jetzt noch ein DOIF:

define SensorGalerieSceneLicht DOIF ([SensorGalerie:motion] eq "open" and [SensorGalerie:lux] < 100) (set LichtGalerieDach1 on-for-timer 30)


Du kannst natürlich noch die Uhrzeit [18:30- 06:30] dazu nehmen, macht für mich keinen Sinn, wenn es doch zu dunkel ist und sich jemand bewegt, darf doch das Licht auch um 17.00 Uhr oder morgens um 8.00 Uhr angehen? 10 Lux ist übrigens praktisch gar kein Licht. Aber kommt halt darauf an, wo dein Sensor steht.

Wichtig ist eventuell auch, dass dein Wakup-Interval nicht zu hoch gesetzt ist und die Assoziationen korrekt eingerichtet sind, schau auch mal hier:
http://www.fhemwiki.de/wiki/Z-Wave

Mach mal ein:
get SensorGalerie association 1
get SensorGalerie association 2
get SensorGalerie association 3

Bei den Fibaros muss auch die assocGroup_3 mit dem Controller verbunden sein, also so etwas sollte da dann bei den Readings stehen:
assocGroup_3    Max 1 Nodes ZWAVE_UZB

Du kannst dem Sensor für jeden seiner Sensoren einen eigenen Report Interval zuweisen.
Schau auch mal hier:
http://forum.fhem.de/index.php?topic=28656.0

Bzw. meine Empfehlung wäre
get SensorGalerie associationGroups
get SensorGalerie association 1
get SensorGalerie association 3
set SensorGalerie associationAdd 3 1
set SensorGalerie wakeupInterval 300 1
set SensorGalerie configTemperatureReportsInterval 300
set SensorGalerie configIlluminationReportsInterval 300
set SensorGalerie configIntervalOfTemperatureMeasuring 300


Es ist immer ein wenig nervig an die batteriebetriebenen Sensoren Befehle zu senden, da sie ja nur nach einem wakeup ansprechbar sind.
Deshalb gehe ich so vor, dass ich die Zuweisung als isWakeUp=1 bei dem Sensor lösche:
set SensorGalerie isWakeUp 0
Dann wichtig in fhem oben in die Befehlszeile eingeben:
shutdown restart
Und jetzt kann man, nachdem man den Sensor mit 3x auf seinen Button drücken aufgeweckt hat, direkt die Befehle senden.
Anschließend dann wieder:
set SensorGalerie isWakeUp 1
shutdown restart

So, mal sehen, ob es jetzt klappt :)
Chris

krikan

Zitat von: jsChris am 17 März 2016, 12:35:53
Es ist immer ein wenig nervig an die batteriebetriebenen Sensoren Befehle zu senden, da sie ja nur nach einem wakeup ansprechbar sind.
Deshalb gehe ich so vor, dass ich die Zuweisung als isWakeUp=1 bei dem Sensor lösche:
set SensorGalerie isWakeUp 0
Dann wichtig in fhem oben in die Befehlszeile eingeben:
shutdown restart
Und jetzt kann man, nachdem man den Sensor mit 3x auf seinen Button drücken aufgeweckt hat, direkt die Befehle senden.
Anschließend dann wieder:
set SensorGalerie isWakeUp 0
shutdown restart
Kleiner Hinweis:
dieses Vorgehen über die Manipulation von Internal (isWakeup) ist nicht der "offizielle" Weg. Internals gehören grds. dem Modul und sollten nicht durch den User manipuliert werden. Es mag zwar jetzt offensichtlich funktionieren, aber Seiteneffekte kann man nie ausschließen.

Daher bitte einfach alle genannten Befehle absetzen und den Sensor durch 3x Knopf drücken aufwecken. Alle gespeicherten Befehle werden dann an den Sensor geschickt. (Siehe Wiki) shutdown restart ist dann auch überflüssig.

Gruß, Christian

scooty

#3
Nicht unbedingt benötigt man die in Deinem Beispiel genannten userReadings
- "lux" oder "celsius", zumindest nicht, wenn man die Werte für vom Sensor gelieferten Readings "luminance" oder "temperature" in einem DOIF verwenden will (Stichwort "Filtern nach Ausdrücken mit Ausgabeformatierung")
- "motion", da die Werte "open"/"close" auch im Reading "reportedState" des Sensors stehen (und bei Bewegungserkennung auch aktualisiert werden)

DOIF ohne userReadings:
define SensorGalerieSceneLicht DOIF ([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieDach1 on-for-timer 30)

Aber bekanntlich führen ja viele Wege nach Rom.  ;)

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

simon2207

Ihr seit KLASSE

Wobei an euren Antworten erkennt man das es dann doch nicht so einfach ist - speziell wenn man den Befehl:

attr SensorGalerie userReadings motion {ReadingsVal("SensorGalerie","state","") =~/^open/? ReadingsVal("SensorGalerie","state","0"):ReadingsVal("SensorGalerie","reportedState","0")}, lux { ReadingsVal("SensorGalerie","state","") =~/^luminance/? ReadingsNum("SensorGalerie","state","0"):ReadingsNum("SensorGalerie","luminance","0") }, celsius { ReadingsVal("SensorGalerie","state","") =~/^temperature/? ReadingsNum("SensorGalerie","state","0"):ReadingsNum("SensorGalerie","temperature","0") }

so sieht - wer soll auf sowas denn kommen... ts ts ...

Aber zurück zum Thema - den obigen Befehl nimmt er - bzgl. der association 1 und 3 diese sind gesetzt: z.B. assocGroup_3 Max 1 Nodes ZWAVE1
Hatte ich bereits gestern selbst hinbekommen - wofür das allerdings ist erschließt sich mir nicht.

Den 2 ten Befehl von jsChris:

define SensorGalerieSceneLicht DOIF ([SensorGalerie:motion] eq "open" and [SensorGalerie:lux] < 100) (set LichtGalerieDach1 on-for-timer 30)

nimmt er auch - und das Licht geht an... Was jedoch wenn ich eine 2te Lampe ebenfalls schalten will?

([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1 on-for-timer 300, LichtGalerieWand2 on-for-timer 300)
([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300)

Beides geht nicht... obwohl im Anfänger "erste Schritte" Wiki folgendes steht:

"Zum Schalten mehrerer Devices kann also verwendet werden

set <device1>,<device2> on
Eine alternative Schreibweise dafür ist

set <device1> on; set <device2> on
Auch eine Kombination ist möglich:

set <device1>,<device2> on; set <device3> off"

Wieder ein Beispiel dafür das die Doku nicht gut ist - bzw. mehr Probleme verursacht als Hilfestellung gibt... Frage mich echt wie man das ohne Forum hinbekommen soll? Jemand noch eine Idee für meine 2te Lampe?

Danke euch!!!



krikan

Zitat von: simon2207 am 17 März 2016, 20:12:20
Wieder ein Beispiel dafür das die Doku nicht gut ist - bzw. mehr Probleme verursacht als Hilfestellung gibt... Frage mich echt wie man das ohne Forum hinbekommen soll? Jemand noch eine Idee für meine 2te Lampe?
Bitte keine vorschnellen Schlußfolgerungen  :) . Die Doku ist vollkommen korrekt. Die Syntax ist in Fhem grundsätzlich so wie von Dir geschrieben. Nur das Helper Modul DOIF hat eine spezielle, abweichende Syntax bei Befehlsverkettungen; die ist auch dokumentiert: http://fhem.de/commandref_DE.html#DOIF_Angaben_im_Ausfuehrungsteil .

Das userReading ist sehr komplex und mMn eigentlich -wie scooty bereits schrieb- überflüssig. Würde es auch nicht so machen und wäre auf den Weg auch nicht gekommen....

Gruß, Christian

simon2207

Mag sein dass das im Wiki alles korrekt ist... aber eigentlich wünschte ich mir das gerade das einbinden von aktueller Hardware / Sensoren /
und die dazugehörigen Befehlsmöglichkeiten "einfacher" umsetzbar sind... aber das ist ein generelles Problem von Open Source - und ich will
keine Grundsatzdiskussion darüber vom Zaun brechen  ;)

Ich habe jetzt mal "deinen" Befehl genommen und die DOIF Variante gelöscht... leicht abgewandelt und um eine 2te Lampe
ergänzt. Sollte doch wohl so passen oder?

([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300)

Komisch nur das mein Sensor Status sich seit einer Stunde nicht mehr aktualisiert... steht permanent auf open - obwohl er in einem dunklen Raum ohne Bewegung hängt...

Bevor ich eure Befehle in die Konsole gehackt habe hat sich der Sensorstatus alle 300 sek. geändert.

Danke
Simon

tom44

Hallo Simon,
ich kann Dich sehr gut verstehen. Ich habe Ende letzten Jahres angefangen und war erst mal erschlagen von der Komplexität der Möglichkeiten.

Sehr gute Einführung für Anfänger: http://fhem.de/Heimautomatisierung-mit-fhem.pdf
Bzw. auf der Hauptseite unter Anfänger: http://www.fhemwiki.de/wiki/Hauptseite

Vorausgesetzt, Du hast die (sehr gute) Einführungen auf der FHEM Seite bereits gelesen und alles eingerichtet würde ich erst mal mit einer Bedingung beginnen, zB. :

define bewegungNotify notify sensor { if ( Value("state") eq "open") {fhem("set licht on")} }
Sobald eine Bewegung erkannt wird (der Sensor ist im Status open) geht das Licht an.
Bei Dir heißt der Fibaro motion sensor SensorGalerie, hier bei mir einfach sensor. Das ganze ist schon ein perl-Klammerausdruck.

Noch einfacher geht das zB. mit einem DOIF Ausdruck:
([23:00-06:00] and [sensor:state] eq "open")(set licht on-for-timer 120)
Hier geht das Licht für 120 Sekunden an, wenn eine Bewegung im Zeitraum zwischen 23 und 6 Uhr (nachts) bemerkt wird.

Viel Erfolg, lass Dich nicht entmutigen und schreibe, wie es dir dabei geht  ;)

LG, Tom




FHEM 17762 auf Raspberry Pi 3 Model B Rev | nanoCUL868, CUL 868 MhZ, Rolladen- Aktoren, Heizung | Z-Wave, FIBARO FGD211 Universal Dimmer 500W, Popp Plug-in Dimmer, FIBARO Wall Plug, Everspring PIR Motion Sensor, FIBARO Door Opening Sensor | Netatmo

tom44

Zitat von: simon2207 am 17 März 2016, 21:09:23
Komisch nur das mein Sensor Status sich seit einer Stunde nicht mehr aktualisiert... steht permanent auf open - obwohl er in einem dunklen Raum ohne Bewegung hängt...
Bevor ich eure Befehle in die Konsole gehackt habe hat sich der Sensorstatus alle 300 sek. geändert.
Ehrlich gesagt, würde ich an die Grundkonfiguration des Fibaro Sensors erst gehen, wenn du erste Erfahrungen mit FHEM gemacht hast. Die Fibaro Geräte sind eigentlich die problemlosesten Geräte, die ich habe .... und wachen in der Grundkonfiguration sofort auf.
Am besten du resettest den Sensor nochmals, bindest ihn wieder in FHEM ein und probierst einen der Codes, die dir hier einige geschickt haben.
FHEM 17762 auf Raspberry Pi 3 Model B Rev | nanoCUL868, CUL 868 MhZ, Rolladen- Aktoren, Heizung | Z-Wave, FIBARO FGD211 Universal Dimmer 500W, Popp Plug-in Dimmer, FIBARO Wall Plug, Everspring PIR Motion Sensor, FIBARO Door Opening Sensor | Netatmo

simon2207

Das sind die Readings die auf diesen Befehl folgen:

([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300)

Wo genau ist mein Problem in dieser Zeile - laut Readings geht es ja nicht...


Readings
Device
SensorGalerie
2016-03-17 21:18:51
cmd_event
SensorGalerie
2016-03-17 21:18:00
cmd_nr
1
2016-03-17 21:18:00
e_SensorGalerie_lux
54
2016-03-17 21:18:51
e_SensorGalerie_reportedState
open
2016-03-17 21:18:51
error
set LichtGalerieWand1: Unknown argument , choose one of off:noArg on:noArg toggle:noArg statusRequest:noArg pct:slider,0,1,100 bri:slider,0,1,254 dimUp:noArg dimDown:noArg satUp:noArg satDown:noArg hueUp:noArg hueDown:noArg ctUp:noArg ctDown:noArg rgb:colorpicker,RGB color:colorpicker,CT,2000,1,6500 ct:colorpicker,CT,154,1,500 hue:colorpicker,HUE,0,1,65535 sat:slider,0,1,254 xy effect:none,colorloop alert:none,select,lselect rename on-till on-for-timer off-till off-for-timer intervals on-till-overnight off-till-overnight blink LichtGalerieWand2 on-for-timer 300: Unknown command LichtGalerieWand2, try help.
2016-03-17 21:18:00
state
cmd_1

Ich habe den Beginner Guide gelesen etc. aber die "einfachen" Lösungen sind es ja nicht die ich möchte ;-)
Was bringt es mir wenn ich 5 Befehle erstellen muss damit eine Lampe an und aus geht unter diesen und jedem Gesichtspunkt. Ich investiere
schon so genug Zeit und Geld in das Thema  - das ich die Möglichkeiten eines solchen Senders auch ausschöpfen möchte - und in meinem Fall
ist es so das ich als Ziel habe das ein ca. 50 Euro Produkt ( Fibaro Motion Sensor ) in der Lage ist mein Licht zu schalten sobald ich im dunkeln
durch die Wohnung gehe...

Danke euch!!!

simon2207

PS: Warum ich auf die Doku schimpfe ist ja nur das solche Sachen wie in der Doku geschrieben nicht gehen...

"Zum Schalten mehrerer Devices kann also verwendet werden

set <device1>,<device2> on
Eine alternative Schreibweise dafür ist

set <device1> on; set <device2> on
Auch eine Kombination ist möglich:

set <device1>,<device2> on; set <device3> off"

([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300)


tom44

Zitat von: simon2207 am 17 März 2016, 21:25:57
error
set LichtGalerieWand1: Unknown argument , choose one of off:noArg on:noArg toggle:noArg statusRequest:noArg pct:slider,0,1,100 bri:slider,0,1,254 dimUp:noArg dimDown:noArg satUp:noArg satDown:noArg hueUp:noArg hueDown:noArg ctUp:noArg ctDown:noArg rgb:colorpicker,RGB color:colorpicker,CT,2000,1,6500 ct:colorpicker,CT,154,1,500 hue:colorpicker,HUE,0,1,65535 sat:slider,0,1,254 xy effect:none,colorloop alert:none,select,lselect rename on-till on-for-timer off-till off-for-timer intervals on-till-overnight off-till-overnight blink LichtGalerieWand2 on-for-timer 300: Unknown command LichtGalerieWand2, try help.
2016-03-17 21:18:00
state
cmd_1
Funktioniert eh alles, der Sensor ist offen und die Luxzahl steht bei 54.
Falsch sind aber (anscheinend, ich bin auch Anfänger) Deine "Lichter". LichtGalerieWand*
Gibt es die wirklich? Die werden als Befehle interpretiert.
FHEM 17762 auf Raspberry Pi 3 Model B Rev | nanoCUL868, CUL 868 MhZ, Rolladen- Aktoren, Heizung | Z-Wave, FIBARO FGD211 Universal Dimmer 500W, Popp Plug-in Dimmer, FIBARO Wall Plug, Everspring PIR Motion Sensor, FIBARO Door Opening Sensor | Netatmo

simon2207

ja die Lichter gibt es wirklich...  ;-)


nehme ich nur eine der beiden Devices geht das Licht ja auch an...
Das ist ja mein Problem...

mw77

([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300)


Ich denke das es an dem on-for-timer Befehl liegt, ist so auch nicht in der Commandref beschrieben, stattdessen würde ich es so versuchen:
([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1,LichtGalerieWand2 on) DOELSE (set LichtGalerieWand1,LichtGalerieWand2 off)
attr <dein DOIF> wait 0:300
HM, HMIP, Shelly, und anderes

krikan

Habe zwar keine Ahnung von DOIF und kann derzeit nicht testen, aber wenn ich die von mir oben verlinkte commandref-Stelle lese, dann sollte es so funktionieren:
([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) ((set LichtGalerieWand1,LichtGalerieWand2 on-for-timer 300))
Oder
([SensorGalerie:reportedState] eq "open" and [SensorGalerie:lux:d] < 100) (set LichtGalerieWand1 on-for-timer 300 ,set LichtGalerieWand2 on-for-timer 300)

Ansonsten auf DOIF- Experten warten..