Einzelwert eines Readings als Trigger

Begonnen von der-Lolo, 11 Mai 2019, 10:48:35

Vorheriges Thema - Nächstes Thema

der-Lolo

Guten Morgen Zusammen,
könnte mir mal jemand kurz auf die Sprünge helfen..?
Ich nutze das SYSMON Modul um Daten meiner Syno DS716+ii in FHEM zu sehen.
Hier gibt es ein reading "ram" welches mehrere werte enthält...

ram
Total: 7903.75 MB, Used: 693.58 MB, 8.78 %, Free: 1674.68 MB
2019-05-11 10:44:50


Ich möchte gerne auf Used > 2000 einen Trigger haben der mir via Telegram Bot eine message schickt.
Brauche ich hier tatsächlich ein userReading, oder kann ich das mit DOIF anders lösen..?

Danke für eure Antworten.


Damian

Du kannst auf das Reading ram triggern und mit Filteroption den Wert hinter used: abfragen: https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der-Lolo

Hm, also entweder habe ich was an der ComandRef falsch verstanden, oder der Wert ist vom SYSMON Modul her nicht Ok...
Ein list:
Internals:
   CFGFN     
   DEF        ([DS716:ram|Used:d0] > 705) (msg push @rr_Michael Ram Auslastung angestiegen Neustart von FHEM ausführen)


   FUUID      5cd68542-f33f-68f5-bfa3-bc9ccd20f06eafb6
   MODEL      FHEM
   NAME       RAMmsgAdjust
   NR         270
   NTFY_ORDER 50-RAMmsgAdjust
   STATE      cmd_2
   TYPE       DOIF
   VERSION    19303 2019-05-01 08:47:16
   Helper:
     DBLOG:
       cmd:
         DbLog:
           TIME       1557566932.13008
           VALUE      2
       cmd_event:
         DbLog:
           TIME       1557566932.13008
           VALUE      DS716
       cmd_nr:
         DbLog:
           TIME       1557566932.13008
           VALUE      2
       mode:
         DbLog:
           TIME       1557566912.94278
           VALUE      enabled
       state:
         DbLog:
           TIME       1557566932.13008
           VALUE      cmd_2
       warning:
         DbLog:
           TIME       1557566993.21775
           VALUE      condition c01
   READINGS:
     2019-05-11 11:29:53   Device          DS716
     2019-05-11 11:28:52   cmd             2
     2019-05-11 11:28:52   cmd_event       DS716
     2019-05-11 11:28:52   cmd_nr          2
     2019-05-11 11:28:32   mode            enabled
     2019-05-11 11:28:52   state           cmd_2
     2019-05-11 11:29:53   warning         condition c01: Argument "" isn't numeric in numeric gt (>)

   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'DS716','ram|Used','','d0') > 705
   devices:
     0           DS716
     all         DS716
   do:
     0:
       0          msg push @rr_Michael Ram Auslastung angestiegen Neustart von FHEM ausführen
     1:
   helper:
     event      ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   DS716
     timerevent ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
     triggerDev DS716
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: DS716
       state: cmd_2
     bm:
       DOIF_Get:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 11:29:20
         max        1.50203704833984e-05
         tot        3.00407409667969e-05
         mAr:
           HASH(0x9098b58)
           RAMmsgAdjust
           ?
       DOIF_Notify:
         cnt        206
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 11:28:52
         max        0.0148329734802246
         tot        0.0300753116607666
         mAr:
           HASH(0x9098b58)
           HASH(0x450fc68)
       DOIF_Set:
         cnt        8
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 11:30:13
         max        9.01222229003906e-05
         tot        0.000542402267456055
         mAr:
           HASH(0x9098b58)
           RAMmsgAdjust
           ?
     timerevents:
       ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
     timereventsState:
       ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
     triggerEvents:
       ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
     triggerEventsState:
       ram: Total: 7903.75 MB, Used: 718.85 MB, 9.10 %, Free: 1625.81 MB
   internals:
   itimer:
   readings:
     0           DS716:ram|Used
     all         DS716:ram|Used
   trigger:
   uiState:
   uiTable:
Attributes:
   room       99-Controller


aus dem Log von FHEM

2019.05.11 11:31:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:31:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 12656) line 1.
2019.05.11 11:30:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:30:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 12495) line 1.
2019.05.11 11:29:53 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:29:53 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 12331) line 1.
2019.05.11 11:28:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:28:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 12162) line 1.
2019.05.11 11:27:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:27:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 11996) line 1.
2019.05.11 11:26:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:26:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 11847) line 1.
2019.05.11 11:25:52 3: eval: RAMmsgAdjust: warning in condition c01
2019.05.11 11:25:52 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 11672) line 1.


Was mache ich denn jetzt schon wieder falsch...?

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

der-Lolo

Och mensch - konnte man darauf kommen..?

