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

Didactum Monitoring and Observium Integration

Complete step‑by‑step guide to integrating Didactum monitoring devices and sensors into Observium via SNMP – including adding the device, installing MIBs, custom OIDs, OS definition, alert checks and email notification.

Note regarding Observium editions: 

Observium is available in two variants. The Community Edition (free) provides basic SNMP monitoring without email alerting. The Professional / Subscription Edition includes alert checks, email notification, custom OIDs and extended MIB support. The key features of this guide (custom OIDs, alerting) require the Subscription Edition.

  • Software: Observium Community or Professional/Subscription Edition
  • Installation path: /opt/observium (default)
  • Protocol: SNMP v1 / v2c / v3
  • Devices: Didactum Monitoring System 100 / 500T / 500 II
  • Sensors: Temperature, leak, humidity, door contact, smoke

1. Prerequisites and System Overview

Observium server

  • Ubuntu 20.04 / 22.04 LTS (recommended)
  • Observium installed under /opt/observium
  • LAMP stack (Apache, MySQL, PHP) installed
  • Packages: snmp, snmp-mibs-downloader, rrdtool
  • Outbound UDP port 161 open (SNMP polling)
  • Network access to the Didactum device

Didactum device

  • Monitoring System 100T, 300T, 500T or 550T
  • SNMP enabled (v2c or v3)
  • Pings and reachable via SNMP from the Observium server (prerequisite)
  • MIB file available in the web interface

Architecture & data flow

