Fibaro Motion Sensor - Homematic Relais

Begonnen von Pythonf, 27 April 2017, 16:34:39

Vorheriges Thema - Nächstes Thema

Pythonf

Hallo FHEM Freunde,

Ich habe einen Fibaro Motion Sensor den ich verwende um über FHEM zwei Relais von Homematic zu schalten. Mein bisherige Ansatz sieht wie folgt aus (notify):

Motion_Sensor_Flur:alarm_HomeSecurity:.* {
if($EVENT =~ m/^alarm_HomeSecurity..Motion.Detection/){
if(ReadingsVal('Relais01.Flur_Sw_01','timedOn','off') eq 'running' || Value('Relais01.Flur_Sw_01') eq 'off'){
fhem('set Relais01.Flur_Sw_01 on-for-timer 7200');
};
if($hour > 6){
if(ReadingsVal('Relais01.Flur_Sw_02','timedOn','off') eq 'running' || Value('Relais01.Flur_Sw_02') eq 'off'){
fhem('set Relais01.Flur_Sw_02 on-for-timer 7200');
};
};
};

if($EVENT =~ m/^alarm_HomeSecurity..Event.cleared..Motion.Detection/){
if(ReadingsVal('Relais01.Flur_Sw_01','timedOn','off') eq 'running'){
fhem('set Relais01.Flur_Sw_01 on-for-timer 180');
};
if(ReadingsVal('Relais01.Flur_Sw_02','timedOn','off') eq 'running'){
fhem('set Relais01.Flur_Sw_02 on-for-timer 180');
};
};
}


Leider wurde mit folgendem Code mein Gateway schnell überlastet 1%-Regel. Deshalb wollte ich fragen wie ihr die Verwendung eines Motion Sensors mit einem Produkt einer anderen Serie umgesetzt habt. Optisch finde ich sind die Fibaro Motion Sensor denen von Homematic nämlich um Längen überlegen.

Beste Grüße
Fabian

DeeSPe

#1
Bei mir wird bei erkannter Bewegung und Luminance <= 10 das Licht eingeschaltet (ohne Timer). Tageszeiten spielen bei mir keine Rolle, nur das verfügbare Licht.
Sobald keine Bewegung mehr erkannt wird, wird ein temp. at definiert welches das Licht dann ausschaltet.
Bei erneuter Bewegung, solange das Licht noch an ist, wird dann einfach das at gelöscht.
Dies hat sich über Tage/Wochen/Monate als "Best Practice" für mich herausgestellt. Alle anderen Versuche haben mich meist in den Wahnsinn getrieben da immer was Unerwartetes passiert ist.

Gruß
Dan

EDIT: Es werden bei mir aber unterschiedliche Lichtszenen gestartet je nach Zustand des RESIDENTS Device (Nachtlicht, Zu-Bett-Geh-Licht, Nacht-Pinkeln-Geh-Licht).
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pythonf

Und wie löst du das Problem, dass das Licht nicht ausgeschaltet wird, wenn ein Lichtschalter betätigt wird?

DeeSPe

Zitat von: Pythonf am 27 April 2017, 16:43:03
Und wie löst du das Problem, dass das Licht nicht ausgeschaltet wird, wenn ein Lichtschalter betätigt wird?

Warum ist das ein Problem? Dazu sind doch Lichtschalter da!
Evtl. will ich ja trotz Automatik das Licht manuell ausschalten und "an meiner Freundin spielen".  8)
Es gibt zusätzlich noch einen Dummy für jedes Zimmer mit dem ich die Lichtautomatik deaktivieren kann.
Um Funktelegramme zu sparen kannst/solltest Du auch mit entsprechenden FILTER(n) arbeiten. Dann werden auch nur die Devices geschaltet bei denen es nötig ist.
Vor Anlegen des at prüfe ich noch ob das Licht wirklich an ist. Dazu habe ich mir für jeden Raum auch noch ein structure angelegt in dem alle Lichter enthalten sind. Genauso gut könntest Du auch den FILTER in das at mit einbauen und nur ausschalten wenn auch wirklich eingeschaltet ist.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pythonf

Zitat von: DeeSPe am 27 April 2017, 16:49:50
Warum ist das ein Problem? Dazu sind doch Lichtschalter da!

