Language selection:
Skip to main navigation Skip to main content Skip to page footer

Didactum Monitoring & Zenoss Integration

Complete step-by-step guide for integrating Didactum monitoring devices and sensors into Zenoss Core / Zenoss Service Dynamics (ZSD) via SNMP – including device discovery, ZenPack configuration, MIB import, SNMP data sources (datasources), and threshold configuration (thresholds) in the monitoring template, full OID reference for all sensor types (temperature, leakage, humidity, door contact, smoke), SNMP trap processing, as well as event class and notification configuration.

Architecture Note: Zenoss works with monitoring templates and ZenPacks. The Didactum device is created as a device in Zenoss and assigned to a device class. A monitoring template defines which OIDs (datasources) are queried and which thresholds are monitored. SNMP traps are sent from the Didactum device to the Zenoss server (UDP port 162) and converted into Zenoss events via event class mappings. The Zenoss server actively sends SNMP GET requests (UDP port 161) to the Didactum device.

  • Software: Zenoss Core 6.x or Zenoss Service Dynamics (ZSD)
  • Components: Zenoss Server, zenhub, zenperfsnmp, zentrap, zenactions
  • Protocol: SNMP v1 / v2c / v3
  • Devices: Didactum Monitoring System 100T / 300T / 500T / 550T
  • Sensors: Temperature, leakage, humidity, door contact, smoke

1. Prerequisites & System Overview

Zenoss Server

ComponentRequirement / Details
Zenoss VersionZenoss Core 6.x or Zenoss Service Dynamics; older versions (4.x / 5.x) work analogously
Daemon zenperfsnmpMust be active – responsible for SNMP polling; check zenoss status
Daemon zentrapMust be active – responsible for SNMP trap reception on UDP port 162
Daemon zenactionsMust be active – responsible for email notifications
Network (outbound)UDP port 161 from the Zenoss server to the Didactum device (SNMP polling)
Network (inbound)UDP port 162 from the Didactum device to the Zenoss server (SNMP traps)
Network AccessIP reachability from the Zenoss server to the Didactum device is required

Didactum Device

RequirementDetails
ModelMonitoring System 100T, 300T, 500T, or 550T
SNMPSNMP enabled (v2c recommended)
Community StringCustom community string (do not use "public")
Trap DestinationIP address of the Zenoss server
MIB FileDownloadable under System Settings → SNMP

Enterprise OIDs per Firmware Generation

Device / FirmwareEnterprise OID (Base)
Older models / older firmware.1.3.6.1.4.1.46501
Newer models / current firmware.1.3.6.1.4.1.39052

Note: You can determine which enterprise OID your device uses via:
snmpwalk -v 2c -c public 192.168.1.50 .1.3.6.1.2.1.1.2.0

2. Enable SNMP on the Didactum Device

Step 1 – Open the Web Interface

192.168.1.50   (Adjust the IP of the Didactum device)

Step 2 – Open SNMP Settings

System Settings → SNMP

Step 3 – Enter the Following Values

Field in Didactum Web InterfaceRecommended Value
Enable SNMPEnabled
SNMP Versionv2c (recommended)
Community String (Read)didactum_zenoss (do not use "public"!)
SNMP Port161
Trap DestinationIP address of the Zenoss server
Trap Communitydidactum_trap
Trap Port162

Step 4 – Download the MIB File

System Settings → SNMP → "Download MIB File"
File will be saved as didactum.mib.
This file will be imported into Zenoss in step 3.

Save settings. The device will now immediately send SNMP traps to the Zenoss server.

3. Import the MIB File into Zenoss

Zenoss stores MIB files in the file system on the server and loads them via the command line or the web interface. After the import, Zenoss resolves OID numbers in SNMP trap events into symbolic names.

Step 1 – Copy the MIB File to the Zenoss Server

Standard MIB directory Zenoss Core (Linux):
  /opt/zenoss/share/mibs/site/

Upload file (e.g., via SCP from the admin machine):
  scp didactum.mib zenoss@192.168.1.100:/opt/zenoss/share/mibs/site/

Alternatively, directly on the server:
  cp didactum.mib /opt/zenoss/share/mibs/site/

Step 2 – Compile the MIB (as zenoss user)

su - zenoss
cd /opt/zenoss

# Compile MIB
python $ZENHOME/bin/zenmib run /opt/zenoss/share/mibs/site/didactum.mib

