Hauptmenü

cmdState Verständnisproblem

Begonnen von Esteban, 10 März 2016, 23:20:31

Vorheriges Thema - Nächstes Thema

Esteban

Moin! :)

Ich hab da noch ein Verständnisproblem mit cmdState.

Mein Bewegungsmelder der Auffahrt habe ich mal an eine Lampe im Flur zwecks test gekoppelt. Ich lese aus, ob Motion ein "on*" von sich gibt und es dunkel ist und dann schalte ich für 5 Minuten die Lampe im Flur an, dann geht sie aus.

define test1 DOIF ([auffahrt_HM_BM1:motion] =~ "on" and [auffahrt_HM_BM1:brightness] < 70)
(set fl_Lava on-for-timer 300)


Nun erzeugt das ja einen state cmd_1, ich bräuchte aber 2 states, also on und off, sonst ist ja die Anzeige nicht korrekt.

Also nochmal nachgelesen und ein DOELSE (set fl_Lava off) hinzugefügt.

Die cmdStates hab ich mit on|off angegeben.

Aber irgendwie funktioniert das noch nicht wie gewünscht. Wo ist der Haken? Muss ich auf irgendwas besonders achten?

Besten Dank!

Stefan


Edit: jetzt hab ich über die States hier gelesen: https://forum.fhem.de/index.php/topic,50284.0.html  und bin verwirrt :) ein do always hab ich nicht drin...
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Ellert

Statt DOELSE (set fl_Lava off) nimm DOELSEIF ([fl_Lava] eq "off") , dann ist der Status off, wenn die Lampe ausgeht.

Per

#2
Was aber nur geht, wenn fl_Lava auch was zurück gibt. Sonst müsstest du den on-for-Timer in Fhem parallel erzeugen (mit evtl. Abweichungen) oder das Aus-Signal auch vom DOIF ausgeben.

define test1 DOIF ([auffahrt_HM_BM1:motion] =~ "on" and [auffahrt_HM_BM1:brightness] < 70) (set fl_Lava on)
DOELSE (set fl_Lava off)
attr test1 wait 0:300
attr test1 cmdStates on|off


Nebenbei würde ich [?auffahrt_HM_BM1:brightness] < 70 nehmen, sonst wird der Timer bei jeder Helligkeitsveränderung neu angetriggert (je nach Bewegungsmelder notwendig)
Evtl. brauchst du auch noch ein
attr test1 do always
was aber, wie das Fragezeichen, vom Bewegungsmelder abhängig ist.

Esteban

Danke :)

Also ich schalte zur Zeit eine Intertechno IT-1500 ohne Rückmeldung. Der Bewegungsmelder ist ein Homematic außen (hab gerade die Nummer nicht zur Hand, gibt ja nur einen).

Das mit dem ? klingt logisch. Ich werde jetzt mal ein wenig testen und mich dann wieder melden. Danke an Euch beide!

Grüße

Stefan
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Esteban

Leider geht die Lampe immer an und nicht wieder aus. :(

Ich hab mal die Events geloggt:

2016.03.11 23:38:59 2 : IT set fl_Lava on
2016-03-11 23:38:59 IT fl_Lava on
2016-03-11 23:38:59 DOIF test_bm cmd_nr: 1
2016-03-11 23:38:59 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-11 23:38:59 DOIF test_bm on
2016-03-11 23:38:59 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-11 23:38:59 CUL_HM auffahrt_HM_BM1 brightness: 56
2016-03-11 23:38:59 CUL_HM auffahrt_HM_BM1 cover: closed
2016-03-11 23:44:44 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-11 23:44:44 CUL_HM auffahrt_HM_BM1 brightness: 56
2016-03-11 23:44:44 CUL_HM auffahrt_HM_BM1 cover: closed


das do always hab ich raus, aber das ? hab ich drin, weil der BM halt ständig seinen Status mitteilt...

Hier mal der momentane code:

define test_bm DOIF ([auffahrt_HM_BM1:motion] =~ "on" and [?auffahrt_HM_BM1:brightness] < 60)\
(set fl_Lava on)\
DOELSE (set fl_Lava off)
attr test_bm cmdState on|off
attr test_bm room Auffahrt
attr test_bm wait 0:300
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Per

In deiner Eventlist sehe ich auffahrt_HM_BM1:motion gar nicht.

Esteban

Nee da ist ja auch gar keiner lang gegangen...  Der meldet nur die Helligkeit und die Lampe geht an
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Damian

Zitat von: Esteban am 12 März 2016, 00:43:37
Nee da ist ja auch gar keiner lang gegangen...  Der meldet nur die Helligkeit und die Lampe geht an

Dein Bewegungsmelder produziert dann ein Event und das Reading motion steht immer auf on. Das Problem lässt sich schnell lösen, indem man statt das Reading nur das Event auswertet, bei dir:

statt:

[auffahrt_HM_BM1:motion] =~ "on" ...


[auffahrt_HM_BM1:"motion"] ...


Gruß

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

Esteban

#8
Danke!

define test_bm DOIF ([auffahrt_HM_BM1:"motion"] and [?auffahrt_HM_BM1:brightness] < 70)\
(set fl_Lava on)\
DOELSE (set fl_Lava off)
attr test_bm cmdState on|off
attr test_bm room Auffahrt
attr test_bm wait 0:300


Das ist jetzt aus der FHEM.cfg

Ist denn die Abfrage auf die Helligkeit jetzt so in Ordnung und auch das wait-attribut und die States so optimal?

Ich hab das jetzt so verstanden, dass wait 0:300 jetzt 300 Sekunden die Lampe an schaltet und danach wieder aus. Nur haut das nicht hin, die Lampe brennt rund 10 Minuten. Das ist irgendwie verwirrend. Kann man anstelle des wait nicht das on-for-timer lösen? Was ist da die bessere Wahl?

Schönen Sonntag!

Grüße

Stefan
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Per

Zitat von: Esteban am 13 März 2016, 12:16:40Ich hab das jetzt so verstanden, dass wait 0:300 jetzt 300 Sekunden die Lampe an schaltet und danach wieder aus. Nur haut das nicht hin, die Lampe brennt rund 10 Minuten.
Was sagt denn der Eventmonitor dazu?

Zitat von: Esteban am 13 März 2016, 12:16:40Kann man anstelle des wait nicht das on-for-timer lösen? Was ist da die bessere Wahl?
Das Wider habe ich doch schon oben aufgeführt. Machbar ist es aber.

Esteban

Hallo!

Hier mal der Event-Log. Ich hab ne andere Lampe genommen, die in Reichweite war... :)

2016-03-14 19:09:59 DOIF test_bm wait_timer: no timer
2016-03-14 19:09:59 IT gal_LED_Lese on
2016-03-14 19:09:59 DOIF test_bm cmd_nr: 1
2016-03-14 19:09:59 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-14 19:09:59 DOIF test_bm on
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 brightness: 72
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 motion: on (to VCCU)
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 motionCount: 111_next:116s
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 motion
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 trigDst_VCCU: noConfig
2016-03-14 19:09:59 CUL_HM auffahrt_HM_BM1 trigger_cnt: 111
2016-03-14 19:12:28 DOIF test_bm wait_timer: 14.03.2016 19:17:28 cmd_2 auffahrt_HM_BM1
2016-03-14 19:12:28 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-14 19:12:28 CUL_HM auffahrt_HM_BM1 brightness: 72
2016-03-14 19:12:28 CUL_HM auffahrt_HM_BM1 cover: closed
2016-03-14 19:17:35 DOIF test_bm wait_timer: no timer
2016-03-14 19:17:36 IT gal_LED_Lese off
2016-03-14 19:17:36 DOIF test_bm cmd_nr: 2
2016-03-14 19:17:36 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-14 19:17:36 DOIF test_bm off
2016-03-14 19:17:36 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-14 19:17:36 CUL_HM auffahrt_HM_BM1 brightness: 72
2016-03-14 19:17:36 CUL_HM auffahrt_HM_BM1 cover: closed


Das DOIF schaut jetzt so aus

define test_bm DOIF ([auffahrt_HM_BM1:"motion"] and [?auffahrt_HM_BM1:brightness] < 120)\
(set gal_LED_Lese on)\
DOELSE (set gal_LED_Lese off)
attr test_bm cmdState on|off
attr test_bm room Auffahrt
attr test_bm wait 0:300


300 Sekunden sind bei mir aber irgendwie 7,5 Minuten... mir fehlt da die Logik! :)
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Ellert

Zitat300 Sekunden sind bei mir aber irgendwie 7,5 Minuten... mir fehlt da die Logik!

Immer wenn [auffahrt_HM_BM1:"motion"] triggert, werden die 300 s neu gestartet. Die Lampe geht 300s nach dem letzten Trigger aus.

Esteban

ahh danke! Jetzt hats Bing gemacht.

generell ist das ja auch sinnvoll, sofern wieder ein Motion-Event ausgelöst wird - aber nur dann.

Irgendwie ist es so noch nicht zufriedenstellend... ;)
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Per

Probier mal Folgendes:

define test_bm DOIF ([auffahrt_HM_BM1:"motion"] and [?auffahrt_HM_BM1:brightness] < 120) \
(set gal_LED_Lese on) (set gal_LED_Lese off) \
DOELSE (set gal_LED_Lese off)
attr test_bm cmdState off|off
attr test_bm room Auffahrt
attr test_bm wait 0,300


Allerdings wird z.Zt. statt "an" noch "cmd_1_1" angezeigt, aber da ist schon eine Änderung angekündigt.

Esteban

Danke!

Nun ist es so, dass die Lampe nur 3 Minuten brennt :)


2016-03-15 07:30:34 IT gal_LED_Lese on
2016-03-15 07:30:34 DOIF test_bm cmd_nr: 1
2016-03-15 07:30:34 DOIF test_bm cmd_seqnr: 1
2016-03-15 07:30:34 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 07:30:34 DOIF test_bm cmd_1_1
2016-03-15 07:30:34 DOIF test_bm wait_timer: 15.03.2016 07:35:34 cmd_1_2 auffahrt_HM_BM1
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 brightness: 98
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 motion: on (to VCCU)
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 motionCount: 113_next:116s
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 motion
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 trigDst_VCCU: noConfig
2016-03-15 07:30:34 CUL_HM auffahrt_HM_BM1 trigger_cnt: 113
2016-03-15 07:33:18 DOIF test_bm wait_timer: no timer
2016-03-15 07:33:19 IT gal_LED_Lese off
2016-03-15 07:33:19 DOIF test_bm cmd_nr: 2
2016-03-15 07:33:19 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 07:33:19 DOIF test_bm off
2016-03-15 07:33:19 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-15 07:33:19 CUL_HM auffahrt_HM_BM1 brightness: 105
2016-03-15 07:33:19 CUL_HM auffahrt_HM_BM1 cover: closed


Dadurch ist nun das Problem, dass der Bewegungsmelder nicht erneut auslöst, weil er ja noch "gesperrt" ist. Anscheinend wird hier sofort bei der nächsten Meldung des Bewegunsmelders auf off geschaltet...
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten