FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: timmy2000 am 24 September 2020, 09:08:04

Titel: Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: timmy2000 am 24 September 2020, 09:08:04
Guten Tag zusammen, vlt ist jemand so nett und kann mir ein wenig helfen.
Ich habe meine Fritzbox in Fhem eingebunden was auch soweit hervorragend funktioniert.
define FritzBox FRITZBOX 192.168.178.1
Über dieses Device steht mir ein Reading zu verfügung
setstate FritzBox 2020-09-24 09:01:54 box_rateDown 31.395
welches einen Wert zur Verfügung stellt der zwischen 1 und 4 Stellen vor dem Komma schwankt (box_rateDown 31.395) in diesem Beispiel hat er zwei Stellen vor dem Komma. Ich würde es nun gern dazu kommen lassen das ich mit einem Notify ein Event alle 10 min wiederholt auslöse wenn der Wert vor dem Komma mehr als drei stellen hat.
Wie ich darauf reagiere wenn sich das Reading ändert weiss ich inzwischen aber wie ich auf den Wert einer bestimmten Kommastelle im Reading reagiere bleibt mir ein Rätsel. Ich habe dazu auch leider nichts finden können.
   
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: Nobbynews am 24 September 2020, 09:15:54
Zitat von: timmy2000 am 24 September 2020, 09:08:04Ich würde es nun gern dazu kommen lassen das ich mit einem Notify ein Event alle 10 min wiederholt auslöse wenn der Wert vor dem Komma mehr als drei stellen hat.
Mehr als 3 Stellen vor dem Komma ist doch nicht anderes als das der Wert >= 1000 beträgt.
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: timmy2000 am 24 September 2020, 10:55:05
Danke für den Hinweis. Sieht so aus als würde es funktionieren ;)

define FritzBox_notify_1 notify FritzBox:box_rateDown:.* { if(ReadingsVal("FritzBox","box_rateDown","") > 1000) { fhem("set IT_008_Dachboden_Schreibtisch_Strahler on") }}
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: Otto123 am 24 September 2020, 10:57:40
Oder Du findest ein regExp welches auf die dritte Stelle vor dem Punkt anspringt.
Zur Hilfe https://regex101.com/

Also 3 Ziffern vor dem Punkt, sollte als regExp lösbar sein. Ist aber Aufgabe als Sahnehäubchen ;)

Gruß Otto
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: timmy2000 am 24 September 2020, 10:59:27
Danke das werde ich mir anschauen .... Wo kann ich denn das thema als gelöst makieren ? ...
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: timmy2000 am 24 September 2020, 12:00:13
Also mein Problem hat sich ja nun dank eurer Hilfe gut lösen lassen ! Das freut mich sehr  :)

define FritzBox_notify_1 notify FritzBox:box_rateDown:.* { if(ReadingsVal("FritzBox","box_rateDown","") > 1000) { fhem("set IT_008_Dachboden_Schreibtisch_Strahler on") }}

Gibt es für dieses Notify nun evtl auch eine einfache Lösung dafür das der Wert > 1000 mindestens 2 x eintreffen muss um den set Befehl abzusetzen um damit eine Redudanz zu erzielen ? Ich hoffe das ist nicht zu viel verlangt. Ich habe überhaupt keine Ahnung wie ich sowas realsieren
könnte ohne wieder riesen Ketten von active/inactive Dummys zu bauen. Ich will davon ganz gern mal weg, da mein ganzes Fhem mitlerweile aus set active/inactive notifys besteht. Das is irgendwie nich wirklich schön glaub ich ;)
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: Nobbynews am 24 September 2020, 12:26:53
Ich würde hier mal in Richtung watchdog tendieren.
Durch das notify einen dummy triggern und diesen über watchdog überwachen und nach 10 Minuten dann erst den eigentlichen set-Befehl absetzen.

defmod wPraesenz_off watchdog Praesenz:off 00:10:00 Praesenz:on set "........."
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: Beta-User am 24 September 2020, 12:41:50
Auch wenn ich ein Freund von watchdog bin: Hier wäre ggf. OldReadings eine Variante, mit der man über einen nummerischen Vergleich beider Werte (old+aktuell) das if erweitern könnte.

Sonst ginge ggf. auch watchdog direkt, allerdings sind regex-Ausdrücke für nummerische Vergleiche nicht ganz trivial. Falls der TE das versuchen wollte, würde ich mal für den ersten Ausdruck sowas in den Raum stellen (Bitte mit dem Wiedereinschalten des watchdog auseinandersetzen...):
[0-9]+[0-9]{3}[.].*
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: schwatter am 24 September 2020, 12:50:14
@timmy2000

Du triggerst auf größer als 1000. Somit fällt die 1000 aber flach. Nobbynews hatte das oben schon beschrieben.
Ob das relevant ist entscheidest du  :)
Titel: Antw:Dummy Schalter auslösen anhand von Reading Wert mit spezifischer Kommastelle
Beitrag von: timmy2000 am 24 September 2020, 20:53:42
Mit Watchdog hab ich mich nun vertraut gemacht... Das wieder scharfstellen klappt auch...Cooles Tool, wobei Fhem irgendwie süchtig macht
und es immer schlimmer wird jeh mehr man kapiert ;) Ja < 1000 is nicht 1000 :-) hab sogar ich geblickt trotz Bildungsstand "Hauptschule Fensterplatz" Zuletzt noch einmal ein riesen Dankeschön an all die Menschen die unermüdlich Die Fragen der Anfänger bedienen! Sehr engagiert
und lieb von euch! Bis dahin ein schönes Wochenede euch allen :) Danke !