# Success message:
# INFO zen.ZenMib: Loaded MIB DIDACTUM-MIB
# INFO zen.ZenMib: Saved X OIDs to ZODB

Step 3 – MIB Import via the Zenoss Web Interface (Alternative Method)

Zenoss Web UI → Advanced → MIBs → Add MIB
  → "Upload MIB File" → select didactum.mib
  → Click "Add" 

  → MIB appears in the MIB list as DIDACTUM-MIB

Step 4 – Verify MIB Import

Zenoss Web UI → Advanced → MIBs → DIDACTUM-MIB
  → OID tree is displayed
  → sensorValue (.1.3.6.1.4.1.46501.5.1.1.7) appears with a symbolic name

Completed MIB Import Configuration (DIDACTUM-MIB.txt)

If no MIB file is available from the device, copy the following minimal MIB structure as DIDACTUM-MIB.txt into the Zenoss MIB directory and compile it as shown above:

-- ================================================================
-- DIDACTUM-MIB – Minimal MIB for Zenoss Import
-- File: DIDACTUM-MIB.txt
-- For older devices: enterprises.46501
-- For newer devices: enterprises.39052 (Adjust OID)
-- ================================================================

DIDACTUM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises
 
       FROM SNMPv2-SMI
    NOTIFICATION-TYPE
        FROM SNMPv2-SMI;
didactum MODULE-IDENTITY
    LAST-UPDATED "202401010000Z"
    ORGANIZATION "Didactum Security GmbH"
    CONTACT-INFO "support@didactum-security.com"
    DESCRIPTION  "Didactum Monitoring System MIB"
    ::= { enterprises 46501 }

sensorTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SensorEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION "Table of all connected sensors"
    ::= { didactum 5 1 1 }

sensorEntry OBJECT-TYPE
    SYNTAX      SensorEntry
    MAX-ACCESS  not-accessible
 
   STATUS      current
    DESCRIPTION "Single sensor entry"
    INDEX { sensorIndex }
    ::= { sensorTable 1 }

SensorEntry ::= SEQUENCE {
    sensorIndex    Integer32,
    sensorID       Integer32,
    sensorType     Integer32,
    sensorName     OCTET STRING,
    sensorStatus   Integer32,
    sensorValue    Integer32
}

sensorIndex  OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
    DESCRIPTION "Index" 
                       ::= { sensorEntry 1 }
sensorID     OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
    DESCRIPTION "Sensor ID"                    ::= { sensorEntry 2 }
sensorType   OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
    DESCRIPTION "Sensor Type"                  
 ::= { sensorEntry 3 }
sensorName   OBJECT-TYPE SYNTAX OCTET STRING  MAX-ACCESS read-only STATUS current
    DESCRIPTION "Sensor Name"                  ::= { sensorEntry 5 }
sensorStatus OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
    DESCRIPTION "0=OK 1=Alarm 2=No Signal"   ::= { sensorEntry 6 }
sensorValue  OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
    DESCRIPTION "Measured Value (Temperature: x10)"   ::= { sensorEntry 7 }

didactumAlarmTrap NOTIFICATION-TYPE
    OBJECTS { sensorName, sensorStatus, sensorValue }
   
 STATUS  current
    DESCRIPTION "Alarm trap on sensor status change"
    ::= { didactum 1 1 }

END

4. Create Device Class and Didactum Device

Step 1 – Create Device Class

Zenoss Web UI → Infrastructure → Device Classes → Add Device Class

  Class Path:   /Devices/Environmental/Didactum
  Description:  Didactum Environmental Monitoring Devices

Step 2 – Set SNMP Settings for the Device Class

Zenoss Web UI → Infrastructure → Device Classes → /Devices/Environmental/Didactum
  → Configuration Properties (zProperties)

  zSnmpCommunity:   didactum_zenoss
  zSnmpVer:         v2c
 
 zSnmpPort:        161
  zSnmpTimeout:     5
  zSnmpTries:       3
  → Save

Step 3 – Add Didactum Device

Zenoss Web UI → Infrastructure → Devices → Add Device

  Device Name / IP:  192.168.1.50
  Device Class:      /Devices/Environmental/Didactum
  Title:             Didactum-Monitor-01
  Collector:         localhost  (or remote collector if available)
  → Click "Add"
  → Zenoss 
automatically starts device modeling

Step 4 – Verify Device Modeling

Zenoss Web UI → Infrastructure → Devices → Didactum-Monitor-01
  → "Details" tab
  → sysDescr: Didactum Monitoring System (automatically read via SNMP)
  → sysUpTime, sysContact, sysLocation appear after successful modeling

If modeling fails:
  → Zenoss CLI: zenmodeler run -d 192.168.1.50
  → Check log: tail -f /opt/zenoss/log/zenmodeler.log

5. Create Monitoring Template with Datasources and Thresholds

In Zenoss, a monitoring template fully defines which OIDs are queried (datasources / datapoints) and which thresholds are monitored (thresholds). The template is assigned to the device class /Devices/Environmental/Didactum and automatically applies to all devices in this class.

Important – Temperature Thresholds: The Didactum device delivers temperature values as raw value × 10. 25.5 °C = OID value 255. All temperature thresholds in the monitoring template must also be specified as × 10.

Step 1 – Create a New Monitoring Template

Zenoss Web UI → Advanced → Monitoring Templates → Add Template

  Template Name:  DidactumSensors
  Device Class:   /Devices/Environmental/Didactum
  Description:    SNMP Monitoring for Didactum Environmental Sensors
  → Click "Add"

Step 2 – Create Datasources (OID Queries)

Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors
  → Datasources → Add Datasource

-- ================================================================
-- Datasource 1: Temperature Sensor Measured Value (Sensor ID 101001)
-- ================================================================
  Name:          temperature_value_01
  Type:          SNMP
 
 OID:           .1.3.6.1.4.1.46501.5.1.1.7.101001
  Component:     (leave empty)
  Enabled:       Yes
  → Save

  Datapoint temperature_value_01_value:
    RRD Type:    GAUGE
    Description: Temperature Sensor 01 Raw Value x10 (235 = 23.5 degrees C)

-- ================================================================
-- Datasource 2: Temperature Sensor Status
-- ================================================================
  Name:          temperature_status_01
  Type:          SNMP
  OID:          
 .1.3.6.1.4.1.46501.5.1.1.6.101001
  Enabled:       Yes

  Datapoint temperature_status_01_value:
    RRD Type:    GAUGE
    Description: 0=OK, 1=Alarm, 2=No Signal

-- ================================================================
-- Datasource 3: Water Sensor / Leakage (Sensor ID 107001)
-- ================================================================
  Name:          leakage_value_01
  Type:          SNMP
  OID:           .1.3.6.1.4.1.46501.5.1.1.7.107001
  Enabled:       Yes

  Datapoint leakage_value_01_value:
    RRD Type:    GAUGE
   
 Description: 0=dry/OK, 1=Water detected/CRITICAL

-- ================================================================
-- Datasource 4: Humidity (Sensor ID 102001)
-- ================================================================
  Name:          humidity_value_01
  Type:          SNMP
  OID:           .1.3.6.1.4.1.46501.5.1.1.7.102001
  Enabled:       Yes

  Datapoint humidity_value_01_value:
    RRD Type:    GAUGE
    Description: Humidity in %

-- ================================================================
-- Datasource 5: Door Contact (Sensor ID 104001)
-- ================================================================
  Name:          door_contact_01
  Type:   
       SNMP
  OID:           .1.3.6.1.4.1.46501.5.1.1.7.104001
  Enabled:       Yes

  Datapoint door_contact_01_value:
    RRD Type:    GAUGE
    Description: 0=closed/OK, 1=opened/Warning

-- ================================================================
-- Datasource 6: Smoke Detector (Sensor ID 106001)
-- ================================================================
  Name:          smoke_detector_01
  Type:          SNMP
  OID:           .1.3.6.1.4.1.46501.5.1.1.7.106001
  Enabled:       
Yes

  Datapoint smoke_detector_01_value:
    RRD Type:    GAUGE
    Description: 0=no smoke/OK, 1=Alarm/CRITICAL

Step 3 – Create Thresholds

Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors
  → Thresholds → Add Threshold

-- ================================================================
-- Threshold 1: Temperature Warning
-- ================================================================
  Name:       Temperature_Warning
  Type:       MinMaxThreshold
  Datapoints: temperature_value_01_value
  Max Value:  280       (Raw value 280 = 28.0 degrees C)
  Min Value:  (leave empty)
  Severity:   Warning
  Event 
Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 2: Temperature Critical
-- ================================================================
  Name:       Temperature_Critical
  Type:       MinMaxThreshold
  Datapoints: temperature_value_01_value
  Max Value:  350       (Raw value 350 = 35.0 degrees C)
  Severity:   Critical
  Event Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 3: Temperature Sensor No Signal
-- ================================================================
  Name:       Temperature_NoSignal
  Type:       MinMaxThreshold
  Datapoints: temperature_status_01_value
  Max Value:  1
  Severity:   Warning
 
 Event Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 4: Leakage Critical
-- ================================================================
  Name:       Leakage_Critical
  Type:       MinMaxThreshold
  Datapoints: leakage_value_01_value
  Max Value:  0         (Alarm if value >
0, i.e., starting from 1)
  Severity:   Critical
  Event Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 5: Humidity Warning
-- ================================================================
  Name:       Humidity_Warning
  Type:       MinMaxThreshold
  Datapoints: humidity_value_01_value
  Max Value:  80
  Severity:   Warning
  Event Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 6: Humidity Critical
-- ================================================================
  Name:       Humidity_Critical
  Type:       MinMaxThreshold
  Datapoints: humidity_value_01_value
  Max Value:  90
  Severity:   Critical
  Event Class: 
/Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 7: Door Contact Opened
-- ================================================================
  Name:       Door_Open_Warning
  Type:       MinMaxThreshold
  Datapoints: door_contact_01_value
  Max Value:  0         (Alarm if value >
0)
  Severity:   Warning
  Event Class: /Environmental/Didactum
  → Save

-- ================================================================
-- Threshold 8: Smoke Detector Critical
-- ================================================================
  Name:       Smoke_Critical
  Type:       MinMaxThreshold
  Datapoints: smoke_detector_01_value
  Max Value:  0         (Alarm if value > 0)
  Severity:   Critical
  Event Class: /Environmental/Didactum
  → Save

Step 4 – Assign and Bind Template to Device

Zenoss Web UI → Infrastructure → Devices → Didactum-Monitor-01
  → "Monitoring Templates" tab
  → Template "DidactumSensors" appears 
(automatically through device class assignment)
  → If not: "Add Template" → select DidactumSensors → Apply

  → Zenoss starts SNMP polling according to the template definition
  → Graphs appear after the first polling cycle (default: 5 minutes)

6. Configure Event Classes for Didactum Alarms

Zenoss organizes all occurrences (events) into event classes. A dedicated event class is created for Didactum, which aggregates threshold alarms and SNMP trap events to handle them uniformly.

Step 1 – Create Event Class

Zenoss Web UI → Events → Event Classes → Add Event Class

  Class Path:   /Environmental/Didactum
  Description:  Didactum Environmental Monitoring Alarms

Step 2 – Create Event Class Mapping for SNMP Traps

Zenoss Web UI → Events → Event Classes → /Environmental/Didactum
  → Event Class Mappings → Add Mapping

  -- Mapping 1: General Didactum Alarm Trap --
  Mapping Name:   DidactumAlarmTrap
  Event Class:    /Environmental/Didactum
  Rule:           oid.startswith(".1.3.6.1.4.1.46501.1.1")
  Severity:     
  Critical
  Summary:        Didactum Sensor Alarm: ${evt/oid}
  Message:        Didactum SNMP trap from ${evt/device}: ${evt/summary}
  → Save

  -- Mapping 2: Trap from newer device (Enterprise OID 39052) --
  Mapping Name:   DidactumAlarmTrap_39052
  Rule:           oid.startswith(".1.3.6.1.4.1.39052.1.1")
  Severity:       Critical
  Summary:        Didactum Sensor Alarm (39052): ${evt/oid}
  → Save

Step 3 – Configure Event Transforms (Optional)

Zenoss Web UI → 
Events → Event Classes → /Environmental/Didactum → Transform

  # Python Transform: Adjust severity according to sensor type
  if "leakage" in evt.component.lower() or "smoke" in evt.component.lower():
      evt.severity = 5   # Critical
  elif "temperature" in evt.component.lower():
      if int(evt.current) >= 350:
          evt.severity = 5   # Critical
      else:
          evt.severity = 3   # Warning
  → Save

7. Configure SNMP Trap Reception

Step 1 – Check zentrap Daemon

As zenoss user on the Zenoss server:

  zenoss status |
grep zentrap
  # Expected result: zentrap ... running

If zentrap is not running:
  zenoss start zentrap
  # or:
  supervisorctl start zentrap  (on Zenoss 6.x / ZSD)

Step 2 – Configure Trap Community in Zenoss

Zenoss Web UI → Advanced → Settings → SNMP Traps

  Trap Port:        162
  Community String: didactum_trap   (must match the Didactum device)
  → Save
  → Restart zentrap: zenoss restart zentrap

Step 3 – Set Trap Forwarding in Didactum Web Interface

Didactum Web Interface → System Settings → SNMP → Trap Destinations

  Trap 
Destination: 192.168.1.100   (IP of the Zenoss server)
  Trap Community:   didactum_trap
  Trap Version:     v2c
  Trap Port:        162
  → Save

Step 4 – Test Trap Reception

Trigger test trap in Didactum Web Interface:
  System Settings → SNMP → "Send Test Trap"

Check in Zenoss:
  Zenoss Web UI → Events → Event Console
  → New event with device 192.168.1.50 appears
  → Event Class: /Environmental/Didactum
  → Severity: Critical
  → Summary: Didactum Sensor Alarm

Check zentrap log on the server:
  tail -f /opt/zenoss/log/zentrap.log

8. Configure Notifications

Create Action (Email)

Zenoss Web UI → Events → Triggers → Actions → Add Action

  Action Name:   Didactum_Email_Admin
  Action Type:   Email
  Host (SMTP):   mail.yourdomain.com
  From:          zenoss@yourdomain.com
  To:            admin@yourdomain.com
  Subject:       [Zenoss] Didactum Alarm: ${evt/device} – ${evt/summary}
  Body:
    Time:        ${evt/firstTime}
    Device:      ${evt/device} (${evt/ipAddress})
  
  Severity:    ${evt/severity}
    Event Class: ${evt/eventClass}
    Summary:     ${evt/summary}
    Message:     ${evt/message}
    OID:         ${evt/oid}
  → Save

Create Trigger

Zenoss Web UI → Events → Triggers → Add Trigger

  Trigger Name:   Didactum_Critical_Trigger
  Enabled:        Yes
  Rule:           (evt/eventClass).startswith("/Environmental/Didactum")
              
    and evt/severity >= 4   (4=Error / 5=Critical)
  → Save

Create Notification and Link Trigger

Zenoss Web UI → Events → Triggers → Notifications → Add Notification

  Notification Name:  Didactum_Sensor_Alert
  Action:             Didactum_Email_Admin
  Trigger:            Didactum_Critical_Trigger
  Delay:              0 seconds (immediately)
  Repeat:            
 300 seconds (repeat every 5 minutes as long as alarm is active)
  → Save

  Second notification for Warning:
  Trigger:            Didactum_Warning_Trigger  (analogous;
evt/severity >= 3)
  Delay:              0 seconds
  Repeat:             600 seconds
  → Save

9. Configure Graphs and Dashboard

Create Graph Definition in Monitoring Template

Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors → Graph Definitions
  → Add Graph Definition

  -- Graph 1: Temperature Trend --
  Graph Name:    Temperature Sensor 01
  Units:         Raw Value (÷10 = Degrees 
C)
  Graph Points:
    - Datapoint: temperature_value_01_value
      Legend:    Temperature (Raw value x10)
      Color:     #e05050
  Threshold Lines:
    - 280 (Warning) / 350 (Critical)
  → Save

  -- Graph 2: Humidity --
  Graph Name:    Humidity Sensor 01
  Units:         %
  Graph Points:
    - Datapoint: humidity_value_01_value
      Legend:    Humidity %
  → Save

Configure Dashboard Portlets

Zenoss Web UI → Dashboard → Add Portlet

  Portlet 1: Device Issues
    Filter: Device Class = /Devices/Environmental/Didactum
    Shows: Device status and active events

  Portlet 2: Event View
    Filter: Event Class = /Environmental/Didactum
    Severity: Warning and Critical
    Shows: All active Didactum alarms

  Portlet 3: Network Map
    Filter: /Devices/Environmental/Didactum
    Shows: Didactum devices with status color-coding

  Portlet 4: Device Performance (Pro Version)
    Device: Didactum-Monitor-01
    Template: DidactumSensors
    Graph: Temperature Sensor 01

10. SNMP OID Reference for Didactum Sensors

All Didactum OIDs start with .1.3.6.1.4.1.46501 (older firmware) or .1.3.6.1.4.1.39052 (newer models). The sensor ID is appended at the end.

OID Fields per Sensor

