HM-Sen-MDIR-O Helligkeitsschaltschwelle von 10 lux nicht möglich

Begonnen von FFHEM, 21 Mai 2013, 21:01:14

Vorheriges Thema - Nächstes Thema

FFHEM

Hallo zusammen,
beim HM-Sen-MDIR-O schaffe ich es trotz Befolgen der Anleitung nicht, dass der BM einen direkt gepeerten Schaltaktor (HW-LC-Sw1-FM) nur bei Dämmerung und Bewegung einschaltet. Stattdessen wird unabhängig von der Helligkeit immer bei Bewegung geschaltet.
Habe das Register brightFilter (Anzahl Mittelwerte, die zur Ermittlung der Helligkeit herangezogen werden) bereits von 7 auf 1 reduziert, so dass die Reaktion darauf auch schnell passiert.
Aber: ich kann den Sensor direkt unter einer hellen Schreibtischlampe plazieren, und er schaltet immer.

Habe schon Werkseinstellungreset (Anlerntaste 5 s drücken, dann noch einmal 5 s drücken) und
die lt. Anleitung richtige Bedienfolge Anlerntaste 5 - 6 s drücken, dann einmal kurz drücken (= 10 lux Schwelle) eingehalten.
Währenddessen ist der Schaltaktor ebenfalls auf Anlernmodus (> 4 s Kontakt von L nach S1, LED blinkt).

Was mache ich wohl falsch, bin Anfänger?
Vielen Dank jedenfalls schon einmal!
Gruß,
Friedhelm
Raspberry Pi 4B, Homematic, Sonoff, Shelly, Worx, Arduino, ESP8266

martinp876

Hallo Friedhelm,

der mdir sendet immer, egal wie Hell es ist. Aber Schalten muss der Aktor (SW1) - und auch die Helligkeit auswerten.
heisst also der mdir schickt die bei Bewegung ein eine Trigger incl 'helligkeit' an den SW1.

Du solltest diesen Wert im Reading "brightness" ablesen koennen, er sollte sich zwischen 0 und 200 bewegen.

So, nun das Verhalten des Schalters, hier ist die condition-table relevant, und auch nur die short Eintraege (long sendet der mdir nicht). Erst einmal hast du 2 Schwellwerte. Evlt brauchst du nur einen, sagen wir du nimmst low und willst bei brightness 50 deine Schwelle legen
set <sw1chan> regSet shCtValLo 50 <mdirchan>
shCtValHi  # ist somit

Nun musst du noch festlegen, wie die Schwelle ausgewertet wird:
set <sw1chan> regSet shCtOn     ltLo <mdirchan>
set <sw1chan> regSet shCtDlyOn  ltLo <mdirchan>
set <sw1chan> regSet shCtOff    ltLo <mdirchan>
set <sw1chan> regSet shCtDlyOff ltLo <mdirchan>

somit akzeptiert der sw1chan nur trigger vom mdirchan wenn der level (brightness in diesem Fall) less-than-Low (ltLo) ist.

Variationen:
- du kannst somit jedem Licht eine eigene helligkeitsschwelle verordnen, auch von gleichen mdir
- du kannst 2 schwellen festlegen und nur schalten, wenn sich die Helligkeit dazwischen bewegt
- du kannst nur das Einschalten oder nur das Ausschalten von der Helligkeit abhaengig machen.

Die Einschaltdauer (oder besser das Verhalten) werden auch im SW1 festgelegt, die anderen Register.

Gruss Martin

FFHEM

Hallo Martin,

vielen Dank, das scheint geklappt zu haben, das Außenlicht geht jetzt tagsüber nicht mehr an. Habe die Schwelle testweise mal höher gesetzt, und dann geht es auch wieder an! ;-)

Nur zur Sicherheit: mein Schalter heißt S1, der Bewegungsmelder PIR1. Die brightness-Werte sehe ich, sehen ok aus.
Wenn ich lediglich den Schwellenwert wie in Deinem Beispiel auf 50 setzen will,
lautet dann der Befehl so?:

set S1 regSet shCtValLo 50 PIR1_chn:01

Den Hi-Wert brauche ich ja nicht, da unter 255 (geht sowieso ja nur bis 200).
(Das ergab zumindest keinen Fehler. Ausprobieren kann ich es erst heute abend).

Muss ich dann noch die anderen Befehle angeben, wenn ja, wie würden sie konkret lauten?

set S1 regSet shCtOn Wert1 PIR1_chn:01
set S1 regSet shCtDlyOn Wert2 PIR1_chn:01
set S1 regSet shCtOff Wert3 PIR1_chn:01
set S1 regSet shCtDlyOff Wert4 PIR1_chn:01

Was bedeuten die Werte 1 - 4 genau?

shCtDlyOn - Verzögerung an
shCtDlyOff - Verzögerung aus
aber die anderen?

Das Problem sind bei mir noch die Begrifflichkeiten Channel, Device, Peer, Peerlist...
Wo könnte ich mehr Infos zu den obigen Registern ansehen, gibt es dazu weitere Doku?

Vielen Dank für die Geduld!
Gruß
Friedhelm
Raspberry Pi 4B, Homematic, Sonoff, Shelly, Worx, Arduino, ESP8266

martinp876

Hallo Friedhelm,

Das Kommando ist prinzipiell richtig, kann aber auch so aussehen - da das Device auch channel 01 beinhaltet

set S1 regSet shCtValLo 50 PIR1

50 sind dann 25%. Wie das auf lux zu mappen ist kann ich nicht sagen.

Die anderen Werte brauchst du auch. Da kommt aber keine Zahl rein, sondern eine Anweisung. Beispiel

set S1 regSet shCtOn ltLo PIR1
shCtOn bedeuted
sh: wenn ein Trigger typ 'short' kommt (long gibt es beim PRI1 nicht)
Ct: Condition table
On: Gültig, wenn S1 im Zustand 'On' ist

Also S1 ist 'on' und der PRI1 schickt einen Trigger mit Brightness, z.B. 30.
ltLo: Less Than Low, also kleiner shCtValLo

Die FW prüft, ob der gelieferte Wert (30) kleiner ist als der Vergleichswert. Der ist 50 im Beispiel. Die Bedingung ist wahr , daher ist der Trigger gültig und wird ausgeführt.  Was zu tun ist steht in den anderen Registern.

Du legst also fest, mit welchem Wert wann verglichen wird und wie die Bedingung ist.

Wichtig sind die Vergleiche
shCtOn und shCtOff
Die beiden Anderen werden kaum oder garnicht genutzt, da du wahrscheinlich ohne delay arbeitest.

Hi und Lo hat nur bedingt eine bedeutung  - es sind einfach 2 vergleichswerte.
Du kannst also sagen, dass du nur schalten willst, wenn der wert
kleiner ist als low
groesser ist als low
kleiner ist als high
groesser ist als high
und noch 2 andere.

Gehen wir davon aus, dass
- kein Delay eingestellt ist
- dein Licht angehen soll wenn Bewegung ist, es dunkel ist und das Licht aus ist
- dein Licht anbleiben soll wenn Bewegung ist, es dunkel ist und das Licht schon an ist

also
Trigger gültig wenn Licht aus ist und der Wert des PRI kleiner als 50
set S1 regSet shCtOff ltLo PIR1
Trigger gültig wenn Licht an ist und der Wert des PRI kleiner als 50
set S1 regSet shCtOn ltLo PIR1

der Vollständigkeit halber sollte man dies auch setzen.
set S1 regSet shCtDlyOn ltLo PIR1
set S1 regSet shCtDlyOff Wert4 PIR1


ZitatshCtDlyOn - Verzögerung an
shCtDlyOff - Verzögerung aus
nicht ganz. Wenn der S1 gerade eine ausschalt (oder einschalt) Verzögerung abarbeitet und der Trigger geanu jetzt kommt, dann wird dessen Gültigkeit geprüft.

Die Ausschaltverzögerung setzt du mit
shOffDly oder lgOffDly (je Peer!!!)
und einschaltverzögerung mit
shOnDly           lgOnDly          

Es ist egal, welcher Peer den Schalter in den Zustand OnDly versetzt, die Frage ist, ob der Schalter in dem Zustand ist.

Also noch einmal:

s1 ist immer in einem Zustand. Bei einem Schalter sind dies nur
on,off,dlyOn und dlyOff.
Jeder Trigger kann den schalter in einen anderen Zustand versetzen, und damit das Licht ein/ausschalten. Trigger koennen von allen seinen Peers kommen. Ob und wie sie verarbeitet werden legst du mit den Registern fest

Ich hoffe es ist zu verstehen, wenn du es in Ruhe durchliest.

Gruss, Martin


FFHEM

Hallo Martin,

vielen vielen Dank für Deine ausführlichen Anweisungen.
Werde mir alles in Ruhe zu Gemüte führen.

Du hast mir bereits sehr viel Zeit mit Rumdoktern erspart!!!!

Ich hatte immer im MDIR nach den entsprechenden Registern gesucht - und natürlich nichts gefunden. Und wenn man nicht genau weiß, wie die Register angesprochen werden...

Nochmals toll, vielen Dank für Deine Geduld!

Gruß
Friedhelm

Raspberry Pi 4B, Homematic, Sonoff, Shelly, Worx, Arduino, ESP8266