Ein Regex problem gibt es aber noch..

RAMmsgAdjust DOIF: unknown expression format: (\d+)"

kommt im Popup..

der-Lolo

Ich hab es jetzt am laufen - Used statt used - wie blind kann man sein..?

nochmal ein list:

Internals:
   DEF        ([DS716:ram:"Used: (\d+)"] > 2000) (msg push @rr_Michael Ram Auslastung angestiegen Neustart von FHEM ausführen)
DOELSEIF ([$SELF:cmd] eq "1" and [Eichenheim_Bot:msgText] eq "restart") (shutdown restart)
DOELSE()

   FUUID      5cd68542-f33f-68f5-bfa3-bc9ccd20f06eafb6
   MODEL      FHEM
   NAME       RAMmsgAdjust
   NR         202
   NTFY_ORDER 50-RAMmsgAdjust
   STATE      cmd_3
   TYPE       DOIF
   VERSION    19303 2019-05-01 08:47:16
   Helper:
     DBLOG:
       cmd:
         DbLog:
           TIME       1557586503.44506
           VALUE      3
       cmd_event:
         DbLog:
           TIME       1557586503.44506
           VALUE      DS716
       cmd_nr:
         DbLog:
           TIME       1557586503.44506
           VALUE      3
       mode:
         DbLog:
           TIME       1557586483.28269
           VALUE      enabled
       state:
         DbLog:
           TIME       1557586503.44506
           VALUE      cmd_3
   READINGS:
     2019-05-11 17:09:03   Device          DS716
     2019-05-11 16:55:03   cmd             3
     2019-05-11 16:55:03   cmd_event       DS716
     2019-05-11 16:55:03   cmd_nr          3
     2019-05-11 17:09:03   e_DS716_ram     Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     2019-05-11 16:54:43   mode            enabled
     2019-05-11 16:55:03   state           cmd_3
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'DS716','ram','','Used: (\d+)') > 2000
     1          ::ReadingValDoIf($hash,'RAMmsgAdjust','cmd') eq "1" and ::ReadingValDoIf($hash,'Eichenheim_Bot','msgText') eq "restart"
   devices:
     0           DS716
     1           RAMmsgAdjust Eichenheim_Bot
     all         DS716 RAMmsgAdjust Eichenheim_Bot
   do:
     0:
       0          msg push @rr_Michael Ram Auslastung angestiegen Neustart von FHEM ausführen
     1:
       0          shutdown restart
     2:
       0         
   helper:
     event      ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   DS716
     timerevent ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     triggerDev DS716
     DOIF_eventas:
       cmd_nr: 3
       cmd: 3
       cmd_event: DS716
       state: cmd_3
     bm:
       DOIF_Get:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 16:57:52
         max        1.50203704833984e-05
         tot        1.50203704833984e-05
         mAr:
           HASH(0x90ef798)
           RAMmsgAdjust
           ?
       DOIF_Notify:
         cnt        1549
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 16:55:03
         max        0.00888991355895996
         tot        0.0915963649749756
         mAr:
           HASH(0x90ef798)
           HASH(0x455a208)
       DOIF_Set:
         cnt        5
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 16:57:52
         max        6.79492950439453e-05
         tot        0.000266790390014648
         mAr:
           HASH(0x90ef798)
           RAMmsgAdjust
           ?
     timerevents:
       ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     timereventsState:
       ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     triggerEvents:
       ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
     triggerEventsState:
       ram: Total: 7903.75 MB, Used: 687.65 MB, 8.70 %, Free: 1637.24 MB
   internals:
   itimer:
   readings:
     0           DS716:ram
     1           RAMmsgAdjust:cmd Eichenheim_Bot:msgText
     all         DS716:ram RAMmsgAdjust:cmd Eichenheim_Bot:msgText
   trigger:
   uiState:
   uiTable:
Attributes:
   group      msg-adjust
   room       97-Helper,99-Controller


Einen schönheitsfehler habe ich noch - ich kann ja jetzt via Telegram FHEM neustarten, funktioniert auch prächtig...
Toll wäre aber das bevor der shutdown ausgeführt wird geprüft werden würde auf "structural changes" also das rote fragezeichen.
Noch toller wäre wenn dann der Inhalt des popups via Telegram gesendet werden würde so könnte man sogar ein save absetzen.
In der regel habe ich aber einen gespeicherten Zustand und frage mich gerade ob ich das wirklich brauche..

der-Lolo

Hm, das ganze funktioniert wie gewünscht -
einziger haken scheint zu sein, dass das SYSMON Modul die Infomationen der DS nur abfragt wenn FHEM auf einem Browser aktiv ist...
Bei 2GB wird nicht gesendet, es wird nur gesendet wenn > 2GB und ich einen FHEM raum im Browser öffne, es muss aber noch nichtmal der Controller - Room sein.