Auslösen nach Wartezeit

Begonnen von dennis_n, 29 November 2015, 14:26:38

Vorheriges Thema - Nächstes Thema

dennis_n

Hi,

ich möchte gerne folgendes realisieren:
Wenn der Bewegungsmelder im Flur angeht, sollen sich die HUE Lampen sehr hell einschalten und dann nach 30 Sekunden auf ein angenehmes Licht wechseln.
Dies soll aber nur ausgeführt werden, wenn die HUE Lampen aus sind und der Homestatus auf abwesend steht.

Dazu habe ich mir folgendes DOIF gebastelt:
([ZWave_SENSOR_BINARY_15] eq "open" and [21:00-07:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause) (set Hue_Lampen scene Sonnenuntergang)

Das funktioniert soweit.
Jetzt habe ich aber das Problem, dass wenn ich den Homestatus von home auf abwesend ändere, ich nochmal am Bewegungsmelder vorbei muss.
Daher würde ich es gerne so machen, dass das DOIF erst aktiviert werden soll, wenn sich vorm Bewegungsmelder 1 Minute nichts getan hat.

In der comandref bei DOIF habe ich folgendes gefunden:
define di_lamp DOIF ([BM:state:sec] < 5)(set lamp on-for-timer 300)
attr di_lamp do always


Bin aber leider nicht sicher, wie ich das auf meine Anwendung nutzen kann.
Kann mir bitte jemand helfen?

Danke

Gruss
Dennis


dennis_n

Könnte das so passen?
Demnach funktioniert das DOIF nur, wenn seit dem letzten update des state Readings 30 Sekunden vergangen sind, richtig?



([ZWave_SENSOR_BINARY_15] eq "open" and
[ZWave_SENSOR_BINARY_15:state:sec] > 30 and
[21:00-07:00] and [Hue_Lampen] eq "Aus")
(set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause)
(set Hue_Lampen scene Sonnenuntergang)


Gruss
Dennis

Damian

Zitat von: dennis_n am 29 November 2015, 18:43:21
Könnte das so passen?
Demnach funktioniert das DOIF nur, wenn seit dem letzten update des state Readings 30 Sekunden vergangen sind, richtig?



([ZWave_SENSOR_BINARY_15] eq "open" and
[ZWave_SENSOR_BINARY_15:state:sec] > 30 and
[21:00-07:00] and [Hue_Lampen] eq "Aus")
(set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause)
(set Hue_Lampen scene Sonnenuntergang)


Gruss
Dennis

[ZWave_SENSOR_BINARY_15:state:sec] ist Null wenn ZWave_SENSOR_BINARY_15 triggert.

Gruß

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

dennis_n

#3
Hi,

also muss ich
[ZWave_SENSOR_BINARY_15:state:sec] < 30 schreiben?

Gruss
Dennis

Update: Ich glaube ich hab's
@Damian

Kannst Du mir bestätigen, dass dies so richtig ist?
([homestatus] eq "unterwegs" and [ZWave_SENSOR_BINARY_15] eq "open" and [ZWave_SENSOR_BINARY_15:state:sec] < 60 and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause) (set Hue_Lampen scene Sonnenuntergang)

Damian

Zitat von: dennis_n am 29 November 2015, 19:40:34
Hi,

also muss ich
[ZWave_SENSOR_BINARY_15:state:sec] < 30 schreiben?

Gruss
Dennis

Update: Ich glaube ich hab's
@Damian

Kannst Du mir bestätigen, dass dies so richtig ist?
([homestatus] eq "unterwegs" and [ZWave_SENSOR_BINARY_15] eq "open" and [ZWave_SENSOR_BINARY_15:state:sec] < 60 and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause) (set Hue_Lampen scene Sonnenuntergang)

Das bedeutet: Es wird geschaltet, wenn irgendein Trigger innerhalb von 60 Sekunden nach der letzten Bewegung triggert. Insbesondere ZWave_SENSOR_BINARY_15 selbst.

Gruß

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

dennis_n

Hmm ok, das ist nicht das was ich will. Ich will, dass das DOIF erst "scharf" schaltet, wenn sich das state der Bewegungsmelders mehr als 60 Sekunden nicht geändert hat.
Kann ich das in Form einer Abfrage im DOIF überhaupt realisieren?

Gruss
Dennis

Damian

Zitat von: dennis_n am 29 November 2015, 20:33:27
Hmm ok, das ist nicht das was ich will. Ich will, dass das DOIF erst "scharf" schaltet, wenn sich das state der Bewegungsmelders mehr als 60 Sekunden nicht geändert hat.
Kann ich das in Form einer Abfrage im DOIF überhaupt realisieren?

Gruss
Dennis

In der Commandref zu DOIF ist ein Beispiel dazu:

ZitatAnwendungsbeispiel: Meldung beim Ausbleiben eines Events

define di_push DOIF ([Tempsensor])(set pushmsg "sensor failed again")
attr di_push wait 1800
attr di_push do resetwait

Gruß

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

dennis_n

Ok, aber dann habe ich folgendes Problem:
Hier mein aktuelles DOIF:
([homestatus] eq "unterwegs" and [ZWave_SENSOR_BINARY_15] eq "open" and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause) (set Hue_Lampen scene Sonnenuntergang)
Zusätzlich habe ich als Attribute folgendes definiert:
attr di_Timer do resetwait und atrr di_Timer 0,30

Sprich er macht bei Bewegung direkt die erste Szene der HUE Lampen, wartet 30 Sekunden und schaltet dann auf die nächste Szene.

Wie bringe ich jetzt aber die 60 Sekunden Wartezeit für den Sensor da noch mit rein?
Einfach [ZWave_SENSOR_BINARY_15] und eine 60 vor die 0 bei den Attributen?


Danke

Gruss
Dennis

Damian

#8
Zitat von: dennis_n am 29 November 2015, 20:47:58
Ok, aber dann habe ich folgendes Problem:
Hier mein aktuelles DOIF:
([homestatus] eq "unterwegs" and [ZWave_SENSOR_BINARY_15] eq "open" and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen, set Sonos_Kueche Speak 60 de Willkommen zu Hause) (set Hue_Lampen scene Sonnenuntergang)
Zusätzlich habe ich als Attribute folgendes definiert:
attr di_Timer do resetwait und atrr di_Timer 0,30

Sprich er macht bei Bewegung direkt die erste Szene der HUE Lampen, wartet 30 Sekunden und schaltet dann auf die nächste Szene.

Wie bringe ich jetzt aber die 60 Sekunden Wartezeit für den Sensor da noch mit rein?
Einfach [ZWave_SENSOR_BINARY_15] und eine 60 vor die 0 bei den Attributen?


Danke

Gruss
Dennis

Am besten du entkoppelst die Sache durch zwei DOIF-Definitionen.

di_BM DOIF  ([ZWave_SENSOR_BINARY_15] eq "open")
attr di_BM wait 60
attr di_BM do resetwait
attr di_BM state nomotion


und dann im zweiten DOIF:

([homestatus] eq "unterwegs" and [di_BM:?nomotion] and [17:00-01:00] and [Hue_Lampen] eq "Aus")...

definieren. [di_BM:?nomotion] triggert, wenn nach der ersten Bewegung 60 Sekunden lang keine erneute Bewegung registriert wird.

Edit: Ich habe den Trigger angepasst, damit er eindeutig ist.

Gruß

Damian

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

dennis_n

Hi,

habe es jetzt so angelegt. Allerdings greift nach 60 Sekunden das di_Sensor2 immer. Egal ob ich vorher noch vor dem Melder herumgelaufen bin oder nicht. Sobald mein homestatus auf abwesend steht gehen nach 60 Sekunden die HUE Lichter an.

Mein di_Sensor1
([ZWave_SENSOR_BINARY_15] eq "open")
mit do resetwait und wait 60

Mein di_Sensor2
([homestatus] eq "unterwegs" and [di_Sensor1:?] and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen) (set Hue_Lampen scene Sonnenuntergang)
mit do resetwait und wait 0,30

Gruss
Dennis

Damian

Zitat von: dennis_n am 29 November 2015, 21:38:21
Hi,

habe es jetzt so angelegt. Allerdings greift nach 60 Sekunden das di_Sensor2 immer. Egal ob ich vorher noch vor dem Melder herumgelaufen bin oder nicht. Sobald mein homestatus auf abwesend steht gehen nach 60 Sekunden die HUE Lichter an.

Mein di_Sensor1
([ZWave_SENSOR_BINARY_15] eq "open")
mit do resetwait und wait 60

Mein di_Sensor2
([homestatus] eq "unterwegs" and [di_Sensor1:?] and [17:00-01:00] and [Hue_Lampen] eq "Aus") (set Hue_Lampen scene Willkommen) (set Hue_Lampen scene Sonnenuntergang)
mit do resetwait und wait 0,30

Gruss
Dennis

ja, der Trigger war nicht eindeutig, ich habe es gerade im vorherigen Post noch mal angepasst. Suche nach Stichwort nomotion (kommt mehrmals vor).

Gruß

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

dennis_n

Hi,

aber der Trigger motion/nomotion scheint ein HM trigger zu sein richtig?
Ich habe einen Fibaro Sensor. Bei mir steht im state kein nomotion.

Bei mir steht im state des Fibaro Motion Sensor "open" und "close".
Muss ich dann darauf anpassen, oder?

Gruss
Dennis

Damian

Zitat von: dennis_n am 29 November 2015, 21:52:54
Hi,

aber der Trigger motion/nomotion scheint ein HM trigger zu sein richtig?
Ich habe einen Fibaro Sensor. Bei mir steht im state kein nomotion.

Bei mir steht im state des Fibaro Motion Sensor "open" und "close".
Muss ich dann darauf anpassen, oder?

Gruss
Dennis

Nein. Ich habe mit attr di_BM state nomotion den Zustand des ersten DOIF-Moduls definiert. Es ist egal was man sich da definiert, Hauptsache es ist eindeutig. Ich hätte auch "keine_bewegung" nehmen können.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dennis_n

Das funktioniert leider nicht, da sich das state des di_Sensor1 nicht ändert. Es bleibt immer auf state nomotion stehen.

Gruss
Dennis

Damian

Zitat von: dennis_n am 29 November 2015, 22:04:46
Das funktioniert leider nicht, da sich das state des di_Sensor1 nicht ändert. Es bleibt immer auf state nomotion stehen.

Gruss
Dennis

Klar ändert sich der Zustand nicht (es gibt ja nur den einen), es wird ja nicht der Zustand abgefragt, sondern nur der Trigger mit dem Fragezeichen (Auswertung von Events findest du in der Commandref zu DOIF)


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