[Observium Server]              [Didactum Monitoring System]
  IP: 192.168.1.10                IP: 192.168.1.50
  Web: [http://192.168.1.10/](http://192.168.1.10/)
  /opt/observium/
                    --SNMP Polling UDP 161 (every 5 min.)-->
                    <-- SNMP Walk / Get ---
                    --RRD data stored under:
                      /opt/observium/rrd/

Important Observium directories

/opt/observium/                      <-- Main directory
/opt/observium/config.php            <-- Main configuration
/opt/observium/mibs/                 <-- MIB files (add custom ones)
/opt/observium/includes/definitions/ <-- OS and MIB definitions
/opt/observium/rrd/                  <-- RRD databases (time series)
/opt/observium/logs/                 <-- Log files

2. Enable SNMP on the Didactum device

Step 1 – Open web interface

Open in browser: 192.168.1.50 (adapt the IP address of the Didactum device)

Step 2 – Open SNMP settings

System settings → SNMP

Step 3 – Enter the following values

Field in Didactum web interfaceValue
SNMP enabledEnabled
SNMP versionv2c (recommended)
Community stringdidactum_observium (do not use “public”!)
SNMP port161
Trap receiver IP (optional)192.168.1.10 (Observium server)
Trap port162

Important: Device must be pingable

Observium checks at device registration whether the device is reachable via ICMP. Make sure the Didactum device responds to ping requests:

ping 192.168.1.50

3. Configure SNMP Community in Observium

Observium can store multiple community strings and automatically uses them when adding devices.

Variant A – Enter community in config.php (recommended)

sudo nano /opt/observium/config.php

Add the following lines:

// ============================================================
// SNMP Community Strings
// Observium tries these automatically during device discovery
// ============================================================

// SNMPv2c communities
$config['snmp']['community'][] = "didactum_observium";
$config['snmp']['community'][] = "public";   // fallback, if needed

// SNMPv3 configuration (optional)
$config['snmp']['v3'][0]['authname']   = "observium_user";
$config['snmp']['v3'][0]['authpass']   = "YourAuthPassword";
$config['snmp']['v3'][0]['authalgo']   = "SHA";
$config['snmp']['v3'][0]['cryptopass'] = "YourPrivPassword";
$config['snmp']['v3'][0]['cryptoalgo'] = "AES";

Variant B – Specify community when adding the device

When adding the device manually via the web interface, the community can be entered directly (see section 4).

4. Add Didactum Device to Observium

Variant A – Via the web interface

Devices → Add Device (top right in the menu)
FieldValue
Hostnamedidactum-monitor-01 (DNS name or IP: 192.168.1.50)
SNMP versionv2c
SNMP communitydidactum_observium
SNMP port161
SNMP transportUDP

Click Add Device. Observium immediately checks the SNMP connection and adds the device if it succeeds.

Variant B – Command line (CLI)

cd /opt/observium

# SNMPv2c – standard
./add_device.php 192.168.1.50 didactum_observium v2c

# SNMPv2c with port and DNS name
./add_device.php didactum-monitor-01 didactum_observium v2c 161 udp

# SNMPv3 – with authentication and encryption
./add_device.php 192.168.1.50 ap v3 observium_user \\
    YourAuthPassword YourPrivPassword sha aes 161 udp

Expected output on success:

  o  didactum-monitor-01 (192.168.1.50)
     SNMP Version v2c
     Community    didactum_observium
     Added device didactum-monitor-01.

Variant C – Add multiple devices from a text file

# Create file didactum-devices.txt:
# 192.168.1.50 didactum_observium v2c
# 192.168.1.51 didactum_observium v2c

./add_device.php didactum-devices.txt

5. Install MIB File

Observium uses MIB files to translate OID numbers into human-readable names and to automatically discover sensors.

Step 1 – Download MIB from the Didactum web interface

System settings → SNMP → "Download MIB file" → didactum.mib

Step 2 – Copy MIB into the Observium MIB directory

# Create vendor directory for Didactum
sudo mkdir -p /opt/observium/mibs/didactum

# Copy MIB file
sudo cp didactum.mib /opt/observium/mibs/didactum/

# Alternatively: copy into RFC directory (for generic MIBs)
sudo cp didactum.mib /opt/observium/mibs/rfc/

Step 3 – Update SNMP system MIBs

sudo cp didactum.mib /usr/share/snmp/mibs/
echo "mibdirs /usr/share/snmp/mibs" | sudo tee -a /etc/snmp/snmp.conf
echo "mibs ALL" | sudo tee -a /etc/snmp/snmp.conf

Step 4 – Test MIB connection

# Test SNMP walk with MIB names
snmpwalk -v 2c -c didactum_observium -m ALL 192.168.1.50 \\
    .1.3.6.1.4.1.46501.5.1.1

# Test OID translation
snmptranslate -m /opt/observium/mibs/didactum/didactum.mib \\
    .1.3.6.1.4.1.46501.5.1.1.7.101001

6. Create OS Definition for Didactum

For Observium to recognize the Didactum device correctly, an OS definition must be created. Without this definition the device will appear as “Unknown”.

Step 1 – Create OS definition file

sudo nano /opt/observium/includes/definitions/os/didactum.inc.php

Step 2 – Enter the following content

<?php
/**
 * Observium OS definition for Didactum Monitoring System
 * File: /opt/observium/includes/definitions/os/didactum.inc.php
 */

// OS identifier
$os = "didactum";

// Display name and metadata
$config['os'][$os]['text']     = "Didactum Monitoring System";
$config['os'][$os]['type']     = "environment";
$config['os'][$os]['vendor']   = "Didactum";
$config['os'][$os]['icon']     = "didactum";

// Enterprise OID for device detection
// Older devices: .1.3.6.1.4.1.46501
// Newer devices: .1.3.6.1.4.1.39052
$config['os'][$os]['sysObjectID'][] = ".1.3.6.1.4.1.46501";
$config['os'][$os]['sysObjectID'][] = ".1.3.6.1.4.1.39052";

// Alternatively: detection via sysDescr
$config['os'][$os]['sysDescr'][] = "/[Dd]idactum/";
$config['os'][$os]['sysDescr'][] = "/[Mm]onitoring [Ss]ystem/";

// Assign MIBs
$config['os'][$os]['mibs'][] = "DIDACTUM-MIB";

// Specify MIB directory
$config['os'][$os]['mib_dirs'][] = "didactum";

Step 3 – Create sensor definition for temperature

sudo nano /opt/observium/includes/definitions/mibs/didactum.inc.php
<?php
/**
 * Observium MIB definition for Didactum sensors
 * File: /opt/observium/includes/definitions/mibs/didactum.inc.php
 */
// Temperature sensor (digital, sensor ID 101001)
// Raw value ÷ 10 = degrees Celsius
$config['mibs']['DIDACTUM-MIB']['sensor']['temperature']['indexes'][0] = array(
    'descr'      => 'Temperature sensor 01',
    'class'      => 'temperature',
    'measured'   => 'device',
    'oid_num'    => '.1.3.6.1.4.1.46501.5.1.1.7.101001',
    'oid_descr'  => '.1.3.6.1.4.1.46501.5.1.1.5.101001',
    'precision'  => 10,       // Divisor: raw value ÷ 10 = degrees Celsius
    'min'        => -40,
    'max'        => 80,
    'warn_min'   => 5,
    'warn_max'   => 28,
);
// Leak sensor (sensor ID 107001)
$config['mibs']['DIDACTUM-MIB']['sensor']['gauge']['indexes'][0] = array(
    'descr'      => 'Leak sensor 01',
    'class'      => 'state',
    'measured'   => 'device',
    'oid_num'    => '.1.3.6.1.4.1.46501.5.1.1.7.107001',
    'oid_descr'  => '.1.3.6.1.4.1.46501.5.1.1.5.107001',
);
// Humidity sensor (sensor ID 102001)
$config['mibs']['DIDACTUM-MIB']['sensor']['humidity']['indexes'][0] = array(
    'descr'      => 'Humidity 01',
    'class'      => 'humidity',
    'measured'   => 'device',
    'oid_num'    => '.1.3.6.1.4.1.46501.5.1.1.7.102001',
    'oid_descr'  => '.1.3.6.1.4.1.46501.5.1.1.5.102001',
    'min'        => 0,
    'max'        => 100,
    'warn_min'   => 20,
    'warn_max'   => 80,
);

7. Perform Discovery and Polling

Step 1 – Start discovery manually

Discovery detects the device type, sensors and available MIBs:

cd /opt/observium

# Full discovery for the Didactum device
./discovery.php -h didactum-monitor-01

# Discovery only for the OS detection module
./discovery.php -h didactum-monitor-01 -m os

# Discovery only for sensors
./discovery.php -h didactum-monitor-01 -m sensors

# With debug output (very verbose)
./discovery.php -h didactum-monitor-01 -d

Step 2 – Start polling manually

Polling fetches the current values and stores them in RRD:

cd /opt/observium

# Polling for the Didactum device
./poller.php -h didactum-monitor-01

# With debug output
./poller.php -h didactum-monitor-01 -d

Step 3 – Check sensors in the web interface

Web interface: [http://192.168.1.10/](http://192.168.1.10/)
→ Devices → didactum-monitor-01
→ Tab "Health" or "Sensors"
→ Detected sensors are displayed here

Step 4 – Ensure automatic polling (cron)

# Check cron entries
sudo crontab -l -u www-data

# If not present, add:
sudo crontab -e -u www-data

Enter the following content into the crontab:

# Observium Cron jobs
# Polling every 5 minutes
*/5 * * * * /opt/observium/poller-wrapper.py 16 >> /dev/null 2>&1

# Discovery daily at 01:33
33 1 * * * /opt/observium/discovery.php -h all >> /dev/null 2>&1

# Discovery of new devices every 5 minutes
*/5 * * * * /opt/observium/discovery.php -h new >> /dev/null 2>&1

# Alerter after each polling run
*/5 * * * * /opt/observium/alerter.php >> /dev/null 2>&1

8. Creating Custom OIDs (Subscription Edition)

Custom OIDs allow direct querying and visualization of arbitrary SNMP OIDs – ideal for sensors that are not detected by automatic discovery.

Navigation in the web interface

Global menu (globe icon) → Custom OID → Add Custom OID

Custom OID: Temperature sensor

FieldValue
NameDidactum temperature sensor 01
OID.1.3.6.1.4.1.46501.5.1.1.7.101001
TypeGauge (single value)
Unit°C
Divisor10 (raw value ÷ 10 = degrees Celsius)
DescriptionRoom temperature server room – sensor 01

After saving, click Associate Devices and select didactum-monitor-01.

Custom OID: Leak sensor

FieldValue
NameDidactum leak sensor 01
OID.1.3.6.1.4.1.46501.5.1.1.7.107001
TypeGauge
Unitempty (status value: 0 or 1)
Divisor1 (no divisor)
DescriptionWater sensor – 0=dry, 1=water detected

Custom OID: Humidity

FieldValue
NameDidactum humidity sensor 01
OID.1.3.6.1.4.1.46501.5.1.1.7.102001
TypeGauge
Unit%
Divisor1
DescriptionHumidity server room

Custom OID: Door contact

FieldValue
NameDidactum door contact 01
OID.1.3.6.1.4.1.46501.5.1.1.7.104001
TypeGauge
Unitempty (0=closed, 1=open)
Divisor1

Custom OID: Sensor status

FieldValue
NameDidactum temp status sensor 01
OID.1.3.6.1.4.1.46501.5.1.1.6.101001
TypeGauge
Unitempty (0=OK, 1=alarm, 2=no signal)
Divisor1

Display custom OIDs in graphs

Web interface → Devices → didactum-monitor-01
→ Tab "Graphs" → "Custom"
→ Time‑series graphs of the polled OIDs

Graphs appear after about 15 minutes, following the next polling run.

9. Configure Alert Checks (Subscription Edition)

Alert checks continuously compare collected values against thresholds and trigger a notification when a threshold is exceeded.

Navigation

Alerts → Alert Checks → Add Alert Check

Alert Check: Temperature too high

FieldValue
NameDidactum temperature too high
Entity typeSensor
Entity subtypetemperature
Conditions → Add conditionValue > 28 (or desired threshold in °C)
Alert delay2 minutes (prevents false alarms from short spikes)
SeverityWarning

Create a second alert check with severity Critical:

FieldValue
NameDidactum temperature critical
ConditionsValue > 35
SeverityCritical

Alert Check: Leak

FieldValue
NameDidactum leak ALARM
Entity typeSensor (or Custom OID, depending on configuration)
ConditionsValue >= 1 (water detected)
Alert delay0 minutes (alert immediately)
SeverityCritical

Alert Check: Device unreachable

FieldValue
NameDidactum Device Down
Entity typeDevice
ConditionsStatus = down
Alert delay5 minutes
SeverityCritical

Assign alert check to the device

Alerts → Alert Checks → [select alert check]
→ Tab "Matches" → "Add device match"
→ Select device: didactum-monitor-01 → Save

10. Set up email notifications

Step 1 – Email settings in config.php

sudo nano /opt/observium/config.php
// ============================================================
// Email settings for Observium
// ============================================================
// Sender
$config['email']['from']    = '"Observium Didactum" <observium@ihredomain.de>';
// Default recipient (receives all alerts)
$config['email']['default'] = 'admin@ihredomain.de';
// Mail backend: 'mail' (PHP), 'sendmail' or 'smtp'
$config['email']['backend']  = 'mail';
// Embed graphs in email (Subscription Edition)
$config['email']['graphs']   = TRUE;
// For SMTP delivery (backend = 'smtp'):
// $config['email']['smtp_host']   = 'mail.ihredomain.de';
// $config['email']['smtp_port']   = 587;
// $config['email']['smtp_secure'] = 'tls';
// $config['email']['smtp_auth']   = TRUE;
// $config['email']['smtp_user']   = 'observium@ihredomain.de';
// $config['email']['smtp_pass']   = 'YourSMTPPassword';
// How often to repeat for ongoing alerts (seconds)
// Default: 86400 = 1 day
$config['alerts']['interval'] = 3600;  // Repeat every hour

Step 2 – Install Postfix for local mail delivery (recommended)

sudo apt install postfix mailutils -y
# Configuration type: select "Internet Site"
# Test:
echo "Testmail Observium" | mail -s "Test" [admin@ihredomain.de](mailto:admin@ihredomain.de)

Step 3 – Create notification transport (Subscription Edition)

Web interface → Alerts → Notification Transports → Add Transport
FieldValue
Transport nameDidactum email admin
Transport typeEmail
Email address[admin@ihredomain.de](mailto:admin@ihredomain.de)

Step 4 – Create contact and link to transport

Web interface → Alerts → Contacts → Add Contact
  Contact name:    Administrator
  Email:           [admin@ihredomain.de](mailto:admin@ihredomain.de)
  Transport:       Didactum email admin

Step 5 – Link alert check to contact

Alerts → Alert Checks → [edit alert check]
→ Contacts → Add contact → Administrator → Save

Step 6 – Test email delivery

cd /opt/observium

# Alert test (newer versions)
php test_alert.php -h didactum-monitor-01

# Start alerter manually
./alerter.php

11. SNMP OID Reference

All Didactum OIDs begin 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

FieldMeaningExample
.1.x.SENSOR_IDSensor ID.1.3.6.1.4.1.46501.5.1.1.1.101001
.5.x.SENSOR_IDSensor name.1.3.6.1.4.1.46501.5.1.1.5.101001
.6.x.SENSOR_IDStatus (0=OK, 1=Alarm, 2=No signal).1.3.6.1.4.1.46501.5.1.1.6.101001
.7.x.SENSOR_IDMeasurement value (current).1.3.6.1.4.1.46501.5.1.1.7.101001

Sensor types and OIDs

Sensor typeSensor IDValue OIDStatus OIDUnit / divisor
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.101001Divisor 10 → °C (255 = 25.5 °C)
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.201001Divisor 10 → °C
Water sensor / leak107001.1.3.6.1.4.1.46501.5.1.1.7.107001.1.3.6.1.4.1.46501.5.1.1.6.1070010=dry, 1=water detected
Humidity102001.1.3.6.1.4.1.46501.5.1.1.7.102001.1.3.6.1.4.1.46501.5.1.1.6.102001Value in % (65 = 65 %)
Potential‑free contact101003.1.3.6.1.4.1.39052.5.1.1.7.101003.1.3.6.1.4.1.39052.5.1.1.6.1010030=open, 1=closed
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.1040010=closed, 1=open
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.1060010=no smoke, 1=alarm

How to find the sensor ID: 

In the Didactum web interface under System tree → select sensor → Details. This ID is appended to the end of the OID.

Divisor in Observium: 

The divisor value 10 for the temperature custom OID makes Observium automatically divide the raw value by 10. Raw value 255 will then be stored and displayed as 25.5 °C.

MIB prefix per model: 

Older devices use .1.3.6.1.4.1.46501, while newer models may use .1.3.6.1.4.1.39052. Take the exact OIDs from the MIB file of your device.

12. Testing and Debugging

Test SNMP connection

# Simple ping test
ping 192.168.1.50

# Test SNMP connection
snmpget -v 2c -c didactum_observium 192.168.1.50 sysDescr.0

# List all sensors
snmpwalk -v 2c -c didactum_observium 192.168.1.50 \\
    .1.3.6.1.4.1.46501.5.1.1

# Query temperature value directly
snmpget -v 2c -c didactum_observium 192.168.1.50 \\
    .1.3.6.1.4.1.46501.5.1.1.7.101001

Discovery in debug mode

cd /opt/observium

# Full discovery with debug output
./discovery.php -h didactum-monitor-01 -d 2>&1 | tee /tmp/didactum-discovery.log

# Debug OS detection only
./discovery.php -h didactum-monitor-01 -m os -d

# Debug sensor discovery only
./discovery.php -h didactum-monitor-01 -m sensors -d

Polling in debug mode

./poller.php -h didactum-monitor-01 -d 2>&1 | tee /tmp/didactum-poll.log

Generate an SNMP Dump of the Device (for Support)

# Save full SNMP dump (for troubleshooting)
cd /opt/observium
./snmpwalk.php -h didactum-monitor-01

# File is saved as: didactum-monitor-01.snmpwalk

Error messages and solutions

ProblemCause & solution
Device cannot be addedDevice not pingable or SNMP not reachable → test with ping and snmpwalk; check firewall
Device appears as “Unknown OS”OS definition missing or sysObjectID does not match → debug discovery with -d
No sensors after discoveryMIB file missing or placed incorrectly; check sensor definition in .inc.php
Custom OID not availableOnly available in Subscription Edition; Community Edition does not support custom OIDs
Temperature values 10× too highMissing divisor → edit custom OID and set divisor to 10
No graphs after 15 minutesPolling not running; missing cron entry; missing write permissions in RRD directory
No email on alertOnly available in Subscription Edition; check config.php; check Postfix; assign contact to alert check
Alert Checks not visibleOnly available in Subscription Edition

View Observium Logs

# Observium own logs
sudo tail -f /opt/observium/logs/observium.log

# PHP errors
sudo tail -f /var/log/apache2/error.log

# Poller log
sudo tail -f /opt/observium/logs/poller.log

Completion Checklist

Didactum device

  • SNMP enabled (v2c)
  • Community string set (not “public”)
  • Device is pingable from the Observium server
  • snmpwalk test from the Observium server successful
  • MIB file downloaded

Observium server

  • Packages snmp, snmp-mibs-downloader installed
  • Community string entered in config.php
  • MIB file stored under /opt/observium/mibs/didactum/
  • OS definition /opt/observium/includes/definitions/os/didactum.inc.php created
  • Device added via add_device.php or web interface
  • Discovery successful: device has OS type “didactum”
  • Cron entries set for polling and discovery

Sensors & custom OIDs (Subscription Edition)

  • Custom OID for temperature sensor created with divisor 10
  • Custom OID for leak sensor created
  • Custom OID for humidity created
  • Custom OID assigned to device didactum-monitor-01
  • After 15 minutes: graphs visible under Devices → Custom

Alerting & notification (Subscription Edition)

  • Email settings configured in config.php
  • Postfix / mail delivery working (test email received)
  • Notification transport for email created
  • Contact with email address created
  • Alert check “Temperature too high” created and device assigned
  • Alert check “Leak ALARM” created (immediate, Critical)
  • Alert check “Device Down” created
  • Test alert triggered and email received

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.