Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Skript Hardwareinformationen via SNMP

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Skript Hardwareinformationen via SNMP

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ro75
      Ro75 last edited by Ro75

      Hallo. Heute stelle ich euch einmal mein Skript "Hardwareinformationen" vor. Dieses Skript ist etwas umfangreicher und anspruchsvoller.

      Mit dem Skript können Hardwareinformationen vom Host (also da wo der ioBroker läuft) oder auch von jedem anderen Gerät im Netzwerk ausgelesen werden. Voraussetzung ist SNMP.

      Danach werden diese Daten in Ordner gepackt und so gestaltet, um sie in Visualisierungen (VIS/VIS2,...) oder auch Grafana zu nutzen.

      13c3f4de-ffec-461d-bcfe-55c73ad56b3f-image.png

      Es können die Daten von einem Gerät oder auch von mehreren abgefragt werden.

      2eb63e34-d983-48ab-bcea-f2fac35e0248-image.png
      Hier einfach einmal paar Details.

      Allgemeine Informationen:

      Auf Geräten mit Linux ist das Auslesen von SNMP-Informationen kein Problem. Unter Windows ist dies auch möglich, aber nicht so umfangreich (wie es gebraucht wird). Die Daten stehen in einer Datenbank. Jedes Objekt (Daten) sind sogenannte OID's.

      Dabei unterscheidet man nach OID's, welche auf jedem System (z.B. PI + NUC mit Debian 11, 12 oder Ubuntu) vorhanden sind, oder nur auf bestimmten Geräten (Scanner, Drucker - herstellerabhängig). Dafür ist etwas Zeit, Detektivarbeit und die passende Software zum Heraussuchen der passenden OID's nötig. Dafür verwende ich: MIB Browser (https://www.ireasoning.com/).

      Ich habe bei mir SNMP getestet:

      1. Debian 11 (PI) - viele Informationen (CPU, BOARD, RAM, HDD, SWAP, Netzwerk)
      2. Debian 12 (PI) - viele Informationen (CPU, BOARD, RAM, HDD, SWAP, Netzwerk)
      3. NUC (Ubuntu 22.04.x LTS und 24.04.x LTS) - viele Informationen (CPU, BOARD, RAM, HDD, SWAP, Netzwerk)
      4. Drucker (HP Laserjet 150nw) - wenige Informationen (Toner, Trommel, Seiten)
      5. Scanner (Brother DS-940DW) - wenige Informationen (Seiten)
      6. WD MyCloud2ExUltra - viele Informationen (CPU, BOARD, RAM, HDD, SWAP, Netzwerk)
      7. Windows 11 - einige Informationen (RAM, HDD, Netzwerk)

      Theoretisch auf jedem Gerät was SNMP bereits installiert hat und nur noch aktiviert werden muss, oder wo es nachinstalliert werden kann.

      Welche Daten kann (standardmäßig) das Skript auslesen?

      //Temperaturen (experimentieren, welcher OID passt)
      1.3.6.1.4.1.2021.13.16.2.1.3.1 - Temperatur (PI mit Debian)
      1.3.6.1.4.1.2021.13.16.2.1.3.2 - Temperatur (NUC mit Ubuntu)
      1.3.6.1.4.1.2021.13.16.2.1.3.3 - Temperatur (PI + NUC)
      1.3.6.1.4.1.2021.13.16.2.1.3.4 - Temperatur (PI + NUC)
      1.3.6.1.4.1.2021.13.16.2.1.3.5 - Temperatur (PI + NUC)
      1.3.6.1.4.1.2021.13.16.2.1.3.6 - Temperatur (PI + NUC)

      //FAN (PI, aber nur wenn installiert)
      1.3.6.1.4.1.2021.13.16.3.1.3.2

      // CPU Auslastung 1 Minute, 5 Minuten, 15 Minuten
      1.3.6.1.4.1.2021.10.1.3.1 - C1
      1.3.6.1.4.1.2021.10.1.3.2 - C5
      1.3.6.1.4.1.2021.10.1.3.3 - C15

      //Netzwerk
      1.3.6.1.2.1.2.2.1.10.3 - Net_In
      1.3.6.1.2.1.2.2.1.16.3 - Net_Out

      //HDD, bei PI SD-Karte - Bootlaufwerk
      1.3.6.1.2.1.25.2.3.1.5.36 - HDD
      1.3.6.1.2.1.25.2.3.1.6.36 - HDD_Used
      1.3.6.1.2.1.25.2.3.1.4.36 - HDD_Alloc

      //RAM
      1.3.6.1.2.1.25.2.3.1.5.1 - RAM
      1.3.6.1.2.1.25.2.3.1.6.1 - RAM_Used
      1.3.6.1.2.1.25.2.3.1.4.1 - RAM_Alloc
      1.3.6.1.2.1.25.2.3.1.6.6 - RAM_Buffer
      1.3.6.1.2.1.25.2.3.1.6.7 - RAM_Cache
      1.3.6.1.2.1.25.2.3.1.5.11 - RAM_Avail
      1.3.6.1.2.1.25.2.3.1.5.8 - RAM_Shared

      //SWAP
      1.3.6.1.2.1.25.2.3.1.5.10 - SWAP
      1.3.6.1.2.1.25.2.3.1.6.10 - SWAP_Used
      1.3.6.1.2.1.25.2.3.1.4.10 - SWAP_Alloc

      Das Skript lässt sich aber auch flexibel anpassen. So können auch andere Daten ausgelesen, gespeichert und ausgewertet werden

      VORARBEITEN - DIENST (SERVICE) SNMP:

      +++SNMP unter Linux installieren und einrichten:+++

      1. System auf aktuellen Stand bringen.
      sudo apt update
      sudo apt full-upgrade
      

      danach ggfs. ein sudo reboot

      1. SNMP installieren.
      sudo apt install snmp snmpd
      
      1. SNMP konfigurieren. Hier bitte mit meiner Konfiguration vergleichen und bei euch anpassen. Die Konfigurationsdatei findet ihr im Verzeichnis:
      /etc/snmp
      

      zum editieren z.B.

      nano /etc/snmp/snmpd.conf
      
      ###########################################################################
      #
      # snmpd.conf
      # An example configuration file for configuring the Net-SNMP agent ('snmpd')
      # See snmpd.conf(5) man page for details
      #
      ###########################################################################
      # SECTION: System Information Setup
      #
      
      # syslocation: The [typically physical] location of the system.
      #   Note that setting this value here means that when trying to
      #   perform an snmp SET operation to the sysLocation.0 variable will make
      #   the agent return the "notWritable" error code.  IE, including
      #   this token in the snmpd.conf file will disable write access to
      #   the variable.
      #   arguments:  location_string
      sysLocation    Sitting on the Dock of the Bay
      sysContact     Me <me@example.org>
      
      # sysservices: The proper value for the sysServices object.
      #   arguments:  sysservices_number
      sysServices    72
      
      
      
      ###########################################################################
      # SECTION: Agent Operating Mode
      #
      #   This section defines how the agent will operate when it
      #   is running.
      
      # master: Should the agent operate as a master agent or not.
      #   Currently, the only supported master agent type for this token
      #   is "agentx".
      #   
      #   arguments: (on|yes|agentx|all|off|no)
      
      master  agentx
      
      # agentaddress: The IP address and port number that the agent will listen on.
      #   By default the agent listens to any and all traffic from any
      #   interface on the default SNMP port (161).  This allows you to
      #   specify which address, interface, transport type and port(s) that you
      #   want the agent to listen on.  Multiple definitions of this token
      #   are concatenated together (using ':'s).
      #   arguments: [transport:]port[@interface/address],...
      
      agentaddress  udp:161
      
      
      
      ###########################################################################
      # SECTION: Access Control Setup
      #
      #   This section defines who is allowed to talk to your running
      #   snmp agent.
      
      # Views 
      #   arguments viewname included [oid]
      
      #  system + hrSystem groups only
      view   systemonly  included   .1.3.6.1.2.1.1
      view   systemonly  included   .1.3.6.1.2.1.25.1
      
      view   systemonly  included   .1.3.6.1.4.1.8072.1.3.2
      view   systemonly  included   .1.3.6.1.2.1.2
      view   systemonly  included   .1.3.6.1.2.1.25.2.3.1
      
      
      # rocommunity: a SNMPv1/SNMPv2c read-only access community name
      #   arguments:  community [default|hostname|network/bits] [oid | -V view]
      
      # Read-only access to everyone to the systemonly view
      rocommunity  public default
      rocommunity6 public default
      
      # SNMPv3 doesn't use communities, but users with (optionally) an
      # authentication and encryption string. This user needs to be created
      # with what they can view with rouser/rwuser lines in this file.
      #
      # createUser username (MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224) authpassphrase [DES|AES] [privpassphrase]
      # e.g.
      # createuser authPrivUser SHA-512 myauthphrase AES myprivphrase
      #
      # This should be put into /var/lib/snmp/snmpd.conf 
      #
      # rouser: a SNMPv3 read-only access username
      #    arguments: username [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]
      rouser authPrivUser authpriv -V systemonly
      
      # include a all *.conf files in a directory
      includeDir /etc/snmp/snmpd.conf.d
      

      Danach ein

      sudo reboot
      

      oder

      sudo systemctl restart snmpd
      

      VORARBEITEN - JS-Adapter
      cb8a33b8-aa33-41f8-b305-bbf60069c4cb-image.png

      Als zusätzliche NPM-Module muss ping und net-snmp eingetragen sein.

      HINWEIS: Wenn mehr als 4 Geräte aktiv abgefragt werden, kann es notwendig werden die Option "Maximale setState-Abfragen pro Minute pro Skript zu erhöhen.
      41bee180-bba0-4c54-b9b5-3f6444ff82a8-image.png

      Um es vorab zu sagen. Ein reines Einkopieren und Starten vom Skript wird nur bedingt zum Erfolg führen. Ein wenig Anpassung kann nötig werden. Damit es einfacher wird, habe ich nach dem Skript ein paar Beispiele zu Konfiguration beigefügt. Noch ein Hinweis. Im Skript sind zur Verdeutlichung 4 Geräte konfiguriert.

      //Version 1.0.1 - 28.09.2024
      //Ersteller Ro75.
      
      //Voraussetzungen (Version 1.0.0 getestet mit)
      //NodeJS: 20.x
      //Javascript-Adapter: 8.7.6
      //Admin-Adapter: 7.0.23
      //JS-Controller: 6.0.11
      //OS: Debian 11, Debian 12, UBUNTU 22.04.x LTS, UBUNTU 24.04.x LTS
      
      
      const ping      = require('ping');              //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
      const snmp      = require("net-snmp");          //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
      const sMainPath = '0_userdata.0.HardwareInfo.'; //Zentraler Datenpunkt zur Datenablage
      
      //Konfiguration der auszulesenden Geräte (Rechner: PI, NUC) - kann frei zusammengestellt werden
      //Jedes Gerät ist ein Wert im Array aDevice
      
      // ********************* KONFIGURATION BEGINN *********************
      
      const CountDevice   = 8; //Anzahl der Geräte
      let aDevice         = new Array(CountDevice); //hier werden die Daten für jedes Gerät hinterlegt
      
      //Geräte definieren: Jedes Geräte besitzt 4 (vier) Informationen. Jede Information wird durch ein ":" (Doppelpunkt) getrennt
      //Info 1 = Bezeichnung:
      // Bei Drucker und Scanner muss dieses Wort mit in der Bezeichnung stehen - z.B. Drucker_HP150nw oder Scanner_DS-940DW
      
      //Info 2 = IP-Adresse
      //Info 3 = (Array) oID's (SNMP) - ACHTUNG: ungültige oder nicht vorhandene oIDs sorgen dafür, dass (gar) keine Daten geliefert werden
      //Info 4 = (Array) (zu Info 3 gehöriger Datenpunkt)
      //ACHTUNG: die Arrays von 3 und 4 müssen gleich groß sein
      //Die Nummerierung beginnt in einem Array bei 0!
      aDevice[0] = 'Rechenkraft:192.168.10.3:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      aDevice[1] = 'DashBoard:192.168.10.105:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      aDevice[2] = 'OMVNas:192.168.10.5:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.2,1.3.6.1.2.1.2.2.1.16.2,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10,1.3.6.1.2.1.25.2.3.1.5.72,1.3.6.1.2.1.25.2.3.1.6.72,1.3.6.1.2.1.25.2.3.1.4.72,1.3.6.1.2.1.25.2.3.1.3.72,1.3.6.1.2.1.25.2.3.1.5.56,1.3.6.1.2.1.25.2.3.1.6.56,1.3.6.1.2.1.25.2.3.1.4.56,1.3.6.1.2.1.25.2.3.1.3.56,1.3.6.1.2.1.25.2.3.1.5.57,1.3.6.1.2.1.25.2.3.1.6.57,1.3.6.1.2.1.25.2.3.1.4.57,1.3.6.1.2.1.25.2.3.1.3.57:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc,SDA,SDA_Used,SDA_Alloc,SDA_Descr,SDB,SDB_Used,SDB_Alloc,SDB_Descr,SDC,SDC_Used,SDC_Alloc,SDC_Descr"';
      aDevice[3] = 'Server:192.168.10.99:1.3.6.1.4.1.2021.13.16.2.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      aDevice[4] = 'Boinc:192.168.10.2:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      aDevice[5] = 'MyCloud2ExUltra:192.168.10.7:1.3.6.1.4.1.5127.1.1.1.8.1.7.0,1.3.6.1.4.1.5127.1.1.1.8.1.8.0,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.2,1.3.6.1.2.1.2.2.1.16.2,1.3.6.1.2.1.25.2.3.1.5.57,1.3.6.1.2.1.25.2.3.1.6.57,1.3.6.1.2.1.25.2.3.1.4.57,1.3.6.1.2.1.25.2.3.1.3.57,1.3.6.1.2.1.25.2.3.1.5.58,1.3.6.1.2.1.25.2.3.1.6.58,1.3.6.1.2.1.25.2.3.1.4.58,1.3.6.1.2.1.25.2.3.1.3.58,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.6.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur_String,FAN_String,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,HDD_Descr,SDA,SDA_Used,SDA_Alloc,SDA_Descr,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      aDevice[6] = 'Drucker_HP150nw:192.168.10.19:1.3.6.1.2.1.43.11.1.1.9.1.1,1.3.6.1.2.1.43.11.1.1.9.1.2,1.3.6.1.2.1.43.11.1.1.9.1.3,1.3.6.1.2.1.43.11.1.1.9.1.4,1.3.6.1.2.1.43.11.1.1.9.1.5,1.3.6.1.2.1.43.11.1.1.9.1.6,1.3.6.1.2.1.43.10.2.1.4.1.1,1.3.6.1.2.1.43.11.1.1.9.1.7,1.3.6.1.2.1.43.11.1.1.9.1.8,1.3.6.1.2.1.43.11.1.1.9.1.9,1.3.6.1.2.1.43.11.1.1.9.1.10,1.3.6.1.2.1.43.5.1.1.17.1,1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.6.0,1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.2.7.0:"Cyan_Stand,Magenta_Stand,Yellow_Stand,Black_Stand,Bildeinheit_Stand,Transfereinheit_Stand,Druckvorgänge,Fuser_Stand,Tray_Stand,FrictionPad_Stand,WasteToner_Stand,Seriennummer,DruckvorgängeSW,DruckvorgängeColor"';
      aDevice[7] = 'Scanner_DS-940DW:192.168.10.18:1.3.6.1.4.1.2435.2.3.9.4.2.1.5.5.54.2.2.1.3.3,1.3.6.1.4.1.2435.2.3.9.4.2.1.5.5.54.2.2.1.2.3,1.3.6.1.2.1.43.5.1.1.17.1:"Seiten,Fehler,Seriennummer"';
      
      // ********************* KONFIGURATION ENDE *********************
      
      
      // ********************* AB HIER NICHTS MEHR ÄNDERN *********************
      
      
      //Anlage der Datenpunkte und Vorbereitung der Netzwerk-Variablen, basierend auf const aDevice
      let db_IN_NEW   = new Array(CountDevice);
      let db_OUT_NEW  = new Array(CountDevice);
      let db_IN_OLD   = new Array(CountDevice);
      let db_OUT_OLD  = new Array(CountDevice);
      let db_IN_DIFF  = new Array(CountDevice);
      let db_OUT_DIFF = new Array(CountDevice);
      let db_IN_SUM   = new Array(CountDevice);
      let db_OUT_SUM  = new Array(CountDevice);
      
      
      function Initalisierung(){
          for (let i = 0; i <=CountDevice-1; i++) {
              let device_data = aDevice[i].split(':');
              //Hauptordner
              createState(sMainPath+device_data[0], '', {name: device_data[1],read: true, write: true});
      
              if (device_data[0].indexOf('Drucker') == -1 && device_data[0].indexOf('Scanner') == -1) {
                  //SNMP DATA
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Temperatur', 0, {name: 'Temperatur' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Temperatur_String', '', {name: 'Temperatur_String' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent - speziell WD Geräte
                  createState(sMainPath+device_data[0]+'.SNMP_Data.C1', '', {name: 'CPU 1' ,type: 'string', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.C5', '', {name: 'CPU 5' ,type: 'string', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.C15', '', {name: 'CPU 15' ,type: 'string', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.FAN', 0, {name: 'FAN' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.FAN_String', '', {name: 'FAN_String' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent - speziell WD Geräte
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Net_In', 0, {name: 'Net_In' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Net_Out', 0, {name: 'Net_Out' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM', 0, {name: 'RAM' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Used', 0, {name: 'RAM_Used' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Alloc', 0, {name: 'RAM_Alloc' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Buffer', 0, {name: 'RAM_Buffer' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Cache', 0, {name: 'RAM_Cache' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Avail', 0, {name: 'RAM_Avail' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.RAM_Shared', 0, {name: 'RAM_Shared' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.HDD', 0, {name: 'HDD' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.HDD_Used', 0, {name: 'HDD_Used' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.HDD_Alloc', 0, {name: 'HDD_Alloc' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.HDD_Descr', '', {name: 'Bezeichnung UUID' ,type: 'string', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDA', 0, {name: 'SDA' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDA_Used', 0, {name: 'SDA_Used' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDA_Alloc', 0, {name: 'SDA_Alloc' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDA_Descr', '', {name: 'Bezeichnung UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDB', 0, {name: 'SDB' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDB_Used', 0, {name: 'SDB_Used' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDB_Alloc', 0, {name: 'SDB_Alloc' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDB_Descr', '', {name: 'Bezeichnung UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDC', 0, {name: 'SDC' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDC_Used', 0, {name: 'SDC_Used' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDC_Alloc', 0, {name: 'SDC_Alloc' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SDC_Descr', '', {name: 'Bezeichnung UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SWAP', 0, {name: 'SWAP' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SWAP_Used', 0, {name: 'SWAP_Used' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SWAP_Alloc', 0, {name: 'SWAP_Alloc' ,type: 'number', read: true, write: true});
              } else if (device_data[0].indexOf('Drucker') >= 0) {
                  //SNMP DATA - Drucker
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Cyan_Stand', 0, {name: 'Cyan_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Magenta_Stand', 0, {name: 'Magenta_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Yellow_Stand', 0, {name: 'Yellow_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Black_Stand', 0, {name: 'Black_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Bildeinheit_Stand', 0, {name: 'Bildeinheit_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Transfereinheit_Stand', 0, {name: 'Transfereinheit_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Druckvorgänge', 0, {name: 'Druckvorgänge' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.DruckvorgängeSW', 0, {name: 'DruckvorgängeSW' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.DruckvorgängeColor', 0, {name: 'DruckvorgängeColor' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Tray_Stand', 0, {name: 'Tray_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.FrictionPad_Stand', 0, {name: 'FrictionPad_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.WasteToner_Stand', 0, {name: 'WasteToner_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Fuser_Stand', 0, {name: 'Fuser_Stand' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Seriennummer', '', {name: 'Seriennummer' ,type: 'string', read: true, write: true});
              } else {
                  //SNMP DATA - Scanner
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Seiten', 0, {name: 'Seiten' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SeitenSW', 0, {name: 'SeitenSW' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.SeitenColor', 0, {name: 'SeitenColor' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Fehler', 0, {name: 'Fehler' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.SNMP_Data.Seriennummer', '', {name: 'Seriennummer' ,type: 'string', read: true, write: true});
              }
      
              if (device_data[0].indexOf('Drucker') == -1 && device_data[0].indexOf('Scanner') == -1) {
                  //DETAILS
                  createState(sMainPath+device_data[0]+'.CPU.Temperatur', 0, {name: 'Temperatur' ,type: 'number', read: true, write: true, unit: '°C'});
                  createState(sMainPath+device_data[0]+'.CPU.M1', 0, {name: '1 Minute' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.CPU.M5', 0, {name: '5 Minuten' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.CPU.M15', 0, {name: '15 Minuten' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.CPU.FAN', 0, {name: 'Lüfter' ,type: 'number', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.RAM.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.RAM.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.RAM.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.RAM.Puffer', 0, {name: 'Puffer' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.RAM.Avail', 0, {name: 'Avail' ,type: 'number', read: true, write: true, unit: 'Byte'});
      
                  createState(sMainPath+device_data[0]+'.SWAP.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.SWAP.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.SWAP.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.SWAP.Free', 0, {name: 'Free' ,type: 'number', read: true, write: true, unit: 'Byte'});
      
                  createState(sMainPath+device_data[0]+'.HDD.0.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.HDD.0.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.HDD.0.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.HDD.0.Free', 0, {name: 'Free' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.HDD.0.UUID', '', {name: 'UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.1.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.1.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.1.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.1.Free', 0, {name: 'Free' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.1.UUID', '', {name: 'UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.2.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.2.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.2.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.2.Free', 0, {name: 'Free' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.2.UUID', '', {name: 'UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.3.Total', 0, {name: 'Total' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.3.Used', 0, {name: 'Used' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.3.UsedProzent', 0, {name: 'UsedProzent' ,type: 'number', read: true, write: true, unit: '%'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.3.Free', 0, {name: 'Free' ,type: 'number', read: true, write: true, unit: 'Byte'}); //Platzhalter - nicht immer existent
                  createState(sMainPath+device_data[0]+'.HDD.3.UUID', '', {name: 'UUID' ,type: 'string', read: true, write: true}); //Platzhalter - nicht immer existent
      
                  createState(sMainPath+device_data[0]+'.Network.In_Summe', 0, {name: 'Summe IN' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.Network.Out_Summe', 0, {name: 'Summe OUT' ,type: 'number', read: true, write: true, unit: 'Byte'});
                  createState(sMainPath+device_data[0]+'.Network.In_Speed', 0, {name: 'Speed IN' ,type: 'number', read: true, write: true, unit: 'Byte/s'});
                  createState(sMainPath+device_data[0]+'.Network.Out_Speed', 0, {name: 'Speed OUT' ,type: 'number', read: true, write: true, unit: 'Byte/s'});
                  createState(sMainPath+device_data[0]+'.Network.Net_Speed', 0, {name: 'Speed SUMME' ,type: 'number', read: true, write: true, unit: 'Byte/s'});
              } else if (device_data[0].indexOf('Drucker') >= 0) {
                  //DETAILS - Drucker
                  createState(sMainPath+device_data[0]+'.Cyan', 0, {name: 'Cyan' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Magenta', 0, {name: 'Magenta' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Yellow', 0, {name: 'Yellow' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Black', 0, {name: 'Black' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Bildeinheit', 0, {name: 'Bildeinheit' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Transfereinheit', 0, {name: 'Transfereinheit' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Fixiereinheit', 0, {name: 'Fixiereinheit' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Resttonerbox', 0, {name: 'Resttonerbox' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Einzugsrolle', 0, {name: 'Einzugsrolle' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Separationpads', 0, {name: 'Separationpads' ,type: 'number', read: true, write: true, unit: '%'});
                  createState(sMainPath+device_data[0]+'.Pages', 0, {name: 'Seiten' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Pages_SW', 0, {name: 'Seiten_S/W' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Pages_Color', 0, {name: 'Seiten_Farbe' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Seriennummer', '', {name: 'Seriennummer' ,type: 'string', read: true, write: true});
              } else {
                  //DETAILS - Scanner
                  createState(sMainPath+device_data[0]+'.Pages', 0, {name: 'Seiten' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Pages_SW', 0, {name: 'Seiten_S/W' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Pages_Color', 0, {name: 'Seiten_Farbe' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Fehler', 0, {name: 'Fehler' ,type: 'number', read: true, write: true});
                  createState(sMainPath+device_data[0]+'.Seriennummer', '', {name: 'Seriennummer' ,type: 'string', read: true, write: true});
              }
      
              //Netzwerk-Variablen
              db_IN_NEW[i]    = 0;
              db_OUT_NEW[i]   = 0;
              db_IN_OLD[i]    = 0;
              db_OUT_OLD[i]   = 0;
              db_IN_DIFF[i]   = 0;
              db_OUT_DIFF[i]  = 0;
              db_IN_SUM[i]    = 0;
              db_OUT_SUM[i]   = 0;
          }
      }
      //START
      Initalisierung();
      
      function fRundenM(num) {
          var m = Number((Math.abs(num) * 100).toPrecision(15));
          return Math.round(m) / 100 * Math.sign(num);
      }
      
      async function pingHost(host) {
          try {
              const res = await ping.promise.probe(host);
              return JSON.parse(JSON.stringify(res)).alive;
          } catch (error) {
              console.error(error);
          }
      }
      
      function Datenfilter(Typ=0, Wert) {
          if(Typ == 4) {
              var a= Array.from(new Uint8Array(Wert));
              return String.fromCharCode(...a);
          } else {
              return Wert;
          }
      }
      
      async function SNMPQuery(sDP='', sIP='', oids, dps) {
          let oid_data = oids.split(',');
          let oidlist = new Array(oid_data.length);
          for (let i = 0; i <= oid_data.length-1; i++) {
              oidlist[i] = oid_data[i];
          }
      
          dps = dps.substr(0, dps.length - 1);
          dps = dps.substring(1);
      
          let dp_data = dps.split(',');
          let dplist = new Array(dp_data.length);
          for (let i = 0; i <= dp_data.length-1; i++) {
              dplist[i] = dp_data[i];
          }
      
      
          var session = snmp.createSession (sIP, "public");
          session.get (oidlist, function (error, varbinds) {
              if (!error) {
                  for (var i = 0; i < varbinds.length; i++) {
                      if (snmp.isVarbindError (varbinds[i])) {
                          console.error (snmp.varbindError (varbinds[i]));
                      } else {
                          setState(sDP+dplist[i], Datenfilter(varbinds[i].type,varbinds[i].value), true);
                      }
                  }
              }
              session.close ();
          });
      }
      
      schedule('*/10 * * * * *', async function Datenabruf() {
          for (let i = 0; i <= aDevice.length-1; i++) {
              let device_data = aDevice[i].split(':');
              if( await pingHost(device_data[1]) == true) {
                  await SNMPQuery(sMainPath+device_data[0]+'.SNMP_Data.', device_data[1], device_data[2], device_data[3]);
                  await sleep(500);
                  if (device_data[0].indexOf('Drucker') == -1 && device_data[0].indexOf('Scanner') == -1) {
                      await Netzwerk(i, sMainPath+device_data[0], true);
                      await SWAP(sMainPath+device_data[0],true);
                      await RAM(sMainPath+device_data[0],true);
                      await HDD(sMainPath+device_data[0],'HDD',0,true);
                      await HDD(sMainPath+device_data[0],'SDA',1,true);
                      await HDD(sMainPath+device_data[0],'SDB',2,true);
                      await HDD(sMainPath+device_data[0],'SDC',3,true);
                      await BOARD(sMainPath+device_data[0],true);
                  } else if (device_data[0].indexOf('Drucker') >= 0) {
                      //Drucker
                      await Drucker(sMainPath+device_data[0]);
                  } else {
                      //Scanner
                      await Scanner(sMainPath+device_data[0]);
                  }
              } else {
                  await sleep(500);
                  if (device_data[0].indexOf('Drucker') == -1 && device_data[0].indexOf('Scanner') == -1) {
                      await Netzwerk(i, sMainPath+device_data[0], false);
                      await SWAP(sMainPath+device_data[0],false);
                      await RAM(sMainPath+device_data[0],false);
                      await HDD(sMainPath+device_data[0],'HDD',0,false);
                      await HDD(sMainPath+device_data[0],'SDA',1,false);
                      await HDD(sMainPath+device_data[0],'SDB',2,false);
                      await HDD(sMainPath+device_data[0],'SDC',3,false);
                      await BOARD(sMainPath+device_data[0],false);
                  }
              }
          }
      });
      
      
      //************************************************ AB HIER DIE AUSWERTUNG DER SNMP DATEN in BRAUCHBARE DATEN */
      
      
      async function Netzwerk(ID, dpDevice, bOnline=true) {
          if(bOnline == true) {
              db_IN_OLD[ID] = db_IN_NEW[ID];
              db_OUT_OLD[ID] = db_OUT_NEW[ID];
              db_IN_NEW[ID] = getState(dpDevice+'.SNMP_Data.Net_In').val*1;
              db_OUT_NEW[ID] = getState(dpDevice+'.SNMP_Data.Net_Out').val*1;
      
              db_IN_DIFF[ID] = db_IN_NEW[ID]-db_IN_OLD[ID];
              if (db_IN_DIFF[ID] < 0) {
                  db_IN_DIFF[ID]=(4294967295-db_IN_OLD[ID])+db_IN_NEW[ID];
              }
              db_IN_SUM[ID]=db_IN_SUM[ID]+db_IN_DIFF[ID];
      
              db_OUT_DIFF[ID]=db_OUT_NEW[ID]-db_OUT_OLD[ID];
              if (db_OUT_DIFF[ID] < 0) {
                  db_OUT_DIFF[ID]=(4294967295-db_OUT_OLD[ID])+db_OUT_NEW[ID];
              }
              db_OUT_SUM[ID]=db_OUT_SUM[ID]+db_OUT_DIFF[ID];
              setState(dpDevice+'.Network.In_Summe', db_IN_SUM[ID], true);
              setState(dpDevice+'.Network.Out_Summe', db_OUT_SUM[ID], true);
              setState(dpDevice+'.Network.In_Speed', db_IN_DIFF[ID]/10, true); //Division mit 10, weil Abruf aller 10 Sekunden - brauchbares Ergebnis
              setState(dpDevice+'.Network.Out_Speed', db_OUT_DIFF[ID]/10, true); //Division mit 10, weil Abruf aller 10 Sekunden - brauchbares Ergebnis
              setState(dpDevice+'.Network.Net_Speed', (db_OUT_DIFF[ID] + db_IN_DIFF[ID])/10, true); //Division mit 10, weil Abruf aller 10 Sekunden - brauchbares Ergebnis
          } else {
              db_IN_NEW[ID]   = 0;
              db_OUT_NEW[ID]  = 0;
              db_IN_OLD[ID]   = 0;
              db_OUT_OLD[ID]  = 0;
              db_IN_DIFF[ID]  = 0;
              db_OUT_DIFF[ID] = 0;
              db_IN_SUM[ID]   = 0;
              db_OUT_SUM[ID]  = 0;
              setState(dpDevice+'.Network.In_Summe', 0, true);
              setState(dpDevice+'.Network.Out_Summe', 0, true);
              setState(dpDevice+'.Network.In_Speed', 0, true);
              setState(dpDevice+'.Network.Out_Speed', 0, true);
              setState(dpDevice+'.Network.Net_Speed', 0, true);
              setState(dpDevice+'.SNMP_Data.Net_In', 0, true);
              setState(dpDevice+'.SNMP_Data.Net_Out', 0, true);
          }
      }
      
      async function BOARD(dpDevice, bOnline=true) {
          if(bOnline == true) {
              if(getState(dpDevice+'.SNMP_Data.Temperatur').val == 0 && getState(dpDevice+'.SNMP_Data.Temperatur_String').val != '') {
                  // 1. Ausnahme: WD - MyCloud
                  let wdTemperatur = getState(dpDevice+'.SNMP_Data.Temperatur_String').val;
                  let Position = wdTemperatur.indexOf('Centigrade:');
                  wdTemperatur = wdTemperatur.substring(Position+11,13);
                  setState(dpDevice+'.CPU.Temperatur', Number(wdTemperatur), true);
              } else {
                  //Normalfall
                  setState(dpDevice+'.CPU.Temperatur', fRundenM(getState(dpDevice+'.SNMP_Data.Temperatur').val/1000), true);
              }
      
              setState(dpDevice+'.CPU.M1', Number(getState(dpDevice+'.SNMP_Data.C1').val), true);
              setState(dpDevice+'.CPU.M5', Number(getState(dpDevice+'.SNMP_Data.C5').val), true);
              setState(dpDevice+'.CPU.M15', Number(getState(dpDevice+'.SNMP_Data.C15').val), true);
      
              if(getState(dpDevice+'.SNMP_Data.FAN').val == 0 && getState(dpDevice+'.SNMP_Data.FAN_String').val != '') {
                  // 1. Ausnahme: WD - MyCloud
                  let wdFAN = getState(dpDevice+'.SNMP_Data.FAN_String').val;
                  let Position = wdFAN.indexOf('stop');
                  if (Position > 0) {
                      wdFAN = 0;
                  } else {
                      wdFAN = 5000; //Pseudowert nehmen, da es keine andere Daten gibt
                  }
                  setState(dpDevice+'.CPU.FAN', wdFAN, true);
              } else {
                  //Normalfall
                  setState(dpDevice+'.CPU.FAN', getState(dpDevice+'.SNMP_Data.FAN').val, true);
              }
          } else {
              setState(dpDevice+'.CPU.Temperatur', 0, true);
              setState(dpDevice+'.CPU.M1', 0, true);
              setState(dpDevice+'.CPU.M5', 0, true);
              setState(dpDevice+'.CPU.M15', 0, true);
              setState(dpDevice+'.CPU.FAN', 0, true);
          }
      }
      
      async function SWAP(dpDevice, bOnline=true) {
          if(bOnline == true) {
              let cAlloc  = getState(dpDevice+'.SNMP_Data.SWAP_Alloc').val;
              let cTotal  = getState(dpDevice+'.SNMP_Data.SWAP').val;
              let cUsed   = getState(dpDevice+'.SNMP_Data.SWAP_Used').val;
      
              setState(dpDevice+'.SWAP.Total', cTotal*cAlloc, true);
              setState(dpDevice+'.SWAP.Used', cUsed*cAlloc, true);
              setState(dpDevice+'.SWAP.Free', (cTotal-cUsed)*cAlloc, true);
              setState(dpDevice+'.SWAP.UsedProzent', fRundenM(100-((cTotal-cUsed)/cTotal)*100), true);
          } else {
              setState(dpDevice+'.SWAP.Total', 0, true);
              setState(dpDevice+'.SWAP.Used', 0, true);
              setState(dpDevice+'.SWAP.Free', 0, true);
              setState(dpDevice+'.SWAP.UsedProzent', 0, true);
          }
      }
      
      async function RAM(dpDevice, bOnline=true) {
          if(bOnline == true) {
              let cAlloc  = getState(dpDevice+'.SNMP_Data.RAM_Alloc').val;
              let cTotal  = getState(dpDevice+'.SNMP_Data.RAM').val;
              let cAvail  = getState(dpDevice+'.SNMP_Data.RAM_Avail').val;
              let cBuffer = getState(dpDevice+'.SNMP_Data.RAM_Buffer').val;
              let cCache  = getState(dpDevice+'.SNMP_Data.RAM_Cache').val;
      
              setState(dpDevice+'.RAM.Total', cTotal*cAlloc, true);
              setState(dpDevice+'.RAM.Used', (cTotal-cAvail)*cAlloc, true);
              setState(dpDevice+'.RAM.Puffer', (cBuffer+cCache)*cAlloc, true);
              setState(dpDevice+'.RAM.Avail', cAvail*cAlloc, true);
              setState(dpDevice+'.RAM.UsedProzent', fRundenM((cTotal-cAvail)/cTotal*100), true);
          } else {
              setState(dpDevice+'.RAM.Total', 0, true);
              setState(dpDevice+'.RAM.Used', 0, true);
              setState(dpDevice+'.RAM.Puffer', 0, true);
              setState(dpDevice+'.RAM.Avail', 0, true);
              setState(dpDevice+'.RAM.UsedProzent', 0, true);
          }
      }
      
      async function HDD(dpDevice, sTyp='', dID=0, bOnline=true) {
          var vTotal=0, vUsed=0, vFree=0, vUsedProzent=0, vDesc='';
          if(bOnline == true) {
              let cAlloc  = getState(dpDevice+'.SNMP_Data.'+sTyp+'_Alloc').val;
              let cTotal  = getState(dpDevice+'.SNMP_Data.'+sTyp).val;
              let cUsed   = getState(dpDevice+'.SNMP_Data.'+sTyp+'_Used').val;
      
              if(cTotal != 0) {
                  vTotal          = cTotal*cAlloc;
                  vUsed           = cUsed*cAlloc;
                  vFree           = (cTotal-cUsed)*cAlloc;
                  vUsedProzent    = fRundenM(100-((cTotal-cUsed)/cTotal)*100);
              }
              vDesc = getState(dpDevice+'.SNMP_Data.'+sTyp+'_Descr').val.replace('/srv/dev-disk-by-uuid-','').replace('/mnt/HD/','');
      
          }
          setState(dpDevice+'.HDD.'+dID+'.Total', vTotal, true);
          setState(dpDevice+'.HDD.'+dID+'.Used', vUsed, true);
          setState(dpDevice+'.HDD.'+dID+'.Free', vFree, true);
          setState(dpDevice+'.HDD.'+dID+'.UsedProzent', vUsedProzent, true);
          setState(dpDevice+'.HDD.'+dID+'.UUID', vDesc, true);
      }
      
      async function Drucker(dpDevice) {
          setState(dpDevice+'.Cyan', getState(dpDevice+'.SNMP_Data.Cyan_Stand').val, true);
          setState(dpDevice+'.Magenta', getState(dpDevice+'.SNMP_Data.Magenta_Stand').val, true);
          setState(dpDevice+'.Black', getState(dpDevice+'.SNMP_Data.Black_Stand').val, true);
          setState(dpDevice+'.Yellow', getState(dpDevice+'.SNMP_Data.Yellow_Stand').val, true);
          setState(dpDevice+'.Bildeinheit', getState(dpDevice+'.SNMP_Data.Bildeinheit_Stand').val, true);
          setState(dpDevice+'.Transfereinheit', getState(dpDevice+'.SNMP_Data.Transfereinheit_Stand').val, true);
          setState(dpDevice+'.Fixiereinheit', getState(dpDevice+'.SNMP_Data.Fuser_Stand').val, true);
          setState(dpDevice+'.Resttonerbox', getState(dpDevice+'.SNMP_Data.WasteToner_Stand').val, true);
          setState(dpDevice+'.Einzugsrolle', getState(dpDevice+'.SNMP_Data.Tray_Stand').val, true);
          setState(dpDevice+'.Separationpads', getState(dpDevice+'.SNMP_Data.FrictionPad_Stand').val, true);
          setState(dpDevice+'.Pages', getState(dpDevice+'.SNMP_Data.Druckvorgänge').val, true);
          setState(dpDevice+'.Pages_SW', getState(dpDevice+'.SNMP_Data.DruckvorgängeSW').val, true);
          setState(dpDevice+'.Pages_Color', getState(dpDevice+'.SNMP_Data.DruckvorgängeColor').val, true);
          setState(dpDevice+'.Seriennummer', getState(dpDevice+'.SNMP_Data.Seriennummer').val, true);
      }
      
      async function Scanner(dpDevice) {
          setState(dpDevice+'.Pages', getState(dpDevice+'.SNMP_Data.Seiten').val, true);
          setState(dpDevice+'.Pages_SW', getState(dpDevice+'.SNMP_Data.SeitenSW').val, true);
          setState(dpDevice+'.Pages_Color', getState(dpDevice+'.SNMP_Data.SeitenColor').val, true);
          setState(dpDevice+'.Seriennummer', getState(dpDevice+'.SNMP_Data.Seriennummer').val, true);
          setState(dpDevice+'.Fehler', getState(dpDevice+'.SNMP_Data.Fehler').val, true);
      }
      

      B E I S P I E L E :

      1 Gerät

      const CountDevice   = 1;
      aDevice[0] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      

      2 Geräte

      const CountDevice   = 2;
      aDevice[0] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      aDevice[1] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      

      4 Geräte

      const CountDevice   = 4;
      aDevice[0] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      aDevice[1] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      aDevice[2] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      aDevice[3] = 'Bezeichnung:IP-Adresse:OIDs (durch Komma getrennt):Datenpunkte (durch Komma getrennt)';
      

      OID's die es "immer" gibt und überall passen sollten. Hier sind die OID's und Datenpunkte angegeben.

      1. ohne FAN und nur einer HDD
      1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc
      

      ein Eintrag in der Konfig sieht dann so aus

      aDevice[x] = 'Bezeichnung:IP-Adresse:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      
      
      1. mit FAN und nur einer HDD
      1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc
      

      ein Eintrag in der Konfig sieht dann so aus

      aDevice[x] = 'Bezeichnung:IP-Adresse:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.3,1.3.6.1.2.1.2.2.1.16.3,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc"';
      
      1. ohne FAN und 3 weiteren HDD (z.B. Open Media Vault (OMV))
      1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.2,1.3.6.1.2.1.2.2.1.16.2,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10,1.3.6.1.2.1.25.2.3.1.5.72,1.3.6.1.2.1.25.2.3.1.6.72,1.3.6.1.2.1.25.2.3.1.4.72,1.3.6.1.2.1.25.2.3.1.3.72,1.3.6.1.2.1.25.2.3.1.5.56,1.3.6.1.2.1.25.2.3.1.6.56,1.3.6.1.2.1.25.2.3.1.4.56,1.3.6.1.2.1.25.2.3.1.3.56,1.3.6.1.2.1.25.2.3.1.5.57,1.3.6.1.2.1.25.2.3.1.6.57,1.3.6.1.2.1.25.2.3.1.4.57,1.3.6.1.2.1.25.2.3.1.3.57:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc,SDA,SDA_Used,SDA_Alloc,SDA_Descr,SDB,SDB_Used,SDB_Alloc,SDB_Descr,SDC,SDC_Used,SDC_Alloc,SDC_Descr
      

      ein Eintrag in der Konfig sieht dann so aus

      aDevice[x] = 'PI_OMV:IP-Adresse:1.3.6.1.4.1.2021.13.16.2.1.3.1,1.3.6.1.4.1.2021.13.16.3.1.3.2,1.3.6.1.4.1.2021.10.1.3.1,1.3.6.1.4.1.2021.10.1.3.2,1.3.6.1.4.1.2021.10.1.3.3,1.3.6.1.2.1.2.2.1.10.2,1.3.6.1.2.1.2.2.1.16.2,1.3.6.1.2.1.25.2.3.1.5.36,1.3.6.1.2.1.25.2.3.1.6.36,1.3.6.1.2.1.25.2.3.1.4.36,1.3.6.1.2.1.25.2.3.1.5.1,1.3.6.1.2.1.25.2.3.1.6.1,1.3.6.1.2.1.25.2.3.1.4.1,1.3.6.1.2.1.25.2.3.1.6.6,1.3.6.1.2.1.25.2.3.1.6.7,1.3.6.1.2.1.25.2.3.1.5.11,1.3.6.1.2.1.25.2.3.1.5.8,1.3.6.1.2.1.25.2.3.1.5.10,1.3.6.1.2.1.25.2.3.1.6.10,1.3.6.1.2.1.25.2.3.1.4.10,1.3.6.1.2.1.25.2.3.1.5.72,1.3.6.1.2.1.25.2.3.1.6.72,1.3.6.1.2.1.25.2.3.1.4.72,1.3.6.1.2.1.25.2.3.1.3.72,1.3.6.1.2.1.25.2.3.1.5.56,1.3.6.1.2.1.25.2.3.1.6.56,1.3.6.1.2.1.25.2.3.1.4.56,1.3.6.1.2.1.25.2.3.1.3.56,1.3.6.1.2.1.25.2.3.1.5.57,1.3.6.1.2.1.25.2.3.1.6.57,1.3.6.1.2.1.25.2.3.1.4.57,1.3.6.1.2.1.25.2.3.1.3.57:"Temperatur,FAN,C1,C5,C15,Net_In,Net_Out,HDD,HDD_Used,HDD_Alloc,RAM,RAM_Used,RAM_Alloc,RAM_Buffer,RAM_Cache,RAM_Avail,RAM_Shared,SWAP,SWAP_Used,SWAP_Alloc,SDA,SDA_Used,SDA_Alloc,SDA_Descr,SDB,SDB_Used,SDB_Alloc,SDB_Descr,SDC,SDC_Used,SDC_Alloc,SDC_Descr"';
      

      WICHTIG: Die hier verwendeten OID's funktionieren mit Debian 11, 12 und Ubuntu. Für Windows müssen ganz andere OID's genutzt werden. Dazu z.B. den MIB Browser nutzen.

      Ja, das ist erst einmal sehr sehr viel Input. Vielleicht auch einmal mehr durchlesen. Die vielen OID's (Zahlen und Ziffernfolgen) können schon ganz schön verwirrend sein. Aber es lohnt sich.

      Die wichtigsten Stellen sind kommentiert. Also viel Spaß und Erfolg bei der Umsetzung. Wenn es Fragen gibt, bitte melden.

      Ro75.

      +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
      NACHTRAG 28.09.2024: Version 1.0.1

      Das Skript wurde erweitert. Damit können jetzt auch Scanner und Drucker abgefragt werden. Details bitte den Kommentaren im Konfigurationsbereich entnehmen.

      a2df1aec-4956-4cd4-8df2-17a44d8872c9-image.png

      sigi234 1 Reply Last reply Reply Quote 1
      • sigi234
        sigi234 Forum Testing Most Active @Ro75 last edited by

        @ro75
        Werde es mal unter Windows testen.

        Ro75 1 Reply Last reply Reply Quote 0
        • Ro75
          Ro75 @sigi234 last edited by

          @sigi234 sagte in Skript Hardwareinformationen via SNMP:

          Werde es mal unter Windows testen.

          WICHTIG: Die hier verwendeten OID's funktionieren mit Debian 11, 12 und Ubuntu. Für Windows müssen ganz andere OID's genutzt werden. Dazu z.B. den MIB Browser nutzen.

          Ro75.

          1 Reply Last reply Reply Quote 0
          • Ro75
            Ro75 last edited by

            Skript in Version 1.0.1 im ersten Post aktualisiert. Jetzt können auch Drucker und Scanner angefragt werden. Bitte dazu im ersten Post ganz unten "NACHTRAG 28.09.2024: Version 1.0.1" schauen.

            Ro75.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            543
            Online

            31.6k
            Users

            79.5k
            Topics

            1.3m
            Posts

            2
            4
            313
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo