Sprachauswahl:
Skip to main navigation Skip to main content Skip to page footer

Didactum Monitoring-Geräte und Sensoren – Integration in OpenNMS

Diese Anleitung beschreibt die vollständige Integration von Didactum Monitoring-Geräten in OpenNMS Horizon und OpenNMS Meridian. Ziel ist die zentrale Überwachung aller angeschlossenen Sensoren – Temperatur, Luftfeuchtigkeit, Leckage, Spannung, Türkontakte und weitere – inklusive Alarmierung, Trendgrafiken und SNMP-Trap-Verarbeitung.

1. Grundlagen und Architektur

OpenNMS ist eine Enterprise-Monitoring-Plattform, die neben einfachem SNMP-Polling auch Event-Korrelation, Alarmmanagement, Trendgrafiken (via RRDtool oder Newts/Cassandra) und automatische Netzwerkerkennung bietet. Die Integration des Didactum-Geräts erfolgt über SNMP-Polling und optionale SNMP-Trap-Verarbeitung.

Verarbeitungsablauf in OpenNMS

  1. Discovery: OpenNMS erkennt das Didactum-Gerät im Netzwerk automatisch oder es wird manuell als Requisition importiert.
  2. Provisioning: Das Gerät wird mit SNMP-Parametern und Monitoring-Policies verknüpft.
  3. Polling: Der Poller fragt in konfigurierbaren Intervallen OID-Werte ab und prüft den Gerätestatus.
  4. Data Collection: Der Collector speichert Messwerte in RRD-Dateien für Trendgrafiken.
  5. Event Processing: SNMP-Traps und Polling-Ergebnisse werden als Events verarbeitet.
  6. Alarmierung: Events lösen bei Bedarf Alarme und Benachrichtigungen aus.

OpenNMS-Kernkomponenten

KomponenteFunktionKonfigurationsdatei
ProvisiondGeräteimport und -verwaltung (Requisitions)provisiond-configuration.xml
PollerdVerfügbarkeits-Polling der Servicespoller-configuration.xml
CollectdSNMP-Datensammlung für Grafikencollectd-configuration.xml
TrapdSNMP-Trap-Empfang und -Verarbeitungtrapd-configuration.xml
EventdEvent-Verarbeitung und -Korrelationeventd-configuration.xml
NotifdBenachrichtigungen (E-Mail, SMS, Ticket)notifications.xml
RRDtool / NewtsZeitreihenspeicherung für Messwerterrd-configuration.properties

Alle Konfigurationsdateien liegen standardmäßig unter /etc/opennms/.

2. Voraussetzungen

  • OpenNMS Horizon 31.x oder neuer (oder Meridian aktuelle Version)
  • Linux-Server (Debian/Ubuntu oder RHEL/CentOS) mit Root-Zugriff
  • Java 11 oder neuer (OpenJDK empfohlen)
  • PostgreSQL 12 oder neuer als Datenbank
  • SNMP-Tools (snmp, snmpwalk) auf dem OpenNMS-Server
  • Didactum Monitoring-Gerät im Netzwerk erreichbar, SNMP aktiviert
  • UDP Port 161 (SNMP-Polling) und UDP Port 162 (SNMP-Traps) vom OpenNMS-Server zum Didactum-Gerät freigegeben
  • OpenNMS-Web-Interface erreichbar (Standard: Port 8980)

Beispiel-Netzwerkkonfiguration

GerätIP-AdresseRolle
OpenNMS-Server192.168.1.40Monitoring-Server
Didactum Monitoring Unit192.168.1.100Überwachtes Gerät (SNMP-Agent)

3. SNMP-Vorbereitung am Didactum-Gerät

3.1 SNMP aktivieren

  1. Didactum Web-Interface aufrufen: 192.168.1.100, Login mit Admin-Konto.
  2. Navigation: Einstellungen → Netzwerk → SNMP (oder: Settings → Network → SNMP).
  3. Folgende Parameter setzen:
    • SNMP aktiviert: Ja
    • SNMP-Version: v2c (empfohlen) oder v3
    • Community-String: public (in Produktion ändern)
    • SNMP-Port: 161
    • Allowed Managers: IP des OpenNMS-Servers (192.168.1.40) eintragen
    • SNMP Trap Receiver: IP des OpenNMS-Servers, Port 162
  4. Einstellungen speichern.

3.2 Erreichbarkeit vom OpenNMS-Server testen

# SNMP Walk – alle Didactum-OIDs auflisten:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854
 
# Temperatur Sensor 1 direkt abfragen:
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1
 
# System-Beschreibung (Grundtest):
snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.1.0

Wichtig: 

Didactum gibt Temperatur- und Spannungswerte mit Faktor 10 zurück (235 = 23,5 °C). Dies wird in den Data-Collection-Konfigurationen über einen ifIndex-Multiplikator oder eine JEXL-Formel berücksichtigt.

4. OpenNMS vorbereiten

4.1 SNMP-Tools und MIB-Browser installieren

# Debian / Ubuntu:
sudo apt install snmp snmp-mibs-downloader libsnmp-dev -y
 
# RHEL / CentOS / Rocky Linux:
sudo dnf install net-snmp net-snmp-utils -y

4.2 Didactum MIB-Datei einbinden

# MIB-Datei ins OpenNMS-MIB-Verzeichnis kopieren:
sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/share/opennms/share/mibs/
 
# Alternativ ins System-SNMP-Verzeichnis:
sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/share/snmp/mibs/
 
# MIB in OpenNMS compilieren (über Web-Interface):
# Admin → Configure OpenNMS → Manage SNMP MIBs → Upload MIB

4.3 OpenNMS MIB-Compiler verwenden

  1. OpenNMS Web-Interface aufrufen: 192.168.1.40/opennms.
  2. Navigation: Admin → Configure OpenNMS → Manage SNMP MIBs.
  3. Klick auf Upload MIB, Didactum-MIB-Datei hochladen.
  4. Nach erfolgreichem Upload: Compile MIB klicken.
  5. OpenNMS generiert automatisch Event-Konfigurationen aus den Trap-Definitionen der MIB.

5. Didactum-Gerät als Requisition hinzufügen

OpenNMS verwendet Requisitions (Bereitstellungsgruppen) für die strukturierte Geräteverwaltung. Geräte werden entweder über das Web-Interface oder per REST-API importiert.

5.1 Requisition über das Web-Interface anlegen

  1. Navigation: Admin → Provisioning Requisitions → Add New Requisition.
  2. Requisition Name: Didactum-Monitoring
  3. Klick auf Add Node:
    • Node Label: didactum-rack01
    • Foreign ID: didactum-rack01
  4. Interface hinzufügen:
    • IP Address: 192.168.1.100
    • SNMP Primary: P (Primary)
    • Managed: M (Managed)
  5. Services am Interface hinzufügen:
    • SNMP (für SNMP-Erreichbarkeitscheck)
    • ICMP (für Ping-Check)
  6. Node-Metadaten (optional):
    • Category: Didactum, Rack-Monitoring, Serverraum-A
  7. Requisition speichern und Synchronize klicken.

5.2 Requisition per REST-API anlegen

# Requisition anlegen:
curl -u admin:admin -X POST \
  -H "Content-Type: application/xml" \
  -d '<model-import foreign-source="Didactum-Monitoring">
    <node foreign-id="didactum-rack01" node-label="didactum-rack01">
      <interface ip-addr="192.168.1.100" status="1" snmp-primary="P">
        <monitored-service service-name="SNMP"/>
        <monitored-service service-name="ICMP"/>
      </interface>
      <asset name="description" value="Didactum Rack Monitoring Unit II"/>
      <asset name="room" value="Serverraum A"/>
      <category name="Didactum"/>
      <category name="Rack-Monitoring"/>
    </node>
  </model-import>' \
  192.168.1.40/opennms/rest/requisitions
 
# Requisition importieren (Synchronisierung anstoßen):
curl -u admin:admin -X PUT \
  192.168.1.40/opennms/rest/requisitions/Didactum-Monitoring/import

6. SNMP-Konfiguration in OpenNMS

6.1 SNMP-Community für das Didactum-Gerät konfigurieren

Über das Web-Interface: Admin → Configure SNMP Community Names by IP.

  1. IP-Adresse eintragen: 192.168.1.100
  2. Read Community: public (oder eigener Community-String)
  3. SNMP Version: v2c
  4. Port: 161
  5. Klick auf Save.

Alternativ direkt in der Konfigurationsdatei:

sudo nano /etc/opennms/snmp-config.xml
<?xml version="1.0"?>
<snmp-config retry="3" timeout="800" read-community="public"
             proxy-host="" version="v2c" port="161"
             max-vars-per-pdu="10" max-repetitions="2">
 
    <!-- Spezifische Konfiguration für Didactum-Gerät -->
    <definition version="v2c" read-community="public" port="161">
        <specific>192.168.1.100</specific>
    </definition>
 
    <!-- Für SNMP v3 (Optional, erhöhte Sicherheit): -->
    <!--
    <definition version="v3" security-name="snmpv3user"
                auth-passphrase="AuthPasswort123"
                auth-protocol="SHA"
                priv-passphrase="PrivPasswort456"
                priv-protocol="AES">
        <specific>192.168.1.100</specific>
    </definition>
    -->
 
</snmp-config>
# OpenNMS nach Konfigurationsänderung neu laden:
sudo systemctl reload opennms
# oder:
sudo /usr/share/opennms/bin/send-event.pl uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Provisiond'

6.2 SNMP-Erreichbarkeit in OpenNMS prüfen

  1. Navigation: Admin → Configure OpenNMS → SNMP MIBs → Test SNMP Walk.
  2. IP: 192.168.1.100, OID: 1.3.6.1.4.1.3854 eintragen.
  3. Klick auf Do Walk – alle Didactum-OIDs sollten erscheinen.

7. SNMP Data Collection konfigurieren

Die Data Collection bestimmt, welche OIDs OpenNMS in welchem Intervall erfasst und als Zeitreihendaten für Grafiken speichert.

7.1 Didactum Data Collection Group erstellen

sudo nano /etc/opennms/datacollection/didactum.xml
<?xml version="1.0"?>
<datacollection-config rrd-repository="/var/lib/opennms/rrd/snmp/">
 
  <snmp-collection name="default" snmpStorageFlag="select">
    <rrd step="300">
      <rra>RRA:AVERAGE:0.5:1:2016</rra>
      <rra>RRA:AVERAGE:0.5:12:1488</rra>
      <rra>RRA:AVERAGE:0.5:288:366</rra>
      <rra>RRA:MAX:0.5:288:366</rra>
      <rra>RRA:MIN:0.5:288:366</rra>
    </rrd>
 
    <include-collection dataCollectionGroup="Didactum"/>
  </snmp-collection>
 
  <!-- Didactum Monitoring Data Collection Group -->
  <group name="didactum-temperature" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1" instance="0"
            alias="tempValue1" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.2" instance="0"
            alias="tempValue2" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.3" instance="0"
            alias="tempValue3" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.16.1.4.1" instance="0"
            alias="tempStatus1" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.16.1.4.2" instance="0"
            alias="tempStatus2" type="gauge"/>
  </group>
 
  <group name="didactum-humidity" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1" instance="0"
            alias="humValue1" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.2" instance="0"
            alias="humValue2" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.17.1.4.1" instance="0"
            alias="humStatus1" type="gauge"/>
  </group>
 
  <group name="didactum-leak" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1" instance="0"
            alias="leakStatus1" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2" instance="0"
            alias="leakStatus2" type="gauge"/>
  </group>
 
  <group name="didactum-voltage" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1" instance="0"
            alias="voltValue1" type="gauge"/>
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.15.1.4.1" instance="0"
            alias="voltStatus1" type="gauge"/>
  </group>
 
  <group name="didactum-door" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1" instance="0"
            alias="doorStatus1" type="gauge"/>
  </group>
 
  <group name="didactum-smoke" ifType="ignore">
    <mibObj oid=".1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1" instance="0"
            alias="smokeStatus1" type="gauge"/>
  </group>
 
  <!-- Zusammenfassung aller Didactum-Gruppen -->
  <datacollection-group name="Didactum">
    <include-group>didactum-temperature</include-group>
    <include-group>didactum-humidity</include-group>
    <include-group>didactum-leak</include-group>
    <include-group>didactum-voltage</include-group>
    <include-group>didactum-door</include-group>
    <include-group>didactum-smoke</include-group>
  </datacollection-group>
 
</datacollection-config>

7.2 Data Collection dem Gerät zuweisen

In /etc/opennms/collectd-configuration.xml eine Collection-Package-Regel für Didactum-Geräte anlegen:

sudo nano /etc/opennms/collectd-configuration.xml
<!-- Didactum-spezifisches Collection-Package einfügen: -->
<package name="didactum">
    <filter>categoryName == 'Didactum'</filter>
    <include-range begin="192.168.1.100" end="192.168.1.110"/>
 
    <service name="SNMP" interval="300000" user-defined="false" status="on">
        <parameter key="collection" value="default"/>
        <parameter key="thresholding-enabled" value="true"/>
    </service>
</package>

7.3 Collectd neu laden

sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Collectd'

8. Event-Konfiguration für Didactum

OpenNMS verarbeitet alle Zustandsänderungen als Events. Für Didactum-spezifische Ereignisse wird eine eigene Event-Konfigurationsdatei angelegt.

8.1 Didactum Events-Datei erstellen

sudo nano /etc/opennms/events/didactum.events.xml
<?xml version="1.0"?>
<events xmlns="http://xmlns.opennms.org/xsd/eventconf">
 
  <!-- Temperatur-Alarm -->
  <event>
    <uei>uei.didactum/trap/temperatureAlarm</uei>
    <event-label>Didactum: Temperatur-Alarm</event-label>
    <descr>
      Temperatur-Alarm ausgelöst auf Gerät &lt;b&gt;%nodeid%&lt;/b&gt;.
      Sensor: %parm[#1]%. Aktueller Wert: %parm[#2]%.
    </descr>
    <logmsg dest="logndisplay">
      Didactum Temperatur-Alarm: Gerät %nodelabel% – Sensor %parm[#1]%
    </logmsg>
    <severity>Major</severity>
    <alarm-data reduction-key="%uei%:%dpname%:%nodeid%:%parm[#1]%"
                alarm-type="1"
                auto-clean="false"/>
  </event>
 
  <!-- Leckage-Alarm -->
  <event>
    <uei>uei.didactum/trap/leakAlarm</uei>
    <event-label>Didactum: Leckage-Alarm</event-label>
    <descr>
      LECKAGE erkannt auf Gerät &lt;b&gt;%nodelabel%&lt;/b&gt;!
      Sensor: %parm[#1]%. Sofortiger Handlungsbedarf!
    </descr>
    <logmsg dest="logndisplay">
      LECKAGE ALARM: Gerät %nodelabel% – Sensor %parm[#1]%
    </logmsg>
    <severity>Critical</severity>
    <alarm-data reduction-key="%uei%:%dpname%:%nodeid%:%parm[#1]%"
                alarm-type="1"
                auto-clean="false"/>
  </event>
 
  <!-- Luftfeuchtigkeits-Alarm -->
  <event>
    <uei>uei.didactum/trap/humidityAlarm</uei>
    <event-label>Didactum: Luftfeuchtigkeits-Alarm</event-label>
    <descr>
      Luftfeuchtigkeits-Alarm auf Gerät &lt;b&gt;%nodelabel%&lt;/b&gt;.
      Sensor: %parm[#1]%. Aktueller Wert: %parm[#2]% %% rF.
    </descr>
    <logmsg dest="logndisplay">
      Didactum Luftfeuchtigkeits-Alarm: %nodelabel% – %parm[#2]% %% rF
    </logmsg>
    <severity>Major</severity>
    <alarm-data reduction-key="%uei%:%dpname%:%nodeid%:%parm[#1]%"
                alarm-type="1"
                auto-clean="false"/>
  </event>
 
  <!-- Spannungs-Alarm -->
  <event>
    <uei>uei.didactum/trap/voltageAlarm</uei>
    <event-label>Didactum: Spannungs-Alarm</event-label>
    <descr>
      Spannungs-Alarm auf Gerät &lt;b&gt;%nodelabel%&lt;/b&gt;.
      Aktueller Wert: %parm[#2]%.
    </descr>
    <logmsg dest="logndisplay">
      Didactum Spannungs-Alarm: %nodelabel%
    </logmsg>
    <severity>Major</severity>
    <alarm-data reduction-key="%uei%:%dpname%:%nodeid%"
                alarm-type="1"
                auto-clean="false"/>
  </event>
 
  <!-- Türkontakt-Alarm -->
  <event>
    <uei>uei.didactum/trap/doorAlarm</uei>
    <event-label>Didactum: Türkontakt geöffnet</event-label>
    <descr>
      Türkontakt-Alarm auf Gerät &lt;b&gt;%nodelabel%&lt;/b&gt;.
      Sensor: %parm[#1]%.
    </descr>
    <logmsg dest="logndisplay">
      Didactum Türkontakt offen: %nodelabel% – Sensor %parm[#1]%
    </logmsg>
    <severity>Warning</severity>
    <alarm-data reduction-key="%uei%:%dpname%:%nodeid%:%parm[#1]%"
                alarm-type="1"
                auto-clean="false"/>
  </event>
 
  <!-- Gerät-Neustart -->
  <event>
    <uei>uei.didactum/trap/deviceReboot</uei>
    <event-label>Didactum: Gerät neugestartet</event-label>
    <descr>Das Didactum-Gerät %nodelabel% wurde neu gestartet.</descr>
    <logmsg dest="logndisplay">
      Didactum Neustart: %nodelabel%
    </logmsg>
    <severity>Warning</severity>
  </event>
 
</events>

8.2 Events-Datei in OpenNMS registrieren

sudo nano /etc/opennms/eventconf.xml

Folgenden Eintrag vor dem abschließenden </events>-Tag hinzufügen:

<event-file>events/didactum.events.xml</event-file>
# Eventd neu laden:
sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Eventd'

9. SNMP-Trap-Integration

SNMP-Traps erlauben dem Didactum-Gerät, bei Alarmen sofort eine Meldung an OpenNMS zu senden – ohne aktives Polling. OpenNMS empfängt Traps über den Trapd-Dienst auf UDP Port 162.

9.1 Trapd konfigurieren

sudo nano /etc/opennms/trapd-configuration.xml
<?xml version="1.0"?>
<trapd-configuration
    snmp-trap-port="162"
    new-suspect-on-trap="true"
    include-raw-message="false"
    threads="2"
    queue-size="10000"
    batch-size="1000"
    batch-interval="500"/>

9.2 Trap-to-Event-Mapping für Didactum

Die Zuordnung von Didactum-Trap-OIDs zu OpenNMS-Events erfolgt in der Events-Konfiguration. Folgenden Abschnitt in /etc/opennms/events/didactum.events.xml ergänzen:

  <!-- SNMP Trap Mapping: Temperatur-Alarm Trap OID 1.3.6.1.4.1.3854.1.7.1 -->
  <event>
    <uei>uei.didactum/trap/temperatureAlarm</uei>
    <event-label>Didactum: Temperatur-Alarm Trap</event-label>
    <mask>
      <maskelement>
        <mename>id</mename>
        <mevalue>.1.3.6.1.4.1.3854</mevalue>
      </maskelement>
      <maskelement>
        <mename>generic</mename>
        <mevalue>6</mevalue>
      </maskelement>
      <maskelement>
        <mename>specific</mename>
        <mevalue>1</mevalue>
      </maskelement>
    </mask>
    <descr>Temperatur-Alarm Trap von Didactum-Gerät %nodelabel%</descr>
    <logmsg dest="logndisplay">Didactum Temp-Alarm: %nodelabel%</logmsg>
    <severity>Major</severity>
    <alarm-data reduction-key="%uei%:%nodeid%" alarm-type="1"/>
  </event>
 
  <!-- SNMP Trap Mapping: Leckage-Alarm Trap OID 1.3.6.1.4.1.3854.1.7.2 -->
  <event>
    <uei>uei.didactum/trap/leakAlarm</uei>
    <event-label>Didactum: Leckage-Alarm Trap</event-label>
    <mask>
      <maskelement>
        <mename>id</mename>
        <mevalue>.1.3.6.1.4.1.3854</mevalue>
      </maskelement>
      <maskelement>
        <mename>generic</mename>
        <mevalue>6</mevalue>
      </maskelement>
      <maskelement>
        <mename>specific</mename>
        <mevalue>2</mevalue>
      </maskelement>
    </mask>
    <descr>LECKAGE ALARM von Didactum-Gerät %nodelabel%! Sofortiger Handlungsbedarf!</descr>
    <logmsg dest="logndisplay">LECKAGE ALARM: %nodelabel%</logmsg>
    <severity>Critical</severity>
    <alarm-data reduction-key="%uei%:%nodeid%" alarm-type="1"/>
  </event>

9.3 Wichtige Didactum Trap-OIDs

Trap-OIDEreignisSpecific-WertOpenNMS Severity
1.3.6.1.4.1.3854.1.7.1Temperatur-Alarm1Major
1.3.6.1.4.1.3854.1.7.2Leckage-Alarm2Critical
1.3.6.1.4.1.3854.1.7.3Luftfeuchtigkeits-Alarm3Major
1.3.6.1.4.1.3854.1.7.4Spannungs-Alarm4Major
1.3.6.1.4.1.3854.1.7.10Türkontakt geöffnet10Warning
1.3.6.1.4.1.3854.1.7.14Rauchmelder-Alarm14Critical
1.3.6.1.4.1.3854.1.7.99Gerät-Neustart99Warning

9.4 Trapd neu laden und testen

# Trapd neu laden:
sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Trapd'
 
# Test-Trap vom Didactum-Gerät an OpenNMS senden (simuliert):
snmptrap -v2c -c public 192.168.1.40 '' \
  1.3.6.1.4.1.3854.1.7.2 \
  1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1
 
# OpenNMS Event-Log auf eingehende Traps prüfen:
sudo tail -f /var/log/opennms/trapd.log

10. Alarmierung und Benachrichtigungen

10.1 Threshold-basierte Alarmierung konfigurieren

OpenNMS kann gesammelte SNMP-Werte gegen Schwellwerte prüfen und bei Überschreitung automatisch Events erzeugen.

sudo nano /etc/opennms/thresholds.xml
<?xml version="1.0"?>
<thresholding-config>
 
  <group name="didactum" rrdRepository="/var/lib/opennms/rrd/snmp/">
 
    <!-- Temperatur Sensor 1: Warning bei 30 °C (300), Critical bei 35 °C (350) -->
    <threshold type="high"
               ds-name="tempValue1"
               ds-type="node"
               value="300"
               rearm="280"
               trigger="2"
               description="Temperatur Sensor 1 zu hoch">
      <resource-filter field="ifIndex">.*</resource-filter>
    </threshold>
 
    <threshold type="high"
               ds-name="tempValue1"
               ds-type="node"
               value="350"
               rearm="320"
               trigger="1"
               description="Temperatur Sensor 1 kritisch"
               triggeredUEI="uei.didactum/trap/temperatureAlarm">
    </threshold>
 
    <!-- Leckage Sensor 1: Sofortalarm bei Wert > 0 -->
    <threshold type="high"
               ds-name="leakStatus1"
               ds-type="node"
               value="0.5"
               rearm="0"
               trigger="1"
               description="Leckage Sensor 1 ausgelöst"
               triggeredUEI="uei.didactum/trap/leakAlarm">
    </threshold>
 
    <!-- Luftfeuchtigkeit Sensor 1: Warning bei 70 %, Critical bei 80 % -->
    <threshold type="high"
               ds-name="humValue1"
               ds-type="node"
               value="70"
               rearm="65"
               trigger="2"
               description="Luftfeuchtigkeit Sensor 1 zu hoch">
    </threshold>
 
    <threshold type="low"
               ds-name="humValue1"
               ds-type="node"
               value="20"
               rearm="25"
               trigger="2"
               description="Luftfeuchtigkeit Sensor 1 zu niedrig">
    </threshold>
 
    <!-- Spannung Sensor 1: Warning außerhalb 207–253 V (2070–2530 × 10) -->
    <threshold type="high"
               ds-name="voltValue1"
               ds-type="node"
               value="2530"
               rearm="2500"
               trigger="2"
               description="Spannung Sensor 1 zu hoch (über 253 V)">
    </threshold>
 
    <threshold type="low"
               ds-name="voltValue1"
               ds-type="node"
               value="2070"
               rearm="2100"
               trigger="2"
               description="Spannung Sensor 1 zu niedrig (unter 207 V)">
    </threshold>
 
  </group>
 
</thresholding-config>

10.2 Threshold-Gruppe dem Collection-Package zuweisen

In /etc/opennms/collectd-configuration.xml im Didactum-Package ergänzen:

<service name="SNMP" interval="300000" user-defined="false" status="on">
    <parameter key="collection" value="default"/>
    <parameter key="thresholding-enabled" value="true"/>
    <parameter key="thresholding-group" value="didactum"/>
</service>

10.3 E-Mail-Benachrichtigung einrichten

  1. Navigation: Admin → Configure Notifications → New Notification.
  2. Event-Filter: Events matching UEI containing 'didactum'
  3. Destination Path: Vorhandenen Pfad wählen oder neu anlegen.
  4. Destination Path konfigurieren (Admin → Configure Notifications → Destination Paths):
    • Step 1: E-Mail an admin@example.com – Sofort (0 Minuten)
    • Step 2 (Eskalation): E-Mail an leitung@example.com – Nach 15 Minuten ohne Quittierung

10.4 Empfohlene Schwellwert-Einstellungen

Sensortypds-nameWarning-WertCritical-WertRearm-Wert
Temperatur IT-Rack (× 10)tempValue1300 (30 °C)350 (35 °C)280 (28 °C)
Temperatur USV-Raum (× 10)tempValue2250 (25 °C)300 (30 °C)230 (23 °C)
LuftfeuchtigkeithumValue170 % rF80 % rF65 % rF
LeckageleakStatus10,5 (Wert > 0)0
Spannung hoch (× 10)voltValue12530 (253 V)2600 (260 V)2500 (250 V)
Spannung niedrig (× 10)voltValue12070 (207 V)1960 (196 V)2100 (210 V)

11. OID-Referenz für OpenNMS

Alle OIDs basieren auf der Didactum Enterprise OID-Basis 1.3.6.1.4.1.3854. Der Platzhalter {n} steht für den Sensorindex (1 = erster Sensor usw.).

11.1 Temperatursensoren

OIDBeschreibungEinheitalias (datacollection.xml)OpenNMS-Hinweis
1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n}Temperaturwert Sensor n°C × 10tempValue{n}Threshold × 10; Grafik-Label anpassen
1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n}Temperatur-Status Sensor nEnum 0/1/2tempStatus{n}Für Threshold-Trigger-Events
1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n}Oberer Grenzwert Sensor n°C × 10tempHiLimit{n}Informativ; als HRULE in Grafiken
1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n}Unterer Grenzwert Sensor n°C × 10tempLoLimit{n}Informativ; als HRULE in Grafiken
1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n}Sensor-Name nTextFür Beschriftung in Reports

11.2 Leckagesensoren

OIDBeschreibungEinheitaliasOpenNMS-Hinweis
1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n}Leckage-Status Sensor n0=OK, 1=AlarmleakStatus{n}Threshold bei 0,5; Critical-Severity
1.3.6.1.4.1.3854.1.2.2.1.18.1.3.{n}Leckage-Wert Sensor n0=trockenleakValue{n}Alternativ zu Status-OID
1.3.6.1.4.1.3854.1.2.2.1.18.1.2.{n}Sensor-Name nTextFür Beschriftung

11.3 Luftfeuchtigkeitssensoren

OIDBeschreibungEinheitaliasOpenNMS-Hinweis
1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n}Luftfeuchtigkeitswert Sensor n% rFhumValue{n}Kein Faktor nötig
1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n}Luftfeuchtigkeits-Status nEnum 0/1/2humStatus{n}Für Threshold-Trigger
1.3.6.1.4.1.3854.1.2.2.1.17.1.7.{n}Oberer Grenzwert Sensor n% rFhumHiLimit{n}Informativ
1.3.6.1.4.1.3854.1.2.2.1.17.1.8.{n}Unterer Grenzwert Sensor n% rFhumLoLimit{n}Informativ

11.4 Weitere Sensoren

OIDBeschreibungEinheitaliasOpenNMS-Hinweis
1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n}Spannungswert Sensor nV × 10voltValue{n}Threshold × 10 (207 V = 2070)
1.3.6.1.4.1.3854.1.2.2.1.15.1.4.{n}Spannungs-Status Sensor nEnum 0/1/2voltStatus{n}Für Threshold-Trigger
1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n}Türkontakt-Status n0=zu, 1=offendoorStatus{n}Threshold bei 0,5; Warning-Severity
1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n}Erschütterung / Bewegung n0=keine, 1=AlarmvibStatus{n}Threshold bei 0,5
1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n}Rauchmelder-Status n0=OK, 1=AlarmsmokeStatus{n}Threshold bei 0,5; Critical-Severity
1.3.6.1.2.1.1.3.0System Uptime (sysUpTime)HundertstelsekundensysUpTimeStandard-MIB, immer verfügbar

12. Fehlerbehebung (Troubleshooting)

ProblemMögliche Ursache / Lösung
Gerät erscheint nach Import nicht in OpenNMSProvisiond-Log prüfen: tail -f /var/log/opennms/provisiond.log. Requisition manuell synchronisieren: Admin → Provisioning Requisitions → Synchronize.
SNMP-Status am Node zeigt FehlerCommunity-String in snmp-config.xml prüfen. Test: snmpwalk -v2c -c public 192.168.1.100. Firewall UDP 161 prüfen.
Keine Messdaten / Grafiken leerCollectd-Log prüfen: tail -f /var/log/opennms/collectd.log. Data-Collection-Gruppe korrekt referenziert? Thresholding aktiviert? RRD-Verzeichnis beschreibbar?
Temperatur-Rohwert × 10 in GrafikenIn der Grafik-Definition eine Formel hinterlegen, die den Wert durch 10 dividiert. Alternativ in der Beschriftung klarstellen, dass der Wert × 10 dargestellt wird.
Traps kommen nicht anUDP Port 162 auf dem OpenNMS-Server in der Firewall öffnen. Trapd-Dienst läuft? Korrekte IP als Trap-Receiver im Didactum-Gerät eingetragen?
Events werden nicht zu AlarmenAlarm-Data-Block in der Event-Definition vorhanden? reduction-key korrekt gesetzt? Eventd-Log prüfen: tail -f /var/log/opennms/eventd.log.
Keine Benachrichtigungen bei AlarmNotification-Konfiguration prüfen. Destination-Path aktiv? E-Mail-Einstellungen korrekt? Notifd-Log: tail -f /var/log/opennms/notifd.log.
XML-Konfiguration wird nicht übernommenXML auf Syntaxfehler prüfen: xmllint --noout /etc/opennms/events/didactum.events.xml. Daemon-Reload senden oder OpenNMS neu starten: sudo systemctl restart opennms.

Diagnose-Befehle Übersicht

# SNMP-Erreichbarkeit testen:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854
 
# Einzelnen Sensor abfragen:
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1
 
# XML-Syntax prüfen:
xmllint --noout /etc/opennms/events/didactum.events.xml
xmllint --noout /etc/opennms/datacollection/didactum.xml
 
# OpenNMS-Dienst neu starten:
sudo systemctl restart opennms
 
# Einzelne Daemons neu laden (ohne Neustart):
sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Collectd'
 
sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Eventd'
 
sudo /usr/share/opennms/bin/send-event.pl \
  uei.opennms.org/internal/reloadDaemonConfig \
  --parm 'daemonName Trapd'
 
# Logs in Echtzeit verfolgen:
sudo tail -f /var/log/opennms/opennms.log
sudo tail -f /var/log/opennms/collectd.log
sudo tail -f /var/log/opennms/provisiond.log
sudo tail -f /var/log/opennms/trapd.log
sudo tail -f /var/log/opennms/eventd.log
 
# Test-Trap senden (Leckage simulieren):
snmptrap -v2c -c public 192.168.1.40 '' \
  1.3.6.1.4.1.3854.1.7.2 \
  1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1
 
# RRD-Daten prüfen:
rrdtool lastupdate /var/lib/opennms/rrd/snmp/1/didactum-temperature.jrb
 
