Die Nachbildung eines on-for-timers erweitern

Begonnen von tomspatz, 17 Februar 2017, 18:38:05

Vorheriges Thema - Nächstes Thema

tomspatz

aus der Commandref:
Zitatdefine di_on_for_timer ([detector:"motion"])
(set light on)
(set light off)
attr di_on_for_timer do resetwait
attr di_on_for_timer wait 0,30

Hiermit wird das Licht bei Bewegung eingeschaltet. Dabei wird, solange es brennt, bei jeder Bewegung die Ausschaltzeit neu auf 30 Sekunden gesetzt, "set light on" wird dabei nicht unnötig wiederholt.
Das funktioniert doch würde ich es gerne um einen Schalter erweitern damit dieser Timer nur losgeht wenn man das Licht vorher eingeschaltet hat
define di_on_for_timer ([?Schalter] eq "on" and [detector:"motion"])
(set light on)
(set light off)
attr di_on_for_timer do resetwait
attr di_on_for_timer wait 0,30

doch sobald Motion erkannt wird geht der Timer los und schaltet das Licht ab.
Könnt Emir das jemand erklären bitte.
LG
Tom

KernSani

Du meinst der Timer läuft los, unabhängig davon ob Schalter on oder off ist?
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

tomspatz

Ich glaube das es eher an dem Trigger des Fibaro MotionSensors liegt. Dieser liefert:
ZWave MotionSensor_01 alarm: HomeSecurity: Motion Detection - Unknown Location

bei Bewegung, und wenn er nach 30 Sekunden nichts mehr erkennt :
HomeSecurity: Event cleared: Motion Detection - Unknown Location, arg 0108
Dabei hat er auch noch eine tote Zeit in der er nicht nochmals "spricht" wenn wieder Bewegung erkannt wird.
Somit habe ich bei permanenter Bewegung im Raum ja nur einen Trigger.
Vielleicht probiere ich es andersrum.

tomspatz

es ist zum heulen:
defmod LichtWCAutomatik DOIF ([?LichtWC] eq "on" and [MotionSensor_01:alarm] =~ "0108") (set LichtWC on) (set LichtWC off)
attr LichtWCAutomatik do resetwait
attr LichtWCAutomatik room Steuerung-Licht
attr LichtWCAutomatik wait 0,45

Sobald das DOIF auf "0108" triggert schlägt der Timer zu und schaltet das licht ab.

Für alle Vorschläge dankbar.
LG
Tom

Damian


Du musst schon genauer formulieren, was du möchtest:
Zitataus der Commandref:Das funktioniert doch würde ich es gerne um einen Schalter erweitern damit dieser Timer nur losgeht wenn man das Licht vorher eingeschaltet hat

und

Zitatdoch sobald Motion erkannt wird geht der Timer los und schaltet das Licht ab.

widerspricht sich nicht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tomspatz

so nochmals, es funktioniert einigermaßen so:
defmod LichtWCAutomatik DOIF ([?LichtWC] eq "on" and [MotionSensor_01:alarm]) (set LichtWC on) (set LichtWC off)
attr LichtWCAutomatik do resetwait
attr LichtWCAutomatik room Steuerung-Licht
attr LichtWCAutomatik wait 0,60


Wobei das echt eine Krücke ist. Die Zielsetzung ist ja das Licht auszuschalten wenn keine Bewegung stattfindet.
Das der Sensor aber seine Eigenheiten hat geht das nur mit dieser großen Zeitspanne, wobei durch die 15 Sekunden Totzeit des MotionSensors passiert es bei dauerhafter Bewegung auf der Toilette  ;D
Das der Trigger zu spät kommt und dann hat der Timer wieder zugeschlagen.
Anders noch falls das Licht von "Außen" eingeschaltet wird und es niemanden auf der Toilette trifft, wird es nie abgeschaltet.

Das es damit so kompliziert wird habe ich nicht gedacht.
LG
Tom


Per

Zitat von: tomspatz am 17 Februar 2017, 20:39:52Anders noch falls das Licht von "Außen" eingeschaltet wird und es niemanden auf der Toilette trifft, wird es nie abgeschaltet.
Ich versuche, alle ein Device betreffenen Eingänge in einem DOIF zusammenzufassen. Dann kann sowas nicht passieren.