Didactum Monitoring and Argus Integration
A complete step-by-step guide on integrating Didactum monitoring devices and sensors into Argus (System and Network Monitoring Software) via SNMP -including configuration file syntax, SNMP service definitions for all sensor types, notifications, and the web interface.
Note on Argus:
Argus is a lightweight, open-source monitoring software developed by Jeff Weisberg. The entire configuration is managed exclusively through text files. There is no web-based configuration interface - all settings are made directly within the configuration file. Argus automatically detects changes and reloads the configuration without requiring a restart.
- Software: Argus 5.x (argus.tcp4me.com / github.com/jaw0/argus5)
- Configuration: Text file (/etc/argus/argus.conf or custom path)
- Protocol: SNMP v1 / v2c / v3 (natively integrated—no external plugin required)
- Devices: Didactum Monitoring System 100T / 300T / 500T / 550T
- Sensors: Temperature, Leakage, Humidity, Door Contact, Smoke
1. Prerequisites
Argus Server
- Linux (Ubuntu 20.04 / 22.04 LTS or Debian 11/12)
- Golang 1.18+ (for Argus 5.x – compiled as a Go binary)
- Packages: snmp, snmp-mibs-downloader
- Outbound UDP port 161 open for SNMP polling
- TCP port for web interface (default: 2055) open
- Network access to the Didactum device
Didactum Device
- Monitoring System 100T, 300T, 500T, or 550T
- SNMP enabled (v2c recommended)
- Network access to the Argus server
- MIB file available in the web interface
Architecture & Data Flow
[Argus Server] [Didactum Monitoring System]
IP: 192.168.1.10 IP: 192.168.1.50
Port 2055 (Web Interface)
/etc/argus/argus.conf
--SNMP UDP/161 Polling-->
<-- SNMP Response ------
Important Argus Directories & Files
/etc/argus/argus.conf <-- Main configuration (or custom path) /etc/argus/conf.d/ <-- Modular configuration files (optional) /var/argus/ <-- Data directory (logs, RRD data) /usr/local/bin/argus <-- Argus binary
Argus Configuration Principle
Argus uses a hierarchical configuration structure. Values are inherited from higher-level groups to included services. This makes the configuration very compact: one community string in a group applies automatically to all included SNMP services.
Order in the configuration file: 1. Global parameters (syslog, notify, webport, ...) 2. Notification methods 3. Groups and Services
2. Enable SNMP on the Didactum device
Step 1 – Open the web interface
Open in the browser: 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 the Didactum web interface | Value |
|---|---|
| Enable SNMP | Enabled |
| SNMP version | v2c (recommended) |
| Community string | didactum_argus (do not use "public"!) |
| SNMP port | 161 |
| Trap receiver IP (optional) | 192.168.1.10 (Argus server) |
| Trap port | 162 |
Save the settings. Argus does not support native SNMP traps (only active polling). For trap reception, an external snmptrapd + script must be used (see section 8).
3. Install Argus
Variant A – Compile from source code (Argus 5.x / Go)
# Install Go (if not already installed) sudo apt update sudo apt install -y golang git snmp snmp-mibs-downloader # Get Argus 5.x from GitHub git clone [https://github.com/jaw0/argus5.git](https://github.com/jaw0/argus5.git) cd argus5 # Compile go build -o argus ./cmd/argus/ # Install binary sudo cp argus /usr/local/bin/ sudo chmod +x /usr/local/bin/argus # Check version argus -v
Variant B – Older Argus version (Perl/C-based, before version 5)
# Download from [http://argus.tcp4me.com/download.html](http://argus.tcp4me.com/download.html) wget [http://argus.tcp4me.com/download/argus-latest.tar.gz](http://argus.tcp4me.com/download/argus-latest.tar.gz) tar xzf argus-latest.tar.gz cd argus-*/ ./configure make sudo make install
Create configuration directory
sudo mkdir -p /etc/argus sudo mkdir -p /var/argus sudo chown argus:argus /var/argus 2>/dev/null || true
Set up systemd service (for automatic start)
sudo nano /etc/systemd/system/argus.service
[Unit] Description=Argus Network Monitoring After=network.target [Service] Type=simple ExecStart=/usr/local/bin/argus -c /etc/argus/argus.conf Restart=always RestartSec=10 User=root [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable argus
4. Install MIB File and Test SNMP
Step 1 – Download the MIB from the Didactum web interface
System settings → SNMP → "Download MIB file" → didactum.mib
Step 2 – Install the MIB on the Argus server
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 3 – Test the SNMP connection (before Argus configuration)
# List all sensor OIDs
snmpwalk -v 2c -c didactum_argus 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1
# Query temperature value (raw value ÷ 10 = degrees Celsius)
snmpget -v 2c -c didactum_argus 192.168.1.50 \\
.1.3.6.1.4.1.46501.5.1.1.7.101001
# Query leakage status (0=dry, 1=water)
snmpget -v 2c -c didactum_argus 192.168.1.50 \\
.1.3.6.1.4.1.46501.5.1.1.7.107001
If values appear without an error message, SNMP is ready for Argus.
5. Basic Configuration (argus.conf)
Step 1 – Create configuration file
sudo nano /etc/argus/argus.conf
Step 2 – Enter global parameters
# ================================================================
# Argus Monitoring – Global configuration
# File: /etc/argus/argus.conf
# Documentation: [https://jaw0.github.io/argus5docs/docs/](https://jaw0.github.io/argus5docs/docs/)
# ================================================================
# Syslog facility for Argus messages
syslog: local1
# Web interface port (Argus own web UI)
# Accessible at: [http://192.168.1.10:2055/](http://192.168.1.10:2055/)
port: 2055
# Data directory
datadir: /var/argus
# Default polling interval (seconds)
frequency: 300
# Default retry attempts on error
retries: 3
# Default timeout (seconds)
timeout: 10
# ----------------------------------------------------------------
# Notifications
# ----------------------------------------------------------------
# Email notification on service failure
notify: mail:admin@ihredomain.de
# Optional second notification method
# notify: mail:monitoring-team@ihredomain.de
# ----------------------------------------------------------------
# Notification method definition
# ----------------------------------------------------------------
Notif "email-admin" {
send: mail
address: [admin@ihredomain.de](mailto:admin@ihredomain.de)
}
6. SNMP Services for Didactum Sensors
The entire Didactum configuration is defined as a group structure in the configuration file. Values such as hostname and community are inherited from the parent group by all contained services.
Complete Didactum configuration
Append the following block to the end of argus.conf (after the global parameters):
# ================================================================
# Didactum Monitoring System – Argus configuration
# ================================================================
Group "Didactum" {
# ============================================================
# Didactum Monitor 01
# IP and community are inherited by all contained services
# ============================================================
Group "Monitor-01" {
hostname: 192.168.1.50
community: didactum_argus
# Basic check: Is the device reachable?
Service Ping {
info: Didactum Monitoring System 01
frequency: 60
}
# --------------------------------------------------------
# Temperature sensor 01 (digital, sensor ID 101001)
# Raw value ÷ 10 = degrees Celsius
# Warning at 28.0 °C (OID value 280)
# Critical at 35.0 °C (OID value 350)
# --------------------------------------------------------
Service UDP/SNMPv2c {
label: Temperatur-Sensor-01
info: Room temperature server room (raw value x0.1 = degrees C)
oid: .1.3.6.1.4.1.46501.5.1.1.7.101001
maxvalue: 280
frequency: 300
}
# Temperature sensor status (0=OK, 1=alarm, 2=no signal)
Service UDP/SNMPv2c {
label: Temp-Status-Sensor-01
info: Status temperature sensor 01 (0=OK 1=alarm 2=error)
oid: .1.3.6.1.4.1.46501.5.1.1.6.101001
maxvalue: 0
frequency: 300
}
# --------------------------------------------------------
# Leakage sensor 01 (sensor ID 107001)
# 0 = dry = OK
# 1 = water detected = DOWN (maxvalue: 0 → alarm when value > 0)
# --------------------------------------------------------
Service UDP/SNMPv2c {
label: Leakage-Sensor-01
info: Water sensor 01 – 0=dry 1=water detected
oid: .1.3.6.1.4.1.46501.5.1.1.7.107001
maxvalue: 0
frequency: 120
retries: 1
}
# --------------------------------------------------------
# Humidity sensor 01 (sensor ID 102001)
# Value directly in % (no divisor)
# Warning at 80 %, critical at 90 %
# --------------------------------------------------------
Service UDP/SNMPv2c {
label: Humidity-Sensor-01
info: Humidity server room (directly in %)
oid: .1.3.6.1.4.1.46501.5.1.1.7.102001
maxvalue: 80
frequency: 300
}
# --------------------------------------------------------
# Door contact 01 (sensor ID 104001)
# 0 = closed = OK
# 1 = open = warning
# --------------------------------------------------------
Service UDP/SNMPv2c {
label: Door-Contact-01
info: Door contact 01 – 0=closed 1=open
oid: .1.3.6.1.4.1.46501.5.1.1.7.104001
maxvalue: 0
frequency: 60
}
# --------------------------------------------------------
# Smoke detector 01 (sensor ID 106001)
# 0 = no smoke = OK
# 1 = alarm = DOWN
# --------------------------------------------------------
Service UDP/SNMPv2c {
label: Smoke-Detector-01
info: Smoke detector 01 – 0=OK 1=alarm
oid: .1.3.6.1.4.1.46501.5.1.1.7.106001
maxvalue: 0
frequency: 60
retries: 1
}
# --------------------------------------------------------
# Analog temperature sensor (newer Didactum models)
# Enterprise OID: .1.3.6.1.4.1.39052
# --------------------------------------------------------
# Service UDP/SNMPv2c {
# label: Temp-Analog-Sensor-01
# info: Analog temperature sensor (raw value x0.1 = degrees C)
# oid: .1.3.6.1.4.1.39052.5.2.1.7.201001
# maxvalue: 280
# }
# --------------------------------------------------------
# Dry contact (sensor ID 101003)
# 0 = open, 1 = closed
# --------------------------------------------------------
# Service UDP/SNMPv2c {
# label: Contact-01
# info: Dry contact 01
# oid: .1.3.6.1.4.1.39052.5.1.1.7.101003
# maxvalue: 0
# }
}
# End Group "Monitor-01"
# ============================================================
# Didactum Monitor 02 (second device – commented out)
# ============================================================
# Group "Monitor-02" {
# hostname: 192.168.1.51
# community: didactum_argus
#
# Service Ping
#
# Service UDP/SNMPv2c {
# label: Temperatur-Sensor-01
# oid: .1.3.6.1.4.1.46501.5.1.1.7.101001
# maxvalue: 280
# }
# Service UDP/SNMPv2c {
# label: Leakage-Sensor-01
# oid: .1.3.6.1.4.1.46501.5.1.1.7.107001
# maxvalue: 0
# }
# }
}
# End Group "Didactum"
Explanation of the most important parameters
| Parameter | Meaning | Example |
|---|---|---|
| hostname | IP address or DNS name of the device; inherited by all services in the group | 192.168.1.50 |
| community | SNMP community string; inherited by all SNMP services | didactum_argus |
| oid | The SNMP OID to query (numeric, leading dot optional) | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
| maxvalue | Maximum permitted value; if exceeded, the service is considered DOWN | 280 (= 28.0 °C raw value) |
| minvalue | Minimum permitted value; if undercut, the service is considered DOWN | 50 |
| eqvalue | Exact value; service is UP only if the OID exactly matches this value | 0 |
| nevalue | Service is DOWN if the OID exactly matches this value (not-equal) | 1 |
| label | Display name in the web interface | Temperatur-Sensor-01 |
| info | Description text in the web interface | Room temperature server room |
| frequency | Polling interval in seconds | 300 (= 5 minutes) |
| retries | Retry attempts on error before alarm | 3 |
| timeout | Timeout in seconds | 10 |
Temperature thresholds – important note
The Didactum device transmits temperature values as raw value × 10. 25.5 °C corresponds to the OID value 255. Argus compares the raw value directly, so all thresholds must also be specified as × 10:
| Desired temperature threshold | Argus maxvalue / minvalue input |
|---|---|
| Warning at 25.0 °C | maxvalue: 250 |
| Warning at 28.0 °C | maxvalue: 280 |
| Critical at 35.0 °C | maxvalue: 350 |
| Warning below 5.0 °C | minvalue: 50 |
| Critical below 2.0 °C | minvalue: 20 |
Extended configuration: two-stage temperature monitoring
Argus does not support separate warning/critical states natively. For two-stage monitoring, two separate services can be defined:
# Warning: temperature above 28°C
Service UDP/SNMPv2c {
label: Temp-Warning-28C
info: Warning: temperature above 28.0 °C
oid: .1.3.6.1.4.1.46501.5.1.1.7.101001
maxvalue: 280
frequency: 300
}
# Critical: temperature above 35°C (lower frequency, immediate alarm)
Service UDP/SNMPv2c {
label: Temp-Critical-35C
info: CRITICAL: temperature above 35.0 °C!
oid: .1.3.6.1.4.1.46501.5.1.1.7.101001
maxvalue: 350
frequency: 60
retries: 1
}
7. SNMPv3 Configuration (Optional)
Argus natively supports SNMPv3 via the UDP/SNMPv3 service type. All SNMPv3 parameters are also inherited from groups to services.
Group "Didactum-v3" {
hostname: 192.168.1.50
# SNMPv3 credentials (inherited by all contained services)
snmpuser: isyvmon_user
snmppass: YourAuthPassword
snmpauth: SHA
snmpprivpass: YourPrivPassword
snmppriv: AES
Service Ping
Service UDP/SNMPv3 {
label: Temperatur-Sensor-01-v3
info: Temperature sensor with SNMPv3 encryption
oid: .1.3.6.1.4.1.46501.5.1.1.7.101001
maxvalue: 280
frequency: 300
}
Service UDP/SNMPv3 {
label: Leckage-Sensor-01-v3
info: Leakage sensor with SNMPv3 encryption
oid: .1.3.6.1.4.1.46501.5.1.1.7.107001
maxvalue: 0
frequency: 120
}
}
8. Configure Notifications
Argus sends notifications when a service is detected as DOWN. Notifications can be defined globally or per group or service.
Global notification (applies to all services)
# Enter at the beginning of argus.conf: notify: mail:admin@ihredomain.de
Notification only for Didactum group
Group "Didactum" {
hostname: 192.168.1.50
community: didactum_argus
# Only for this group and its services
notify: mail:datacenter-team@ihredomain.de
Service UDP/SNMPv2c {
label: Leak-Sensor-01
oid: .1.3.6.1.4.1.46501.5.1.1.7.107001
maxvalue: 0
# This service overrides the group notification:
notify: mail:emergency@ihredomain.de
}
}
Define notification methods
# In argus.conf – after the global parameters, before the groups:
# Email via local mail server
Notif "email-admin" {
send: mail
address: [admin@ihredomain.de](mailto:admin@ihredomain.de)
}
# Multiple recipients
Notif "email-team" {
send: mail
address: [admin@ihredomain.de](mailto:admin@ihredomain.de)
address: [monitoring@ihredomain.de](mailto:monitoring@ihredomain.de)
}
# Call external script (e.g. for SMS or Slack)
Notif "alarm-script" {
send: exec
exec: /etc/argus/scripts/didactum-alarm.sh
}
Alarm script for extended notifications
sudo mkdir -p /etc/argus/scripts sudo nano /etc/argus/scripts/didactum-alarm.sh
#!/bin/bash # ================================================================ # Didactum alarm script for Argus # Argus passes: $1 = service name, $2 = status, $3 = info # ================================================================ SERVICE="$1" STATUS="$2" INFO="$3" RECIPIENT="admin@ihredomain.de" SUBJECT="[Didactum ALERT] $SERVICE is $STATUS" MESSAGE="Timestamp: $(date '+%Y-%m-%d %H:%M:%S') Service: $SERVICE Status: $STATUS Info: $INFO Server: Didactum Monitor (192.168.1.50)" echo "$MESSAGE" | mail -s "$SUBJECT" "$RECIPIENT"
sudo chmod +x /etc/argus/scripts/didactum-alarm.sh
Install Postfix for mail delivery
sudo apt install postfix mailutils -y # Configuration type: "Internet Site" or "Satellite system" # Test: echo "Test Argus Monitoring" | mail -s "Test" [admin@ihredomain.de](mailto:admin@ihredomain.de)
9. Set up the Web Interface
Argus comes with its own built-in web interface. It shows the status of all configured services in real time. No Apache, Nginx, or other web server is required.
Step 1 – Set web port in argus.conf
# In argus.conf (global parameters): port: 2055
Step 2 – Start Argus
sudo argus -c /etc/argus/argus.conf # or as a systemd service: sudo systemctl start argus
Step 3 – Open the web interface
192.168.1.10
The web interface shows all configured groups and services. Green entries = OK, red entries = DOWN.
Step 4 – Open firewall for web port
sudo ufw allow 2055/tcp sudo ufw allow 161/udp # SNMP outbound (if UFW is used)
Secure the web interface (optional)
# Access control in argus.conf: # Only certain IP addresses may access the web interface allow: 192.168.1.0/24 deny: all
10. 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 | Measured value (current) | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
Sensor types with OIDs and Argus parameters
| Sensor type | Sensor ID | OID measured value | Argus maxvalue | Note |
|---|---|---|---|---|
| Temperature sensor (digital) | 101001 | .1.3.6.1.4.1.46501.5.1.1.7.101001 | 280 (= 28 °C) | Raw value ÷ 10 = °C; threshold × 10 |
| Temperature sensor (analog) | 201001 | .1.3.6.1.4.1.39052.5.2.1.7.201001 | 280 | Raw value ÷ 10 = °C |
| Temp status | 101001 | .1.3.6.1.4.1.46501.5.1.1.6.101001 | maxvalue: 0 | 0=OK, 1=alarm, 2=no signal |
| Water sensor / leakage | 107001 | .1.3.6.1.4.1.46501.5.1.1.7.107001 | maxvalue: 0 | 0=dry=OK, 1=water=DOWN |
| Humidity | 102001 | .1.3.6.1.4.1.46501.5.1.1.7.102001 | maxvalue: 80 | Direct value in % (no divisor) |
| Dry contact | 101003 | .1.3.6.1.4.1.39052.5.1.1.7.101003 | maxvalue: 0 | 0=open, 1=closed |
| Door contact | 104001 | .1.3.6.1.4.1.46501.5.1.1.7.104001 | maxvalue: 0 | 0=closed=OK, 1=open=DOWN |
| Smoke detector | 106001 | .1.3.6.1.4.1.46501.5.1.1.7.106001 | maxvalue: 0 | 0=no smoke=OK, 1=alarm=DOWN |
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.
MIB prefix per model:
Older devices use .1.3.6.1.4.1.46501, newer models may use .1.3.6.1.4.1.39052. Refer to your device’s MIB file for the exact OIDs.
eqvalue as an alternative:
Instead of maxvalue: 0, eqvalue: 0 can also be used for binary sensors (leakage, smoke) – the service is then UP only if the value is exactly 0.
11. Testing and Debugging
Test Argus configuration (without start)
# Check configuration for syntax errors argus -c /etc/argus/argus.conf -t # Start Argus in the foreground with debug output argus -c /etc/argus/argus.conf -d # End with Ctrl+C
Start Argus service and check status
sudo systemctl start argus sudo systemctl status argus # View logs sudo journalctl -u argus -f --since "10 minutes ago" # Syslog (if syslog: local1 is set) sudo tail -f /var/log/syslog | grep argus
Test SNMP directly
# Simple connection test
snmpget -v 2c -c didactum_argus 192.168.1.50 sysDescr.0
# Query temperature value
snmpget -v 2c -c didactum_argus 192.168.1.50 \\
.1.3.6.1.4.1.46501.5.1.1.7.101001
# List all sensors
snmpwalk -v 2c -c didactum_argus 192.168.1.50 \\
.1.3.6.1.4.1.46501.5.1.1
# Test SNMPv3
snmpget -v 3 -l authPriv -u isyvmon_user \\
-a SHA -A "IhrAuthPasswort" \\
-x AES -X "IhrPrivPasswort" \\
192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
Check web interface
# Open in browser: [http://192.168.1.10:2055/](http://192.168.1.10:2055/) # Or test with curl: curl -s [http://192.168.1.10:2055/](http://192.168.1.10:2055/) | head -20
Error Messages and Solutions
| Problem | Cause & solution |
|---|---|
| Argus does not start | Syntax error in argus.conf → run argus -c argus.conf -t; read the error message |
| Service remains permanently DOWN | SNMP not reachable; community string incorrect; OID incorrect → test with snmpget |
| SNMP: No response | Firewall blocks UDP 161; SNMP not enabled on the Didactum device; wrong IP |
| Temperature service always DOWN | maxvalue too low or raw value × 10 not taken into account → check raw value with snmpget, adjust maxvalue |
| Configuration is not applied after changes | Argus reloads the configuration automatically; wait briefly (up to 60 seconds) or restart the service |
| No email on alarm | Postfix is not running; notify line missing in argus.conf; wrong recipient |
| Web interface not reachable | Wrong port; firewall blocks TCP 2055; Argus service not started |
| SNMPv3: authentication error | snmpauth or snmppriv algorithm not supported → check SHA/AES; passwords at least 8 characters |
Reload configuration after changes
# Argus detects file changes automatically. # If immediate application is desired: sudo systemctl reload argus # or: sudo kill -HUP $(pgrep argus)
Completion Checklist
Didactum device
- SNMP enabled (v2c or v3)
- Community string set (not "public"): didactum_argus
- SNMP port 161 accessible
- MIB file downloaded
- snmpwalk test from the Argus server successful
Argus server
- Argus 5.x installed and binary available under /usr/local/bin/argus
- Packages snmp, snmp-mibs-downloader installed
- MIB file saved under /usr/share/snmp/mibs/
- Outbound UDP port 161 open
- TCP port 2055 open for the web interface
- Postfix / mail delivery working (test email received)
Argus configuration
- /etc/argus/argus.conf created
- Global parameters: syslog, port, notify, frequency set
- Group "Didactum" → Group "Monitor-01" with hostname and community
- Ping service for reachability check
- UDP/SNMPv2c service for temperature sensor (maxvalue × 10)
- UDP/SNMPv2c service for leakage sensor (maxvalue: 0)
- UDP/SNMPv2c service for humidity
- UDP/SNMPv2c service for door contact
- UDP/SNMPv2c service for smoke detector
- Configuration validated with argus -t (no errors)
Tests & operation
- Argus service running: systemctl status argus
- Web interface reachable: http://192.168.1.10:2055/
- All Didactum services appear green in the web interface
- Temperature threshold correct (raw value × 10 taken into account)
- Test alarm triggered and email received
- Systemd autostart enabled: systemctl enable argus