Wie I/O Steuerung angehen? - Bewegungsmelder/Scheinwerfer

Begonnen von spel, 04 Oktober 2016, 21:41:10

Vorheriges Thema - Nächstes Thema

spel

Hallo,

ich mehrere Scheinwerfer und entsprechend verkabelte Bewegungsmelder welche ich sinnvoll, auch in Kombination mit einem Homematic Handsender, schalten möchte.

Dabei sind die Bewegungsmelder an einem Homematic HM-MOD-EM-8 "8-Kanal-Sendemodul" angeschlossen und die Eingänge als Sensoren gesetzt (keine Bewegung = closed / Bewegung = Spannungsabfall = open).
Durch dieses "open" soll dann ein Ausgang eines Homematic HM-MOD-Re-8 "8-Kanal-Empfangsmodul" geschaltet werden.

Nun möchte ich folgende Szenarien (in etwa) abdecken:

Modus Nacht:
ab Sonnenuntergangszeit sollen die Eingänge am Sendemodul (Bewegungsmelder) Ausgänge des Empfangsmodul über Fhem schalten (Scheinwerfer)
hierbei jedoch z. B. Melder1 Scheinwerfer 2+3, Melder2 nur Scheinwerfer 3 usw.; nach 1 Minute sollen die Scheinwerfer wieder abgeschaltet werden.

Modus manuell:
Überlagerung durch manuelles Ein- und Ausschalten von Meldern/Schweinwerfern bzw. Einschalten einer längeren Einschaltzeit

Modus Alarm:
Auswertung der Bewegungsmelder zu z. B. jeder Zeit.

Es gibt noch einige Szenarien mehr jedoch möchte ich mich erkundigen, wie ich das am Besten programmiere?

Was wäre der beste Ansatz? Am liebsten würde ich durch den Handsender ein Flag setzen und aufgrund dessen gibts dann ein notify...

Danke und Gruß

Ellert

Für komplexe Szenarien mit mehreren Bedingungen eignet sich DOIF recht gut, auch bei geringen Perl-Kenntnissen.

spel

Hallo,

okay danke. Ich teste da gerade einiges... Wie löse ich das hier:

Bei mir ist es so, dass unter anderem der gleiche Scheinwerfer durch mehr als einen Bewegungsmelder geschaltet wird.

D. h.: Geht man in den Erfassungsbereich von BM 1, soll der Scheinwerfer schalten und es sollen dann 30 Sek. Einschaltzeit ablaufen... Verlässt man innerhalb der 30 Sek. den Erfassungsbereich, würde der Schweinwerfer ausgehen - bewegt man sich dabei jedoch in den Erfassungsbereich von z. B. BM 2, soll dann erneut die Zeit um 30 Sek. verlängert werden..

Bei mir hängts leider..


Ellert

Formuliere die Bedingung als oder-verknüpfte Events der BM1 und 2.

Prof. Dr. Peter Henning


spel

Hallo,

ich komme hier wieder mit der ursprünglichen Problemstellung her. Das Alarm-Modul ist für mich keine Alternative.

Aufgabe:
mehrere 24V-Bewegungsmelder, welche an einem 8fach-Sendemodul hängen. Fhem soll dann je nach Konfiguration per 8fach-Empfangsmodul entsprechend bis zu 8 Relais (Scheinwerfer) schalten.

Ich hatte es zunächst mit "on-for-timer" im Empfangsmodul gelöst. Irgendwann bei mehrmaligen Auslösungen steht man aber im Dunkeln bzw. scheint das Modul abzuschmieren bzw. zeigt mir der HMLAN-Adapter "Overload" an.

Dann dachte ich ich mache es so: https://213.252.140.23/index.php?topic=39070.0. Letztendlich das Resultat dass ich das Modul zwar nicht Probleme macht, ich aber auch im Dunkeln stehe.

Es ist ein DOIF:

([BM1] eq "open" and [Modus] eq "auto" and [Tageslicht] eq "nein") (set Licht1 on) (set Licht2 on) (set Licht3 on) (set Licht1 off) (set Licht2 off) (set Licht3 off)

mit den Atrributen:
attr di_BM do resetwait
attr di_BM wait 0,0,0,30,30,30 -> bei erneuter Auslösung die ersten 3 ignorieren und dann wiederum 30 Sek. warten.

So halb funktiniert es, aber irgendwie ist es so das zB Licht1 dann trotzdem nicht (bei permanenter Auslösung) anbleibt.


Vielleicht gibts noch nen anderen Weg (klar gibts den) - dieser hier mit der Verzögerung -zentral gesteuert- sah zunächst sehr gut aus...

Danke für eure Hilfe!

Zusammenfassung:

Ein Bewegungsmelder löst aus, per HM-Sendemodul zu Fhem, Fhem schickt daraufhin für Zeit x einen Einschaltbefehl an HM-Empfangsmodul (dies schaltet Relais und Scheinwerfer). Die Scheinwerferzeit soll erst dann nicht mehr um Zeit x verlängert werden, wenn  Bewegungsmelder nicht mehr ausgelöst hat. -> Also wenn sich jmd. dort aufhält soll immer Licht sein! ;-)

Ich habe bemerkt, dass das Licht teiwleise nicht mehr angeht, wenn ich dort lange stehe und oft auslöse... :-(

Prof. Dr. Peter Henning

Nun ja, wer die Alternativen nicht nutzen will ...

LG

pah

spel

Hallo,

wenn ich nicht drumherum komme mache ich es. Ich dachte ich würde es "in einem Befehl/DOIF" hinbekommen. Das Alarm-Modul scheint doch schon sehr mächtig. Zumindest muss ich mich da deutlich einlesen.

Aber danke!

Damian

ZitatSo halb funktiniert es, aber irgendwie ist es so das zB Licht1 dann trotzdem nicht (bei permanenter Auslösung) anbleibt.

resetwait setzt einen laufenden Timer zurück, wenn aber dein erster Timer abgelaufen ist und die Lampe ausgeht, bevor der nächste motion-Trigger kommt, dann ist sie eben aus.

ich würde für jede Lampe ein eigenes Modul definieren und auf das Event und nicht auf den Status triggern.

([BM1:"open"] and [Modus] eq "auto" and [Tageslicht] eq "nein") (set Licht1 on)(set Licht1 off)

wait 0,30


die anderen entsprechend.


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF