Enigma: DOIF wenn Reading sich nicht ändert

Begonnen von Michi240281, 17 September 2015, 15:05:50

Vorheriges Thema - Nächstes Thema

Michi240281

Besten Dank, werde ich heute Abend testen! DANKE!!!!
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Michi240281

#16
Funktioniert, jetzt ist nur die Frage, wie ich ein 2. Kommando zeitverzögert mit in dem DI untergebracht bekomme? Eine 2. Bedingung wird denke ich ja nicht funktionieren, da dann Bedingung 1 und 2 identisch sind. Ist das irgendwie möglich, innerhalb einer Bedingung 2 Kommandos zu unterschiedlichen Zeitpunkten auszuführen? Ansonsten müsste ich erst den Status eines Dummies ändern und ein 2., eigenständiges DI fürs Ausschalten des Receivers erstellen....

EDIT: Ahhh, habs in der commandref gefunden! Trennung mit ","...........allerdings habe ich ja schon ein wait Attribut gesetzt! Kann man das da dennoch mit unterbringen?
FHEM auf QNAP per VM / HM LAN Adapter / diverse HM-Devices
QNAP TVS 463
VU+ Duo4kSE
Sony 75ZD9

Damian

Zitat von: Michi240281 am 01 Oktober 2015, 09:13:44
Funktioniert, jetzt ist nur die Frage, wie ich ein 2. Kommando zeitverzögert mit in dem DI untergebracht bekomme? Eine 2. Bedingung wird denke ich ja nicht funktionieren, da dann Bedingung 1 und 2 identisch sind. Ist das irgendwie möglich, innerhalb einer Bedingung 2 Kommandos zu unterschiedlichen Zeitpunkten auszuführen? Ansonsten müsste ich erst den Status eines Dummies ändern und ein 2., eigenständiges DI fürs Ausschalten des Receivers erstellen....

EDIT: Ahhh, habs in der commandref gefunden! Trennung mit ","...........allerdings habe ich ja schon ein wait Attribut gesetzt! Kann man das da dennoch mit unterbringen?

Wenn du mehrere Wait-Angaben für eine Abfolge definieren willst dann musst du die einzelnen Sequenzen Klammern:


DOIF (Bedingung) (set ..., set ...)(set... ,set ...)

wait 1,2


Gruß

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

alen

Hallo zusammen

Darf ich eine Frage zu dem Thema hier stellen:

Ich verstehe nicht ganz diese Logik hinter diesem Code:

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


Die Zeile DOIF sagt doch, wenn der Tempsensor ein Reading hat, dann soll DOIF ein SET PUSH ausführen. Korrekt?
Was machen dann das Wait und das Resetwait genau? Es soll ja so sein, dass eben genau erst nach 1800Sekunden das SET PUSH ausgeführt werden soll, wenn innerhalb dieser Zeit der Gartensensor kein Reading hatte..oder?
Was ist aber wenn der Garensensor nach 30 Sekunden ein Reading kriegt...wieso wir dann korrekterweise kein Setpush gemacht?

Danke und Gruss
Alen
Raspberry Pi Model Model 2 SD 32GB
Jeelink
FHEM 5.6, 2x TX 29DTH-IT

Damian

#19
Zitat von: alen am 13 August 2016, 08:11:17
Hallo zusammen

Darf ich eine Frage zu dem Thema hier stellen:

Ich verstehe nicht ganz diese Logik hinter diesem Code:

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




Die Zeile DOIF sagt doch, wenn der Tempsensor ein Reading hat, dann soll DOIF ein SET PUSH ausführen. Korrekt?
Was machen dann das Wait und das Resetwait genau? Es soll ja so sein, dass eben genau erst nach 1800Sekunden das SET PUSH ausgeführt werden soll, wenn innerhalb dieser Zeit der Gartensensor kein Reading hatte..oder?
Was ist aber wenn der Garensensor nach 30 Sekunden ein Reading kriegt...wieso wir dann korrekterweise kein Setpush gemacht?

Danke und Gruss
Alen

Wenn Tempsensor ein Event erzeugt, dann wird zuerst der Wait-Timer mit 1800 Sekunden für die Ausführung von pushmsg gesetzt. Wenn in dieser Zeit kein weiteres Event von Tempsensor kommt, dann wird pushmsg ausgeführt. Wenn allerdings vorher (innerhalb der 1800 Sekunden) wieder ein Event von Tempsensor kommt, dann wird der Wait-Timer wieder auf 1800 Sekunden gesetzt. Das wird durch das Attribut do resetwait provoziert. Wäre dagegen do always gesetzt, dann würde ein laufender Waittimer nicht neu gesetzt, sondern würde weiter laufen bis er abläuft und anschließend der Befehl ausgeführt wird.

Gruß

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