Moin,
ich möchte erreichen:
Eine Telegram bekommen, wenn die Abgastemperatur "test_Temp" für 5 Minuten über 300°C ist. Ebenso eine Nachricht, wenn "test_temp" wieder unter 300°C ist.
Einen Dummy bauen, der auf ON gesetzt wird, wenn die Temperatur auf 300C° oder höher ist,
Dann einen Watchdog gebaut, der den eben genannten Dummy für 5 Minuten triggert, und mir dann die Nachricht sendet.
Dann ein Notify, was mit direkt eine Nachricht schickt, wenn die Temperatur wieder unter 300°C fällt.
Ich frage mich grad, ob das auch ein wenig smarter mit einem DOIF geht. Kann man bei einem einzelnen DOIF ein Schwellwert (<300°C) und eine Zeit (5 Minuten) kombinieren?
Danke schön. :)
Schwellwert triggert und im Zweig wird mit wait 5 min warten.
Wait wird abgebrochen, wenn der Trigger nicht mehr gültig ist.
DOIF ([sensor] > 300) ()
(send telegram high)
DOELSEIF ([$SELF:cmd_seqnr] == 2 and [sensor] < 300)(send telegram low)
attr wait 0,300:0
Oh, ich wusste, dass ich zu kompliziert gedacht habe. :)
Ich danke euch. Werde ich testen. :)
Zitat von: Per am 18 März 2024, 14:56:37DOIF ([sensor] > 300) ()
(send telegram high)
DOELSEIF ([$SELF:cmd_seqnr] == 2 and [sensor] < 300)(send telegram low)
attr wait 0,300:0
Ich habe dein Beispiel mit einem Dummy zum testen umgesetzt.
Ich habe 2 Probleme, die ich nicht lösen kann:
Steigt der Wert über 300, wird sofort (und ohne Verzögerung) die Nachricht geschickt. Die Nachricht soll ja nur gesendet werden, wenn nach 5 Minuten der Wert höher als 300 ist.
Das DOELSEIF greift nicht, wenn der Wert wieder unter 300 fällt.
Danke für deine Hilfe. :)
Internals:
CFGFN
DEF ([TestDummy2:state] > 300) (set TelegramBot message @123456 TEST HIGH) DOELSEIF ([$SELF:cmd_seqnr] == 2 and [TestDummy2:state] < 300)(set TelegramBot message @123456 TEST LOW)
FUUID 65f96cdf-f33f-8a41-328e-eb6ea7b381a1d973
MODEL FHEM
NAME Temperaturwarnung_DOIF_Telegram
NOTIFYDEV Temperaturwarnung_DOIF_Telegram,TestDummy2,global
NR 487
NTFY_ORDER 50-Temperaturwarnung_DOIF_Telegram
STATE initialized
TYPE DOIF
VERSION 27740 2023-07-10 09:31:11
eventCount 1
READINGS:
2024-03-19 11:45:52 cmd 0
2024-03-19 11:45:52 mode enabled
2024-03-19 11:45:52 state initialized
Regex:
accu:
bar:
barAvg:
collect:
cond:
Temperaturwarnung_DOIF_Telegram:
1:
cmd_seqnr ^Temperaturwarnung_DOIF_Telegram$:^cmd_seqnr:
TestDummy2:
0:
state ^TestDummy2$:^state:
1:
state ^TestDummy2$:^state:
attr:
wait:
0:
0
300
1:
0
condition:
0 ::ReadingValDoIf($hash,'TestDummy2','state') > 300
1 ::ReadingValDoIf($hash,'Temperaturwarnung_DOIF_Telegram','cmd_seqnr') == 2 and ::ReadingValDoIf($hash,'TestDummy2','state') < 300
do:
0:
0 set TelegramBot message @123456 TEST HIGH
1:
0 set TelegramBot message @123456 TEST LOW
2:
helper:
NOTIFYDEV Temperaturwarnung_DOIF_Telegram,TestDummy2,global
globalinit 1
last_timer 0
sleeptimer -1
readings:
all TestDummy2:state Temperaturwarnung_DOIF_Telegram:cmd_seqnr
uiState:
uiTable:
Attributes:
room Dummy
wait 0,300:0
Zitat von: M.Piet am 19 März 2024, 11:47:43Steigt der Wert über 300, wird sofort (und ohne Verzögerung) die Nachricht geschickt.
Klar, weil Du nicht alles kopiert hast oder nicht nachgedacht hast.
Deine Definition arbeitet korrekt.
Wait muss 300,0:0 sein, hatte ich falsch.
Zitat von: Per am 19 März 2024, 13:05:59Wait muss 300,0:0 sein, hatte ich falsch.
Bei ihm 300:0
Zitat von: Per am 19 März 2024, 13:05:59Wait muss 300,0:0 sein, hatte ich falsch.
Ahhh. Danke. Nun geht es. Jetzt ergibt die Doku zu Wait auch einen Sinn für mich.
Aber mein zweites Problem habe ich noch.
Der DOELSEIF greif nicht, wenn der Wert unter 300 geht. Der DOIF bleibt bei "cmd_1" und welchelt nicht zu "cmd_2"
DOELSEIF ([$SELF:cmd_seqnr] == 2 and [TestDummy2:state] < 300)(set TelegramBot message @123456 TEST LOW)
Zitat von: M.Piet am 19 März 2024, 13:23:50[$SELF:cmd_seqnr] == 2
Da ich damit hier nichts anfangen kann, würde ich hier eine Ursache vermuten.
Mein Lösungsversuch wäre ohne das.
Hallo Zusammen,
ich habe es letztendlich dank eurer Hilfe hinbekommen. Es funktioniert genauso wie es soll.
Schwellwert: 300
Zeit: 120
([DS18B20_DBDE84000003:cleanTemp] > 300) (set TelegramBot message @1234 Achtung! Abgastemperatur Holzvergaser zu hoch! Aktueller Wert [DS18B20_DBDE84000003:cleanTemp]°C) DOELSEIF ([DS18B20_DBDE84000003:cleanTemp] < 300) (set TelegramBot message @1234 Abgastemperatur Holzvergaser wieder normal)
Attr wait=120:0
Oh, @M.Piet, rein Interessehalber: welchen Holzvergaser hast du und wie zufrieden bist du mit ihm?