Hauptmenü

cmdState Verständnisproblem

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

Vorheriges Thema - Nächstes Thema

Per

Lass mal den DOELSIF-Zweig ganz weg. Hatte die ganzen anderen Meldungen nicht berücksichtigt :-[. (War schon spät ;)).

Esteban

#16
Hehe, kenne ich :)

Danke! Ist eingebaut. Allerdings ist mein Arm gerade nicht so lang um den Bewegungsmelder auslösen zu können, mache ich heute Abend wenn ich wieder zu Hause bin :)

Edit: state off|off ist so richtig?
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 15 März 2016, 10:06:07Edit: state off|off ist so richtig?
Nach der Änderung gibt es nur einen benennbaren State, der andere wird (z.Zt noch) automatisch vergeben. Kannst du also auch ganz weglassen.
Oder attr test_bm cmdState off schreiben.
attr test_bm cmdState off|off war richtig, als es zwei Zweige gab. Half aber auch nicht wirklich weiter, weil ja der State cmd_1_1 der interessante ist, und der wird wie gesagt noch nicht benannt.

Esteban

#18
also ich hab jetzt

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


hier die Events:

2016.03.15 19:46:54 2 : IT set gal_LED_Lese on
2016-03-15 19:46:55 IT gal_LED_Lese on
2016-03-15 19:46:55 DOIF test_bm cmd_nr: 1
2016-03-15 19:46:55 DOIF test_bm cmd_seqnr: 1
2016-03-15 19:46:55 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 19:46:55 DOIF test_bm cmd_1_1
2016-03-15 19:46:55 DOIF test_bm wait_timer: 15.03.2016 19:51:55 cmd_1_2 auffahrt_HM_BM1
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 brightness: 77
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 motion: on (to VCCU)
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 motionCount: 117_next:116s
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 motion
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 trigDst_VCCU: noConfig
2016-03-15 19:46:55 CUL_HM auffahrt_HM_BM1 trigger_cnt: 117
2016-03-15 19:48:23 DOIF test_bm wait_timer: no timer
2016-03-15 19:48:23 DOIF test_bm cmd_nr: 2
2016-03-15 19:48:23 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 19:48:23 DOIF test_bm
2016-03-15 19:48:23 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-15 19:48:23 CUL_HM auffahrt_HM_BM1 brightness: 77
2016-03-15 19:48:23 CUL_HM auffahrt_HM_BM1 cover: closed


Ist jetzt 19:54 und die Lampe brennt noch :/
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten

Ellert

2016-03-15 19:48:23 CUL_HM auffahrt_HM_BM1 gibt es ein Event von "auffahrt_HM_BM1" damit wird die Bedingung unwahr und nimmt den Status "cmd_2" an. Damit wird der Wait-Timer zurückgesetzt bevor (set gal_LED_Lese off) ausgeführt werden konnte. Deshalb brennt die Lampe um 19:54 immer noch.

Damian

Da nur eine Bedingung da ist, sollte man do always oder do resetwait setzen. Damit gibt es keinen "imaginären" cmd_2-Fall.

Bei do always wird der Timer bei wiederholtem "motion" nicht verlängert bei do resetwait wohl.

Dieses Beispiel steht seit geraumer Zeit in der Commandref von DOIF:

ZitatDie Nachbildung eines on-for-timers lässt sich wie folgt realisieren:

define 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.

Gruß

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

Ellert

#21
Vielleicht geht es so:
define test_bm DOIF ([auffahrt_HM_BM1:"motion"] and [?auffahrt_HM_BM1:brightness] < 220 and ([?test_bm] eq "cmd_2" or [?test_bm] eq "initialized")
   (set gal_LED_Lese on) ()
DOELSEIF ([[test_bm] eq "cmd_1"])
   (set gal_LED_Lese off)

und die Attribute
selftrigger 1
wait 0,299:1
stateFormat {Value("test_bm") eq "cmd_1_1" ? "on" : "off"}

mit dieser DOIF-Version: https://forum.fhem.de/index.php/topic,49109.msg424219.html#msg424219

Bei motion-Event wird die Lampe eingeschaltet, brennt 299 s, dann wird weitergeschaltet und nach 1 s geht das Licht aus. Erst dann kann ein weiteres motion-Event den Vorgang erneut starten.

Esteban

Damian: oh well, ja am Anfang denkt man man macht was anderes und am Ende des Threads kommt dann was raus, was auch in der Commandref steht  8) Das tut mir leid. Ich danke Dir!

Ellert: danke danke! Ich werde beides testen: vorweg den Tipp von Damian berücksichtigen und später/morgen deine Version!

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

Esteban

supi, mit doreset wait... gehts!

2016.03.15 21:52:23 2 : IT set gal_LED_Lese on
2016-03-15 21:52:23 structure gal_PC_LED on
2016-03-15 21:52:23 IT gal_LED_Lese on
2016-03-15 21:52:23 DOIF test_bm cmd_nr: 1
2016-03-15 21:52:23 DOIF test_bm cmd_seqnr: 1
2016-03-15 21:52:23 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 21:52:23 DOIF test_bm cmd_1_1
2016-03-15 21:52:23 DOIF test_bm wait_timer: 15.03.2016 21:57:23 cmd_1_2 auffahrt_HM_BM1
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 brightness: 99
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 motion: on (to VCCU)
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 motionCount: 121_next:116s
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 motion
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 trigDst_VCCU: noConfig
2016-03-15 21:52:23 CUL_HM auffahrt_HM_BM1 trigger_cnt: 121
2016-03-15 21:53:31 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-15 21:53:31 CUL_HM auffahrt_HM_BM1 brightness: 99
2016-03-15 21:53:31 CUL_HM auffahrt_HM_BM1 cover: closed
2016-03-15 21:57:23 DOIF test_bm wait_timer: no timer
2016.03.15 21:57:23 2 : IT set gal_LED_Lese off2016-03-15 21:57:23 structure gal_PC_LED undefined
2016-03-15 21:57:23 IT gal_LED_Lese off
2016-03-15 21:57:23 DOIF test_bm cmd_nr: 1
2016-03-15 21:57:23 DOIF test_bm cmd_seqnr: 2
2016-03-15 21:57:23 DOIF test_bm cmd_event: auffahrt_HM_BM1
2016-03-15 21:57:23 DOIF test_bm off
2016-03-15 21:59:43 CUL_HM auffahrt_HM_BM1 battery: ok
2016-03-15 21:59:43 CUL_HM auffahrt_HM_BM1 brightness: 99
2016-03-15 21:59:43 CUL_HM auffahrt_HM_BM1 cover: closed


also um nochmal auf den Threadtitel zu kommen... doreset wait bedeutet, dass er den State zurücksetzt und wieder auf die definierte Bedingung wartet, richtig?
FHEM v5.9 auf RPi 3B+ Raspbian Stretch | Busware CUL 433 MHz | 20x IT-1500 | HMUSB2 mit diversen HM Komponenten