# Requisition-Status per REST-API abfragen:
curl -u admin:admin \
  192.168.1.40/opennms/rest/requisitions/Didactum-Monitoring

Konfigurationsdateien Schnell-Referenz

DateiPfadZweck
snmp-config.xml/etc/opennms/SNMP-Community und Version pro IP
didactum.xml/etc/opennms/datacollection/SNMP-Datensammlung (OIDs, RRD-Typen)
collectd-configuration.xml/etc/opennms/Collection-Packages und Intervalle
didactum.events.xml/etc/opennms/events/Event-Definitionen und Trap-Mapping
eventconf.xml/etc/opennms/Registrierung der Events-Datei
thresholds.xml/etc/opennms/Schwellwerte für Alarmierung
trapd-configuration.xml/etc/opennms/SNMP-Trap-Empfänger-Konfiguration
notifications.xml/etc/opennms/Benachrichtigungsregeln

Für firmware-spezifische OIDs und unterstützte Sensortypen immer die aktuelle Didactum-Gerätedokumentation konsultieren.

Diese Webseite nutzt Cookies

Diese Webseite nutzt Cookies zur Verbesserung des Erlebnisses unserer Besucher. Indem Sie weiterhin auf dieser Webseite navigieren, erklären Sie sich mit unserer Verwendung von Cookies einverstanden.

Essenzielle Cookies ermöglichen grundlegende Funktionen und sind für die einwandfreie Funktion der Website erforderlich.
Statistik Cookies erfassen Informationen anonym. Diese Informationen helfen uns zu verstehen, wie unsere Besucher unsere Website nutzen.
Marketing-Cookies werden von Drittanbietern oder Publishern verwendet, um personalisierte Werbung anzuzeigen. Sie tun dies, indem sie Besucher über Websites hinweg verfolgen.