FieldOID SuffixMeaningExample (Sensor 101001)
Sensor Index.5.1.1.1.SENSOR_IDInternal index.1.3.6.1.4.1.46501.5.1.1.1.101001
Sensor ID.5.1.1.2.SENSOR_IDNumeric sensor ID.1.3.6.1.4.1.46501.5.1.1.2.101001
Sensor Type.5.1.1.3.SENSOR_IDType identifier code.1.3.6.1.4.1.46501.5.1.1.3.101001
Sensor Name.5.1.1.5.SENSOR_IDLabel (String).1.3.6.1.4.1.46501.5.1.1.5.101001
Sensor Status.5.1.1.6.SENSOR_ID0=OK, 1=Alarm, 2=No Signal.1.3.6.1.4.1.46501.5.1.1.6.101001
Sensor Measured Value.5.1.1.7.SENSOR_IDCurrent measured value.1.3.6.1.4.1.46501.5.1.1.7.101001

Sensor Types with Full OIDs and Zenoss Threshold Values

Sensor TypeSensor IDOID Measured ValueOID StatusZenoss Threshold (Max Value)
Temperature Sensor (digital)101001.1.3.6.1.4.1.46501.5.1.1.7.101001.1.3.6.1.4.1.46501.5.1.1.6.101001Warning Max 280 / Critical Max 350 (Raw value × 10)
Temperature Sensor (analog)201001.1.3.6.1.4.1.39052.5.2.1.7.201001.1.3.6.1.4.1.39052.5.2.1.6.201001Warning Max 280 / Critical Max 350 (× 10)
Water Sensor / Leakage107001.1.3.6.1.4.1.46501.5.1.1.7.107001.1.3.6.1.4.1.46501.5.1.1.6.107001Critical Max 0 (Alarm if value > 0)
Humidity102001.1.3.6.1.4.1.46501.5.1.1.7.102001.1.3.6.1.4.1.46501.5.1.1.6.102001Warning Max 80 / Critical Max 90 (directly %)
Dry Contact101003.1.3.6.1.4.1.39052.5.1.1.7.101003.1.3.6.1.4.1.39052.5.1.1.6.101003Warning Max 0 (Alarm if value > 0)
Door Contact104001.1.3.6.1.4.1.46501.5.1.1.7.104001.1.3.6.1.4.1.46501.5.1.1.6.104001Warning Max 0 (Alarm if value > 0)
Smoke Detector106001.1.3.6.1.4.1.46501.5.1.1.7.106001.1.3.6.1.4.1.46501.5.1.1.6.106001Critical Max 0 (Alarm if value > 0)

Determine Sensor ID: In the Didactum Web Interface under System Tree → Select Sensor → Details. The displayed sensor ID is appended as the last element to the OID. With multiple identical sensors, the last digit increases: 101001, 101002, 101003, etc.

Zenoss Threshold Logic: MinMaxThreshold triggers an alarm when the value exceeds the Max Value. For binary sensors (leakage, door contact, smoke), therefore set Max Value = 0: alarm as soon as value > 0. For temperature: Max Value = 280 (Warning) or 350 (Critical) as raw value × 10.

11. Useful Zenoss CLI Commands

Check Daemon Status

su - zenoss
zenoss status

# Relevant daemons for Didactum integration:
# zenperfsnmp  – SNMP polling
# zentrap      – SNMP trap reception
# zenactions   – Email notifications
# zenmodeler   – Device modeling

Test SNMP Connection

# snmpwalk – list all sensor values
snmpwalk -v 2c -c didactum_zenoss 192.168.1.50 \
    .1.3.6.1.4.1.46501.5.1.1

# snmpget – query temperature value (raw value ÷ 10 = °C)
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
    .1.3.6.1.4.1.46501.5.1.1.7.101001
# Expected output: INTEGER: 235  (= 
23.5 °C)

# snmpget – leakage status
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
    .1.3.6.1.4.1.46501.5.1.1.7.107001
# Expected output (dry): INTEGER: 0

# snmpget – sensor status
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
    .1.3.6.1.4.1.46501.5.1.1.6.101001
# Expected output (OK): INTEGER: 0

Trigger Device Modeling Manually

zenmodeler run -d 192.168.1.50 --debug
tail -f /opt/zenoss/log/zenmodeler.log

Check SNMP Polling Status

zenperfsnmp run -d 192.168.1.50 --debug
tail -f /opt/zenoss/log/zenperfsnmp.log

