Re: Rule für Bewegungsmelder Schaltung ?
Verfasst: 9. Jan 2020 21:32
Moin,
Erst einmal Danke für Deine Hilfe. Bevor ich noch verwirrter werde, habe ich das ganze mal versucht zu Papier zu bringen so wie ich es verstanden habe. Vielleicht hilft das ja meinem eigenen Verständnis etwas auf die Sprünge...

Also "dummy.items" ist einfach nur so da als so ne Art Softwareschalter... und besteht nur aus einer Zeile:
Die beiden "*_offset.rules" fragen zu einer bestimmten Zeit das dummy.items ab und senden das Kommando: (0)
Hier mein Beispiel für das "sechzehn_offset.rules"
Wobei ich noch nicht weiß *wie* man mit "Time cron" Zeiten von - bis definiert. Hier in meinen Beispiel heißt das ja nur in "aller Sekunde / Minute von 16:00 Uhr", oder?
Gut, "zeitschalt_*.rules" fragt dann die beiden "*_offset.rules" nach OffsetBewegungsmelder.state 0 oder 1 ab und schaltet dann die Lampen. Hier mein Beispiel für "zeitschalt_16.rules" für "lampe_1"
Ist das erstmal vom Ansatz her richtig oder bin ich völlig auf dem Holzweg? Weil, funktionieren tut es hier noch nicht. 
Danke schon mal für die Geduld...
Erst einmal Danke für Deine Hilfe. Bevor ich noch verwirrter werde, habe ich das ganze mal versucht zu Papier zu bringen so wie ich es verstanden habe. Vielleicht hilft das ja meinem eigenen Verständnis etwas auf die Sprünge...


Also "dummy.items" ist einfach nur so da als so ne Art Softwareschalter... und besteht nur aus einer Zeile:
Code: Alles auswählen
Number OffsetBewegungsmelder
Hier mein Beispiel für das "sechzehn_offset.rules"
Code: Alles auswählen
rule "Offset ab 16 Uhr"
when
Time cron "* * 16 ? * MON-FRI" //Zeitschaltpunkt MO - FRI 16:00 Uhr
then
OffsetBewegungsmelder.sendCommand(0)
end
Gut, "zeitschalt_*.rules" fragt dann die beiden "*_offset.rules" nach OffsetBewegungsmelder.state 0 oder 1 ab und schaltet dann die Lampen. Hier mein Beispiel für "zeitschalt_16.rules" für "lampe_1"
Code: Alles auswählen
// globale Variablen zu Beginn der *.rules Datei definieren!
var Timer tBewegung = null // Timervariable global definieren
rule "Bewegungsmelder mit timeout"
when
Item bw_melder received command ON // Bewegung wurde erkannt
then
if(OffsetBewegungsmelder.state == 0){ //Offsetitem wird hier abgefragt, in dem Fall Schaltzustand 0
tBewegung.cancel // zunächst eventuell laufende Timer entfernen
if(lampe_1.state != OFF) lampe_1.sendCommand(OFF) // Licht ausschalten, falls vor 4 Uhr noch an war.
}
if(OffsetBewegungsmelder.state == 1){ //Offsetitem wird hier abgefragt, in dem Fall Schaltzustand 1
tBewegung.cancel // zunächst eventuell laufende Timer entfernen
if(lampe_1.state != ON) lampe_1.sendCommand(ON) // Licht einschalten, falls noch nicht an.
tBewegung = createTimer(now.plusMinutes(60), [ | // Timer anlegen
if(lampe_1.state != OFF) lampe_1.sendCommand(OFF) // Licht ausschalten, falls noch nicht aus
tBewegung = null // Timervariable deinitialisieren
])
}
end

Danke schon mal für die Geduld...