Für den Fall, dass ich mit dem Lichtschalter das Licht einschalte, möchte ich nicht, dass es automatisch wieder ausgeht.
Gelöst hab ich das nun folgendermaßen:
Motion_Sensor_Flur:alarm_HomeSecurity:.* {
if($EVENT =~ m/^alarm_HomeSecurity..Motion.Detection/){
if(ReadingsVal('Relais01.Flur_Sw_01','timedOn','off') eq 'running' || Value('Relais01.Flur_Sw_01') eq 'off'){
fhem('del LichtAutoFlurOff01');
fhem('set Relais01.Flur_Sw_01 on-for-timer 14400');
};
if($hour > 6){
if(ReadingsVal('Relais01.Flur_Sw_02','timedOn','off') eq 'running' || Value('Relais01.Flur_Sw_02') eq 'off'){
fhem('del LichtAutoFlurOff02');
fhem('set Relais01.Flur_Sw_02 on-for-timer 14400');
};
};
};

if($EVENT =~ m/^alarm_HomeSecurity..Event.cleared..Motion.Detection/){
if(ReadingsVal('Relais01.Flur_Sw_01','timedOn','off') eq 'running'){
fhem('define LichtAutoFlurOff01 at +00:01:00 set Relais01.Flur_Sw_01 off');
};
if(ReadingsVal('Relais01.Flur_Sw_02','timedOn','off') eq 'running'){
fhem('define LichtAutoFlurOff02 at +00:01:00 set Relais01.Flur_Sw_02 off');
};
};
}

Danke für die Idee :)

DeeSPe

Zitat von: Pythonf am 27 April 2017, 16:53:52
Für den Fall, dass ich mit dem Lichtschalter das Licht einschalte, möchte ich nicht, dass es automatisch wieder ausgeht.

Dann könntest Du doch mit dem manuellen Einschalten des Lichtschalters den von mir vorgeschlagenen Automatik-dummy ausschalten.

Aber was ist wenn Du einschläfst oder den Raum verlässt (und denkst Du kommst wieder, kommst aber nicht wieder)?
Dann bleibt das Licht immer an!

Gruß
Dan

P.S. Das geht auch einfacher:

if($EVENT =~ m/^alarm_HomeSecurity..Event.cleared..Motion.Detection/){
fhem('define LichtAutoFlurOff at +00:01:00 set Relais01.Flur_Sw_01,Relais01.Flur_Sw_02:FILTER=state!=off off');
};

Das ist die Sache mit den FILTER(n).
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Pythonf

Zitat von: DeeSPe am 27 April 2017, 17:11:52
Aber was ist wenn Du einschläfst oder den Raum verlässt (und denkst Du kommst wieder, kommst aber nicht wieder)?
Dann bleibt das Licht immer an!

Bei mir werden die Lichtschalter quasi nicht mehr verwendet da der Bewegungsmelder alles abdeckt. Hatte zuvor DIY Bewegungsmelder die mir aber nicht mehr gefallen haben, weshalb sich das soweit schon alles eingespielt hat. Das mit den Filtern hab ich erfolgreich eingebaut, danke dafür!

Gruß
Fabian

mando667

Zitat von: DeeSPe am 27 April 2017, 16:49:50
Warum ist das ein Problem? Dazu sind doch Lichtschalter da!
Evtl. will ich ja trotz Automatik das Licht manuell ausschalten und "an meiner Freundin spielen".  8)
Es gibt zusätzlich noch einen Dummy für jedes Zimmer mit dem ich die Lichtautomatik deaktivieren kann.
Um Funktelegramme zu sparen kannst/solltest Du auch mit entsprechenden FILTER(n) arbeiten. Dann werden auch nur die Devices geschaltet bei denen es nötig ist.
Vor Anlegen des at prüfe ich noch ob das Licht wirklich an ist. Dazu habe ich mir für jeden Raum auch noch ein structure angelegt in dem alle Lichter enthalten sind. Genauso gut könntest Du auch den FILTER in das at mit einbauen und nur ausschalten wenn auch wirklich eingeschaltet ist.

Gruß
Dan

Hallo Dan,

genau so eine Schaltung wie von dir umgesetzt suche ich ;)

Könntest du den Auszug aus der config für das DOIF, AT und den Dummy mit Überprüfung über FILTER und STRUCTURE zur Verfügung stellen?


Besten Dank & LG
Julian

DeeSPe

Zitat von: mando667 am 05 August 2017, 10:12:37
Hallo Dan,

genau so eine Schaltung wie von dir umgesetzt suche ich ;)

Könntest du den Auszug aus der config für das DOIF, AT und den Dummy mit Überprüfung über FILTER und STRUCTURE zur Verfügung stellen?


Besten Dank & LG
Julian


Schau mal in diesem Beitrag und suche nach "HomeCMDmotion".
Dort ist zwar beschrieben wie ich das mit "HOMEMODE" umgesetzt habe, aber den Code kannst Du auch (auf Dich angepasst) für ein entsprechendes notify/DOIF benutzen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

mando667

Super, Danke! Ich verwende auch HOMEMODE, das passt perfekt.


Gesendet von iPhone mit Tapatalk