Load MIB Manually

zenmib run /opt/zenoss/share/mibs/site/didactum.mib --debug

12. Troubleshooting and Solutions

ProblemCause & Solution
Device modeling failsSNMP not enabled on the Didactum device; community string incorrect in zProperties; UDP port 161 blocked by firewall → test snmpwalk directly from the Zenoss server; check zProperties of the device class
zenmib reports error during MIB importDependent MIBs are missing (SNMPv2-SMI, RFC1213-MIB) → reference base MIBs from /opt/zenoss/share/mibs/; alternatively, use DIDACTUM-MIB.txt from section 3; zenmib run --debug for details
OID returns "No Such Object"Wrong enterprise OID (46501 vs. 39052) → check sysObjectID via snmpwalk: snmpwalk -v 2c -c COMMUNITY IP .1.3.6.1.2.1.1.2.0
Temperature value appears 10× too highNot an error – Didactum delivers raw value × 10. Set Zenoss MinMaxThreshold Max Value as × 10 value (28 °C = 280). Adjust graph label to ÷10 = °C.
Threshold does not trigger an eventMinMaxThreshold logic: Alarm if value > Max Value. For binary sensors, set Max Value = 0. Is zenperfsnmp running? → zenoss status | grep zenperfsnmp
SNMP traps do not arrive in the Event Consolezentrap daemon not active → zenoss start zentrap; trap destination IP incorrect in the Didactum device; UDP port 162 blocked by firewall; trap community does not match → tail -f /opt/zenoss/log/zentrap.log
Trap event without event class mappingEvent lands in /Unknown instead of /Environmental/Didactum → create event class mapping for trap OID .1.3.6.1.4.1.46501.1.1 (section 6)
No email on alarmzenactions daemon not active; SMTP configuration missing; trigger rule does not match; notification not active → zenoss status | grep zenactions; test trigger rule in the Web UI
Graphs show no dataFirst polling interval (default: 5 minutes) has not yet expired; datasource OID incorrect → check zenperfsnmp log; verify datasource OID in the template
Monitoring template is not appliedTemplate assigned to the wrong device class; device in the wrong device class → Devices → Didactum-Monitor-01 → check Device Class; bind template explicitly

13. Final Checklist

Didactum Device

  • SNMP enabled (v2c)
  • Community string set (not "public"): didactum_zenoss
  • Trap destination set to the IP of the Zenoss server
  • Trap community set: didactum_trap
  • MIB file downloaded (didactum.mib)
  • snmpwalk from Zenoss server successful

Zenoss Server

  • DIDACTUM-MIB copied to /opt/zenoss/share/mibs/site/ and compiled via zenmib
  • MIB resolution verified in the Zenoss Web UI under Advanced → MIBs
  • Device class /Devices/Environmental/Didactum created
  • zProperties of the device class set (community, version, port)
  • Device Didactum-Monitor-01 created and device modeling successful
  • Monitoring template DidactumSensors created
  • All 6 datasources (OIDs) created in the template
  • All 8 thresholds created in the template
  • Temperature thresholds set as raw value × 10 (Warning Max 280 / Critical Max 350)
  • Binary sensor thresholds set with Max Value 0 (alarm if value > 0)
  • Template assigned to the device class and bound to the device
  • Event class /Environmental/Didactum created
  • Event class mappings created for trap OIDs
  • zentrap daemon active (UDP port 162)
  • Trap community set in Zenoss Advanced → Settings
  • Trigger and notification configured for email alert
  • zenactions daemon active

Tests & Verification

  • Device modeling completed (sysDescr appears in device details)
  • Initial graph data available after one polling cycle (5 minutes)
  • Temperature graph shows raw values (÷10 = °C)
  • Test trap triggered via Didactum Web Interface → event appears in Event Console
  • Event Class: /Environmental/Didactum (correctly assigned by mapping)
  • Email received on test alarm
  • Dashboard portlets show Didactum device status and events
  • Threshold test: snmpwalk confirms raw value; manually set threshold above test value → event is generated

This website uses cookies

This website uses cookies to improve user experience. By using our website you consent to all cookies in accordance with our Cookie Policy.

Essential cookies enable basic functions and are necessary for the website to function properly.
Statistics cookies collect information anonymously. This information helps us to understand how our visitors use our website.
Marketing cookies are used by third parties or publishers to display personalized advertisements. They do this by tracking visitors across websites.