Hallo zusammen,
ich versuche mich gerade daran eine TTS Benachrichtigung auszugeben wenn mein Garagentor länger als 20 Minuten auf steht, leider bekomme ich mit meiner unten aufgeführten DOIF immer nach 20 Minuten eine Benachrichtigung das die Garage aufsteht. Nun sollte man doch meinen das dies nur geschieht wenn state auf für 20 Minuten aktiv ist und nicht wenn das reading in den 20 Minuten wieder auf zu switcht. Hat da jemand eine Idee wo mein Denkfehler ist?
([Garage] eq "auf" and [Garage:state:sec] <1200) (set MyTTS tts die Garage ist seit 20 Minuten auf schliesen sie bitte die Garage)
Internals:
DEF ([Garage] eq "auf" and [Garage:state:sec] <1200) (set MyTTS tts die Garage ist seit 20 Minuten auf schliesen sie bitte die Garage)
MODEL FHEM
NAME ttsGarage
NR 495
NTFY_ORDER 50-ttsGarage
STATE disabled
TYPE DOIF
.attreour:
.*
READINGS:
2018-06-06 18:54:51 Device Garage
2018-06-06 18:53:06 cmd 1
2018-06-06 18:53:06 cmd_event Garage
2018-06-06 18:53:06 cmd_nr 1
2018-06-06 18:54:51 e_Garage_STATE zu
2018-06-06 18:54:51 e_Garage_state zu
2018-06-06 18:55:23 last_cmd cmd_1
2018-06-06 18:55:23 mode disabled
2018-06-06 18:55:23 state disabled
condition:
0 InternalDoIf($hash,'Garage','STATE') eq "auf" and ReadingSecDoIf('Garage','state') <1200
devices:
0 Garage
all Garage
do:
0:
0 set MyTTS tts die Garage ist seit 20 Minuten auf schliesen sie bitte die Garage
1:
helper:
globalinit 1
last_timer 0
sleeptimer -1
internals:
0 Garage:STATE
all Garage:STATE
itimer:
perlblock:
readings:
0 Garage:state
all Garage:state
uiState:
uiTable:
Attributes:
alias tts Garage
do always
event-on-update-reading .*
room 99.unbenutzt
dazu passend gibt es noch den Dummy für das Garagentor, welcher an states nicht viel her gibt auf und zu
Internals:
CHANGED
NAME Garage
NR 409
STATE zu
TYPE dummy
.attreocr:
state
.attrminint:
READINGS:
2018-06-06 20:28:53 state zu
Attributes:
devStateIcon auf:fts_garage_door_10@red zu:fts_garage_door_100
event-on-change-reading state
fp_Eigenheim 1025,481,5,Garage,
genericDeviceType garage
group Garagensteuerung
room Garage,Homekit,Text2Speech
setList auf zu
webCmd auf:zu
Hi,
du fragst ab ob das Reading jünger als 1200 sec ist. Oder?
[Garage:state:sec] <1200
Aus meiner Sicht sollte die Nachricht sofort kommen und nicht nach 20 min. Oder ich habe es nicht verstanden.
Leider ist Dein list im Zustand disabled :'(
Gruß Otto
Zitat von: Larusso am 06 Juni 2018, 20:30:51
...wenn mein Garagentor länger als 20 Minuten auf steht
...wenn state auf für 20 Minuten aktiv ist und nicht wenn das reading in den 20 Minuten wieder auf zu switcht.
Hat da jemand eine Idee wo mein Denkfehler ist?
Wie wäre es einfach mit einem watchdog!?
Für ein nur cmd ist das DOIF vielleicht overkill. Da solltest du einen watchdog nehmen.
Wenn du noch mehr vorhast würde ich folgendes vorschlagen:
([Garage] eq "auf") (set MyTTS tts die Garage ist seit 20 Minuten auf schliesen sie bitte die Garage)
und als Attribut
wait 1200
Zitat von: Otto123 am 06 Juni 2018, 22:13:10
Hi,
du fragst ab ob das Reading jünger als 1200 sec ist. Oder?
[Garage:state:sec] <1200
Aus meiner Sicht sollte die Nachricht sofort kommen und nicht nach 20 min. Oder ich habe es nicht verstanden.
Leider ist Dein list im Zustand disabled :'(
Gruß Otto
Abfragen dieser Art sind meistens nur ohne Trigger sinnvoll, also [?Garage:state:sec] <1200, denn zum Triggerzeitpunkt ist [Garage:state:sec] = 0, in diesem Fall ist es eher ungeeignet.
Wait beinhaltet normalerweise watchdog-Funktionalität, da es im ELSE-Fall abbricht.
danke an alle für die Rückmeldung......
ja < oder > macht schon einen riesigen unterschied in der syntax :o Habe das ganze jetzt mal mit wait 1200 eingestellt und schau mal ob das klappt, melde mich zwecks gelösst oder nicht noch mal.....dankeschön für den wie immer schnellen support.
Zusatz: wait im DOIF wird nicht unterbrochen wenn das Garagentor wieder zu ist also löst TTS auch dann aus wenn ich es wider schliese. Ich habe es jetzt über einen watchdog gelösst, das scheint sehr gut zu funktionieren. Eine Frage hätte ich aber noch zu dem watchdog. Löst der watchdog nur einmal aus wenn das Ereigniss eintritt oder wiederholt er den Auslöser in bestimmten Intervallen? Ich hätte gerne nicht nur einmal eine Benachrichtigung per TTS wenn das Garagentor nach Zeit x noch offen steht, sollte ich dann nämlich gerade im Garten sein verpasse ich den Aufruf und das Tor bleibt weiter auf. Einen Automatischen schlies Vorgang möchte ich nicht einbringen, da ich Kinder habe und das Garagentor keine Lichtschranke besitzt.
hier der watchdog als device list:
Internals:
CFGFN
CMD set MyTTS tts das Garagentor steht noch auf!
DEF Garage:auf 00:00:30 Garage:zu set MyTTS tts das Garagentor steht noch auf!
NAME Garagentorwaechter
NOTIFYDEV Garage,Garagentorwaechter
NR 7109
NTFY_ORDER 50-Garagentorwaechter
RE1 Garage:auf
RE2 Garage:zu
STATE defined
TO 30
TYPE watchdog
.attraggr:
.attrminint:
READINGS:
2018-06-08 14:52:02 Activated activated
2018-06-08 14:52:32 Triggered triggered
2018-06-08 14:53:14 state defined
Attributes:
alias tts Garage steht zu lange auf
autoRestart 1
room Garage,Text2Speech
ZitatZusatz: wait im DOIF wird nicht unterbrochen wenn das Garagentor wieder zu ist also löst TTS auch dann aus wenn ich es wider schliese.
Das ist nicht richtig, siehe Beispiel von willib.
Habe es aber ausprobiert und genau so verhält es sich bei mir.
Zitat von: Larusso am 08 Juni 2018, 17:49:02
Habe es aber ausprobiert und genau so verhält es sich bei mir.
Dann hast du beim DOIF etwas falsch definiert, z. B. do always. Wenn watchdog geht, dann ist alles ok.