Guten Morgen zusammen.
Ich steh gerade auf dem Schlauch. Ist es möglich mit watchdog auf einen Wertebereich zu triggern?
Beispiel
test:>30 00:00:05 test:10 set test on
Watchdog soll bei einem Wert größer als 30 auslösen. Ist das möglich?
MfG Ulf
Zitat von: Vista am 31 Januar 2018, 10:32:09
Guten Morgen zusammen.
Ich steh gerade auf dem Schlauch. Ist es möglich mit watchdog auf einen Wertebereich zu triggern?
Beispiel
test:>30 00:00:05 test:10 set test on
Watchdog soll bei einem Wert größer als 30 auslösen. Ist das möglich?
MfG Ulf
watchdog triggert auf eine RegEx nicht auf einen Wert oder Wertebereich. Du müsstest dir ggf. eine passende RegEx bauen.
Deine Frage ist m.E. besser im Anfängerbereich aufgehoben.
test:.[3-9][0-9] 00:00:05 test:10 set test on
Musst Du natürlich noch anpassen. Kenne ja das Event nicht, kann das auch dreistellig werden? Jetzt triggert er aber ständig sobald die erste Zahl größer gleich 3 ist und ein Event kommt.
also auch bei =30 ;)
ja auch bei gleich 30. Lach
Super für die tollen Tipps.
Wie man vielleicht am Name sehen kann bin ich noch am Testen (device test dummy^^)
Konkret geht es darum dass ich erkennen will wann mein Trockner fertig ist.
Dieser wird mittels Sonoff POW überwacht. Der Watchdog soll dazu dienen um eine sicher "Fertig Meldung" auszugeben und die Stromzufuhr unterbrechen.
Mein Trockner hat als "Knitterschutz" eine äußerst lange Nachlaufphase die ~15Watt zieht daher bin ich auf der suche die Fertigerkennung über einen Schwellenwert zu regelen.
Vielleicht hat jemand einen anderen Ansatz das umzusetzen
Obwohl kein großer Freund von DOIF (wo es geht vermeide ich es) empfehle ich hier DOIF, da Du da wirklich mit > oder < arbeiten kannst. Schau Dir mal die wirklich sehr sehr ausführliche deutsche Commandref dazu an.
Das Du mit einem Dummy testest finde ich super. Das ist genau der richtige Weg.
Und nochmals Danke.
Mit DOIF hab ich schonmal was versucht und bin kläglich gescheitert.
Wenn ich da aber einen Intervall / eine Wartezeit realisieren möchte, weil der Trockner ja mal kurz zeitig weniger als den Schwellwert verbraucht, müsste
ich wieder mit defmod und at arbeiten ? Richtig?
Vielleicht hab ich auch einen Knoten in meiner Denkweise.
Gedanke war.
Trockner wird angeschaltet --> ENERGY_Power (Sonoff) steigt / ist hoch --> Trockner ist fertig Wert sinkt unter 30Watt --> Wenn die 30Watt für 10min unterschritten bleiben --> Sonoff off
Wichtig ist dass die 10min nicht fix zum ausschalten führen dürfen. Da ja z.B. der Trockner sofort wieder Beladen wird und der nächste Durchlauf startet.
Dann würde ja ein at* möglicherweise während des nächsten Durchlaufs dem Trockner den Saft abdrehen.
Daher war mein Gedanke mit Watchdog:
wenn <30 und nach 10min immer noch kleiner <30 dann aus.
Denkansatz:
- erst ein "verbrauchIstGroesserAls30W" userreading bauen
- danach ein watchdog auf mit diesem Reading
Hast ein Knoten
Internals:
CFGFN
DEF ([WaschmaschineVerbrauchsanzeige:power] > 25) (set WaschmaschineBetriebDummy on)
DOELSEIF
([WaschmaschineVerbrauchsanzeige:power] < 5) (set WaschmaschineBetriebDummy off)
NAME doifWaschmaschineBetrieb
NR 47
NTFY_ORDER 50-doifWaschmaschineBetrieb
STATE cmd_2
TYPE DOIF
READINGS:
2018-01-30 10:20:41 Device WaschmaschineVerbrauchsanzeige
2018-01-30 10:09:09 cmd 2
2018-01-30 10:09:09 cmd_event WaschmaschineVerbrauchsanzeige
2018-01-30 10:09:09 cmd_nr 2
2018-01-30 10:20:41 e_WaschmaschineVerbrauchsanzeige_power 0
2018-01-30 10:09:09 state cmd_2
2018-01-30 10:09:09 wait_timer no timer
Attributes:
wait 0:120
entweder WATCHDOG mit user reading oder THRESHOLD. das ist genau dazu da.
Zitat von: justme1968 am 31 Januar 2018, 12:17:04
entweder WATCHDOG mit user reading oder THRESHOLD. das ist genau dazu da.
Hallo Andre,
Habe mal eben die Commandref von THRESHOLDüberflogen. Also wirklich nur überflogen. Wo kann ich da eine Zeitverzögerung mit Abbruchbedingung an geben? Muss ich das extra machen in Kombi mit DOIF?
Grüße
habe die zeitverzögerung übersehen.
THRESHOLD für die hysterese und darauf noch einen watchdog für die verzögerung. klappt wunderbar.
DOIF mag ich nicht :)
Zitat von: justme1968 am 31 Januar 2018, 12:25:58
DOIF mag ich nicht :)
Ich weiß. Ich auch nicht. Aber interessanter Weise mag man es erst nicht wenn man tiefer in FHEM drin steckt und weiß wie man es mit Bordmitteln schöner machen kann.
Problem gelöst.
beim Trockner
Betrieb { my $val=ReadingsVal("wk_TrocknerPOW", "ENERGY_Power", ""); if ($val > 30) { $val="on";} elsif ($val <= 30 ) { $val="off";} ;; $val}
und dann mit einem watchdog auf "Betrieb" getriggert.
Hallo zusammen,
ich hab da noch ein kleines Verständnisproblem...
Betrieb { my $val=ReadingsVal("Trockner", "sensor-engery-power", ""); if ($val > 30) { $val="on";} elsif ($val <= 30 ) { $val="off";} ;; $val}
ist doch ein userreading für den Pow richtig? Zumindest funktioniert das ;)
Wie krieg ich denn den Watchdog dazu auf dieses Reading zu hören?
Trockner.Betrieb:off 00:00:10 Trockner.Betrieb:on set SmartHomeBot msg Trockner fertig
Trockner:Betrieb:off 00:00:10 Trockner:Betrieb:on set SmartHomeBot msg Trockner fertig
Trockner.*:off 00:00:10 Trockner.*:on set SmartHomeBot msg Trockner fertig
Diese Varianten funktionieren nicht - der WD bleibt auf defined stehen, obwohl das Event Trockner Betrieb off oder on durch den Event-Monitor rauscht...
Wenn man unsicher ist:
- Event Monitor starten
- Event im Monitor abwarten, ganze Zeile markieren, Create/Modify Device klicken
- Im Dialog watchdog auswaehlen, watchdog anlegen, anpassen.
Wenn damit auch nicht klappt:
Alle relevanten Events aus dem Event-Monitor hier anhaengen.
danke dir viiiiiiielmals...
dank Event-Monitor - Create/Modify hab ich gelernt, dass das Event Trockner:Betrieb:.on bzw off heisst und siehe da... Es funktioniert ;-)