Guten Abend zusammen,
ich habe das Forum nun seit Stunden durchsucht und komme einfach nicht weiter.
Ich habe meinen Solar Regler von RESOL eingebunden und er liefert folgende Werte.
List
CODE 7311
DEF 7311
FUUID 64650e6a-f33f-431b-1d13-fbac4cbf11e39c0f
LASTInputDev vbus
MSGCNT 173470
NAME VBUSDEV_7311
NR 429
STATE Defined
TYPE VBUSDEV
eventCount 8835
vbus_MSGCNT 173470
vbus_RAWMSG aa100011731000011149cd008c02b822c301650283017201b822b822b822b822b822000000000000000000000000840f00003b000000000000000064000000000000000029000000000001020a21
vbus_TIME 2023-05-20 21:55:39
READINGS:
2023-05-20 21:55:39 01_Solarpumpe 0 %
2023-05-20 21:55:39 02_Warmwassererwaermung 0 %
2023-05-20 21:55:39 03_Speichererwaermung 0 %
2023-05-20 21:55:39 04_Heizungsunterstuetzung 100 %
2023-05-20 21:55:39 Heizung_Ruecklauf 39 °C
2023-05-20 21:55:39 Heizung_Vorlauf 37 °C
2023-05-20 21:55:39 T_Kollektor 20.5 °C
2023-05-20 21:55:39 T_Sp_01_Warmwasser 65.5 °C
2023-05-20 21:55:39 T_Sp_02_mitte 61.5 °C
2023-05-20 21:55:39 T_Sp_03_unten 45.5 °C
Attributes:
event-on-change-reading .*
model DeltaSol_M
room CUL_HM
verbose 3
Das bekomme ich mit Hilfe des Event_Monitor hin
Internals:
DEF VBUSDEV_7311:T_Kollektor:.*.°C set telegramS message bla bla
FUUID 6469286a-f33f-431b-3fc7-63045ec4bbc77041
NAME VBUSDEV_7311_notify_1
NOTIFYDEV VBUSDEV_7311
NR 455
NTFY_ORDER 50-VBUSDEV_7311_notify_1
REGEXP VBUSDEV_7311:T_Kollektor:.*.°C
STATE 2023-05-20 22:08:42
TRIGGERTIME 1684613322.89454
TYPE notify
READINGS:
2023-05-20 22:08:41 state active
2023-05-20 22:08:42 triggeredByDev VBUSDEV_7311
2023-05-20 22:08:42 triggeredByEvent T_Kollektor: 31 °C
Attributes:
Ich würde gerne eine Nachricht per TELEGRAM erhalten, wenn T_Kollektor über 85 °C steigt. Ich habe gefühlt schon 100 Versionen eines Notifys erstellt, leider ohne Erfolg. Ich schaffe es nicht, dass eine Nachricht versendet wird (für andere Benachrichtigunegn verwende ich "set telegramS message" und das klappt wunderbar. Ich scheitere auch an der Prüfung der Bedingung, dass der Wert >= 85 °C sein soll. Das Notify wird bei jeder Änderung der Temperatur getriggert.
CFGFN
DEF VBUSDEV_7311:T_Kollektor:.* { if ($EVTPART0 >= 85.5) {fhem ("set telegramS message temp")}}
FUUID 6468e0a4-f33f-431b-44ef-9b014c42181c5e4f
NAME Kollektor_zu_heiss
NOTIFYDEV VBUSDEV_7311
NR 71983
NTFY_ORDER 50-VBUSDEV_7311_notify_1
REGEXP VBUSDEV_7311:T_Kollektor:.*
STATE 2023-05-20 22:01:57
TRIGGERTIME 1684612917.955
TYPE notify
eventCount 36
READINGS:
2023-05-20 21:32:18 state active
2023-05-20 22:01:57 triggeredByDev VBUSDEV_7311
2023-05-20 22:01:57 triggeredByEvent T_Kollektor: 36 °C
Wer kann mir helfen und mich unterstützen.
Ich danke schon jetzt und wünsche einen schönen Abend
Hallo
Diese Definition "VBUSDEV_7311:T_Kollektor:.*" triggert auf jede Änderung.
Ich denke die Zahl zum Vergleich ist $EVTPART1.
Im notify-Wiki ist ein Beispiel, dass du als Trigger adaptieren könntest:
dimmer:pct:.(100|7[6-9]|[89][0-9])
→ reagiert, wenn pct einen Wert über 75 annimmt.
Gruß Ralf
Guten Morgen Ralf,
vielen Dank für deine Antwort, ich hab mir den WIKI Eintrag angesehen, aber verstehe ihn nicht. Mir ist völlig unklar was all die Ziffern bedeuten! Gibt es da noch eine Stell wo das genauer erklärt wird.
Gruß Stefan
Das ist ReEx ;)
EDIT: ganz hilfreich https://regex101.com/
Und heißt so viel wie:
entweder 100 oder 76-79 oder 80 - 99
Also eben größer als 75 (und kleiner 101).
Deine if-Abfrage sollte auch gehen.
Allerdings ist $EVTPART0 nicht wo der Wert steht...
Denke $EVTPART1 bzw. kannst du ja mal zunächt den Event ausgeben lassen: Log3(undef, 1, "hier der Inhalt $EVENT")
dann siehst du ja an welcher Stelle ($EVTPARTx) der "Vergleichswert" steht.
EDIT: ich würde auch das ".°C" bei dem notify RegEx mal weglassen (auch wenn es verm. vom Eventmonitor stammt)...
Gruß, Joachim
Hallo Joachim,
vielen Dank für deine Antwort. Ich habe jetzt auf $EVTPART1 umgestellt und siehe da. Es läuft.
In der Telegram Nachricht würde ich jetzt gerne noch den aktuellen Wert von T_Kollektor mit senden. VBUSDEV:7311:T_Kollektor und $EVTPART werden als Test interpretiert. Wie ist die Syntax, dass der Wert gesendet wird.
Internals:
DEF VBUSDEV_7311:T_Kollektor:.* { if ($EVTPART1 >= 50.5) {fhem ("set telegramS message [VBUSDEV:7311:T_Kollektor] ")}}
FUUID 6468e0a4-f33f-431b-44ef-9b014c42181c5e4f
NAME Kollektor_zu_heiss
NOTIFYDEV VBUSDEV_7311
NR 454
NTFY_ORDER 50-Kollektor_zu_heiss
REGEXP VBUSDEV_7311:T_Kollektor:.*
STATE 2023-05-21 10:27:04
TRIGGERTIME 1684657624.0785
TYPE notify
eventCount 9
READINGS:
2023-05-21 10:05:35 state active
2023-05-21 10:27:04 triggeredByDev VBUSDEV_7311
2023-05-21 10:27:04 triggeredByEvent T_Kollektor: 51.5 °C
Attributes:
room CUL_HM
Wie Joachim geschrieben hat müsste dein zweites Notify mit $EVTPART1 gehen.
Notfalls könntest du auch das eigentliche READING per IF vergleichen.
Wenn das läuft kannst du wenn du willst den Trigger (mit der Regular Expression) einschränken.
Evtl. statt .* ein .(8[6-9]|[9][0-9]) .
Das ist meine Idee von über 85 bis 99. Bin aber kein RegEx Profi sondern nähere mich oft per Trial&Error. Es gibt eine Reihe von Webseiten um die RegEx'en auszuprobieren.
Hallo Ralf,
danke für deine Hilfe. Das Notify schaut aktuell so aus. Ich möchte mit jetzt den WERT von T_Kollektor senden lassen. Das Ergebnis siehst du im anhängend Bild.
Da passt entweder der Ausdruck, oder die Syntax noch nicht
Internals:
DEF VBUSDEV_7311:T_Kollektor:.* { if ($EVTPART1 >= 50.5) {fhem ("set telegramS message ($EVTPART1) temp")}}
FUUID 6468e0a4-f33f-431b-44ef-9b014c42181c5e4f
NAME Kollektor_zu_heiss
NOTIFYDEV VBUSDEV_7311
NR 454
NTFY_ORDER 50-Kollektor_zu_heiss
REGEXP VBUSDEV_7311:T_Kollektor:.*
STATE 2023-05-21 11:00:32
TRIGGERTIME 1684659632.04361
TYPE notify
eventCount 12
READINGS:
2023-05-21 10:35:14 state active
2023-05-21 11:00:32 triggeredByDev VBUSDEV_7311
2023-05-21 11:00:32 triggeredByEvent T_Kollektor: 57.5 °C
Attributes:
room CUL_HM
Danke und schönen Sonntag
Stefan
Warum die Klammern um $EVTPART1 ?
Also warum nicht einfach: fhem ("set telegramS message $EVTPART1 temp")
Wenn du Klammern willst, dann verm. "ecapen"?
Also evtl.: fhem ("set telegramS message \($EVTPART1\) temp")
Wobei ich jetzt nicht weiß, was bei der "sen-message" Funktion vom Telegram-Modul "escaped" werden muss und wenn wie...
EDIT: wobei ich grad bei mir geschaut habe und ich kann einfach Klammern beim Senden von Nachrichten verwenden. Welche "Codierung" hast du "eingestellt"? Gibt ja da viele Einstellungen beim Bot? und auch beim Modul?
Gruß, Joachim
Hallo Joachim,
zu deiner Info fhem ("set telegramS message $EVTPART1 temp")
ergibt folgende Ausgabe "EVTPART1 temp". Wird also nur als Text interpretiert
("set telegramS message \(EVTPART1) temp")
Ergebnis siehe Bild im Anhang. Ich hoffe, dass ich da noch was zu diesem Thema finde
Gruß Stefan
\(EVTPART1) <- ist ja auch Quatsch und habe ich SO NICHT gepostet!
Wenn "escapen", dann beide Klammern und wenn du eine Variable willst, dann $EVTPART1
Wobei, wie geschrieben: bei mir gehen auch Klammern ohne "escapen"...
Evtl. mal (wobei es auch anders gehen müsste?!):
{ if ($EVTPART1 >= 50.5) {my $value = $EVTPART1; fhem ("set telegramS message $value temp");}}
Oder gleich alles zusammenbauen:
{ if ($EVTPART1 >= 50.5) {my $Message = $EVTPART1 . " temp"; fhem ("set telegramS message $Message");}}
Eingabe per Klick auf DEF beim notify.
Ansonsten u.U. Strichpunkte doppeln...
Aber wie geschrieben, eigentlich sollte es schon zu Beginn gepasst haben.
Hast du mal ganz ohne Klammern probiert?
Hatte ich aber ja alles schon mal geschrieben...
Gruß, Joachim
Hallo Joachim,
jetzt macht das notify was es soll. :) :) :) Ich danke die wirklich ganz herzlich für deine Geduld. ;D
Habe noch das EVTPART1 durch EVENT ersetzt, dann kommt das °C gleich mit
{ if ($EVTPART1 >= 15.0) {my $Message = $EVENT . " Das Solarmodul ist zu heiss"; fhem ("set telegramS message $Message");}}
Telegram meldet mir T_Kollektor: XX °C Das Solarmodul ist zu heiss
Vielen Dank und schönen Abend
Stefan
Gerne.
Packst du noch ein [gelöst] vorne an den ersten Post dran :)
Gruß, Joachim