FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: SofB am 12 November 2016, 13:48:35

Titel: Wert merken bzw. Delta ermitteln
Beitrag von: SofB am 12 November 2016, 13:48:35
Hallo!

ich möchte gerne den Throughput der Firewall anzeigen.
Dazu lese ich mit SNMP alle 60 Sekunden die Interfaces aus (value_before). Ich bekomme dann die absolute Menge zurück.
60 Sekunden (value_now) später habe ich dann sozusagen eine größere Menge als 60 Sekunden davor.

Ich stelle mir das so vor:

value_now - value_old = current.

Wie kann ich mir das merken? Ich experimentiere mit userreadings rum, aber so richtig verstehe ich es nicht...

Danke!
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: justme1968 am 12 November 2016, 14:20:53
userReadings typ differential sollte machen was du willst.

was hast du denn schon probiert.

gruss
  andre
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: SofB am 12 November 2016, 14:40:14
Ich hatte es erst mit UserAttr versucht und gemerkt, dass ich auf dem Holzweg gewesen bin.
Danach mit

userReadings dl_before { ReadingsVal("FirewallSNMP","em0_out",0);; }
und wollte es dann als label ausgeben, wo ich das Delta berechne.

Jetzt bin ich mit Deinem Tipp schonmal etwas weiter:

download_current differential { ReadingsVal("FirewallSNMP","em0_out",0) /8/1024 ;;;; }
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: justme1968 am 12 November 2016, 15:40:12
schaut doch gut aus. die vielen ; sind aber unnötig.
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: SofB am 12 November 2016, 16:18:41
Danke.

So sieht es jetzt aus:

download_current differential { ReadingsVal("FirewallSNMP","pppoe_in",0) /1000/60  } ,
upload_current differential { ReadingsVal("FirewallSNMP","pppoe_out",0) /1000/60  }

da ist noch ein Fehler drin. Und zwar sollte das /1000/60 erst NACH der differential Ermittlung erfolgen.
Wie bekommt man das denn hin...?
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: justme1968 am 12 November 2016, 16:24:20
ob du vorher oder nachher dividierst ist doch egal: (X/1000)-(Y/1000) = (X-Y)/1000

schau dir noch mal an ob du die /60 wirklich brauchst. differential berücksichtig die zeit zwischen readings automatisch. difference wäre die reine differenz.

gruss
  andre
Titel: Antw:Wert merken bzw. Delta ermitteln
Beitrag von: SofB am 12 November 2016, 16:27:32
Stimmt. Das /60 brauche ich nicht.
Ich hatte es zwischenzeitlich mit einem 2. Reading gelöst, welches sich die Daten aus dem ersten zieht und mir fiel dann auf, dass es keinen Unterschied macht.

Hier meine Lösung zum Monitoren des Firewall Throughputs:


defmod FirewallSNMP SYSSTAT 60 600 firewall
attr FirewallSNMP mibs 1.3.6.1.2.1.2.2.1.10.9:pppoe_in , 1.3.6.1.2.1.2.2.1.16.9:pppoe_out , 1.3.6.1.2.1.1.3.0:Connection_Duration
attr FirewallSNMP room UtilityRoom
attr FirewallSNMP snmp 1
attr FirewallSNMP snmpCommunity derIsGeheim!!
attr FirewallSNMP snmpVersion 2
attr FirewallSNMP stateFormat {sprintf("Down: %0.0f kb/sec Up: %0.0f kb/sec", ReadingsVal("FirewallSNMP","download_current_byte",0), ReadingsVal("FirewallSNMP","upload_current_byte",0))}
attr FirewallSNMP userReadings download_current_byte differential { ReadingsVal("FirewallSNMP","pppoe_in",0) /1024} ,\
upload_current_byte differential { ReadingsVal("FirewallSNMP","pppoe_out",0) /1024}\


Vielleicht braucht es ja mal jemand..

Danke für die Unterstützung :)