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 interface | Value |
|---|---|
| SNMP enabled | Enabled |
| SNMP version | v2c (recommended) |
| Community string | didactum_observium (do not use “public”!) |
| SNMP port | 161 |
| Trap receiver IP (optional) | 192.168.1.10 (Observium server) |
| Trap port | 162 |
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)
| Field | Value |
|---|---|
| Hostname | didactum-monitor-01 (DNS name or IP: 192.168.1.50) |
| SNMP version | v2c |
| SNMP community | didactum_observium |
| SNMP port | 161 |
| SNMP transport | UDP |
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
| Field | Value |
|---|---|
| Name | Didactum temperature sensor 01 |
| OID | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
| Type | Gauge (single value) |
| Unit | °C |
| Divisor | 10 (raw value ÷ 10 = degrees Celsius) |
| Description | Room temperature server room – sensor 01 |
After saving, click Associate Devices and select didactum-monitor-01.
Custom OID: Leak sensor
| Field | Value |
|---|---|
| Name | Didactum leak sensor 01 |
| OID | .1.3.6.1.4.1.46501.5.1.1.7.107001 |
| Type | Gauge |
| Unit | empty (status value: 0 or 1) |
| Divisor | 1 (no divisor) |
| Description | Water sensor – 0=dry, 1=water detected |
Custom OID: Humidity
| Field | Value |
|---|---|
| Name | Didactum humidity sensor 01 |
| OID | .1.3.6.1.4.1.46501.5.1.1.7.102001 |
| Type | Gauge |
| Unit | % |
| Divisor | 1 |
| Description | Humidity server room |
Custom OID: Door contact
| Field | Value |
|---|---|
| Name | Didactum door contact 01 |
| OID | .1.3.6.1.4.1.46501.5.1.1.7.104001 |
| Type | Gauge |
| Unit | empty (0=closed, 1=open) |
| Divisor | 1 |
Custom OID: Sensor status
| Field | Value |
|---|---|
| Name | Didactum temp status sensor 01 |
| OID | .1.3.6.1.4.1.46501.5.1.1.6.101001 |
| Type | Gauge |
| Unit | empty (0=OK, 1=alarm, 2=no signal) |
| Divisor | 1 |
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
| Field | Value |
|---|---|
| Name | Didactum temperature too high |
| Entity type | Sensor |
| Entity subtype | temperature |
| Conditions → Add condition | Value > 28 (or desired threshold in °C) |
| Alert delay | 2 minutes (prevents false alarms from short spikes) |
| Severity | Warning |
Create a second alert check with severity Critical:
| Field | Value |
|---|---|
| Name | Didactum temperature critical |
| Conditions | Value > 35 |
| Severity | Critical |
Alert Check: Leak
| Field | Value |
|---|---|
| Name | Didactum leak ALARM |
| Entity type | Sensor (or Custom OID, depending on configuration) |
| Conditions | Value >= 1 (water detected) |
| Alert delay | 0 minutes (alert immediately) |
| Severity | Critical |
Alert Check: Device unreachable
| Field | Value |
|---|---|
| Name | Didactum Device Down |
| Entity type | Device |
| Conditions | Status = down |
| Alert delay | 5 minutes |
| Severity | Critical |
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
| Field | Value |
|---|---|
| Transport name | Didactum email admin |
| Transport type | |
| 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
| Field | Meaning | Example |
|---|---|---|
| .1.x.SENSOR_ID | Sensor ID | .1.3.6.1.4.1.46501.5.1.1.1.101001 |
| .5.x.SENSOR_ID | Sensor name | .1.3.6.1.4.1.46501.5.1.1.5.101001 |
| .6.x.SENSOR_ID | Status (0=OK, 1=Alarm, 2=No signal) | .1.3.6.1.4.1.46501.5.1.1.6.101001 |
| .7.x.SENSOR_ID | Measurement value (current) | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
Sensor types and OIDs
| Sensor type | Sensor ID | Value OID | Status OID | Unit / 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.101001 | Divisor 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.201001 | Divisor 10 → °C |
| Water sensor / leak | 107001 | .1.3.6.1.4.1.46501.5.1.1.7.107001 | .1.3.6.1.4.1.46501.5.1.1.6.107001 | 0=dry, 1=water detected |
| Humidity | 102001 | .1.3.6.1.4.1.46501.5.1.1.7.102001 | .1.3.6.1.4.1.46501.5.1.1.6.102001 | Value in % (65 = 65 %) |
| Potential‑free contact | 101003 | .1.3.6.1.4.1.39052.5.1.1.7.101003 | .1.3.6.1.4.1.39052.5.1.1.6.101003 | 0=open, 1=closed |
| Door contact | 104001 | .1.3.6.1.4.1.46501.5.1.1.7.104001 | .1.3.6.1.4.1.46501.5.1.1.6.104001 | 0=closed, 1=open |
| Smoke detector | 106001 | .1.3.6.1.4.1.46501.5.1.1.7.106001 | .1.3.6.1.4.1.46501.5.1.1.6.106001 | 0=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
| Problem | Cause & solution |
|---|---|
| Device cannot be added | Device 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 discovery | MIB file missing or placed incorrectly; check sensor definition in .inc.php |
| Custom OID not available | Only available in Subscription Edition; Community Edition does not support custom OIDs |
| Temperature values 10× too high | Missing divisor → edit custom OID and set divisor to 10 |
| No graphs after 15 minutes | Polling not running; missing cron entry; missing write permissions in RRD directory |
| No email on alert | Only available in Subscription Edition; check config.php; check Postfix; assign contact to alert check |
| Alert Checks not visible | Only 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