Didactum Monitoring Devices and Sensors – Integration into Andrisoft Wanguard
This guide describes the integration of Didactum monitoring devices into Andrisoft Wanguard (Version 8.x). It outlines the realistic capabilities and limitations of this combination, the recommended integration architecture, and the specific configuration steps for SNMP-based monitoring, SNMP trap processing, and supplementary alerting.
Important Note Regarding the Platform:
Andrisoft Wanguard is primarily a network DDoS detection and bandwidth monitoring solution. Its integrated SNMP sensor is optimized for monitoring the bandwidth of network devices (routers, switches) - not for environmental sensors such as temperature or leak detectors. Comprehensive monitoring of Didactum sensors therefore requires a hybrid architecture, which is described in this guide.
1. Fundamentals: Wanguard and Didactum – Architecture and Capabilities
1.1 What Wanguard can do – and what it cannot
Andrisoft Wanguard is an enterprise software for monitoring and protecting WAN networks against DDoS attacks. The integrated SNMP sensor monitors network devices – primarily their interface utilization (bandwidth, traffic counters). Environmental sensors such as temperature or leakage are not a primary use case of Wanguard.
| Function | Wanguard SNMP Sensor | Suitable for Didactum? |
|---|---|---|
| Bandwidth monitoring (ifInOctets, ifOutOctets) | Yes, primary purpose | No (Didactum has no network interfaces) |
| Register device as SNMP node | Yes | Yes – for device availability (Ping/SNMP) |
| Custom OID query | Limited (via scripts) | Yes – for temperature, leakage, etc. |
| SNMP trap reception | Yes (via snmptrapd + script) | Yes – for proactive Didactum alerts |
| Threshold alerting for environmental sensors | Only via external scripts | Conditional – with custom response scripts |
| Graphical trend display for sensor values | No (native) | No – external tool required |
| DDoS detection at network level | Yes, core function | Not relevant for Didactum |
1.2 Recommended integration architecture
Since Wanguard is not primarily designed for environmental sensor monitoring, a hybrid architecture is recommended:
- Wanguard: Network monitoring, DDoS protection, bandwidth monitoring – Didactum device as SNMP node for availability monitoring and trap reception
- Additional tool (Nagios, Icinga 2, Checkmk, NetXMS or similar): Full sensor monitoring with thresholds, trend graphs and alerting for temperature, leakage, humidity, etc.
- SNMP traps: Didactum sends traps to both systems – Wanguard reacts to network-related events, the monitoring tool to environmental events
1.3 Wanguard components
| Component | Function |
|---|---|
| Wanguard Console | Web-based management interface, central configuration and reports |
| Wanguard Sensor (SNMP) | Querying SNMP devices, primarily bandwidth monitoring |
| Wanguard Sensor (Flow/Packet) | NetFlow/sFlow analysis, packet capture – not relevant for Didactum |
| Wanguard Filter | DDoS mitigation – not relevant for Didactum |
| Response Scripts | Custom scripts upon anomaly detection – usable for Didactum integration |
| REST API | Full programmatic control – usable for custom integration |
2. Prerequisites
- Andrisoft Wanguard 8.x (Wanguard or Wansight license)
- Linux server with Wanguard Console and Sensor (Ubuntu 20.04/22.04 or RHEL/CentOS 8+ recommended)
- SNMP tools (snmpwalk, snmpget, snmptrapd) on the Wanguard server
- Didactum monitoring device reachable on the network, SNMP enabled
- UDP port 161 open from the Wanguard server to the Didactum device
- UDP port 162 open on the Wanguard server for SNMP traps
- SNMP community string known (default: public)
- For full sensor monitoring: Nagios, Icinga 2, Checkmk or NetXMS as an additional tool
Example network configuration
| Device | IP address | Role |
|---|---|---|
| Wanguard server | 192.168.1.95 | Network monitoring, DDoS protection, SNMP trap reception |
| Didactum Monitoring Unit | 192.168.1.100 | Monitored device (SNMP agent) |
3. SNMP Preparation on the Didactum Device
3.1 Enable SNMP
- Open the Didactum web interface: 192.168.1.100, log in with the admin account.
- Navigation: Settings → Network → SNMP (or: Settings → Network → SNMP).
- Set the following parameters:
- SNMP enabled: Yes
- SNMP version: v2c
- Community string: public (change in production)
- SNMP port: 161
- Allowed Managers: enter the IP of the Wanguard server (192.168.1.95)
- SNMP Trap Receiver: IP of the Wanguard server, port 162
- Save the settings.
3.2 Test reachability from the Wanguard server
# SNMP Walk – all Didactum OIDs: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 # Temperature sensor 1: snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # System description: snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.1.0
Note:
Didactum returns temperature and voltage values with a factor of 10 (235 = 23.5°C). Divide accordingly in your own scripts.
4. Prepare Vanguard
4.1 Open Wanguard Console
# Check Wanguard services: sudo systemctl status wanguard-console sudo systemctl status wanguard-sensor # Open the web interface: # [https://192.168.1.95](https://192.168.1.95) (default port 443 or configured port)
4.2 Install SNMP tools
# Debian / Ubuntu: sudo apt update sudo apt install snmp snmpd snmp-mibs-downloader snmptrapd -y # RHEL / CentOS / Rocky Linux: sudo dnf install net-snmp net-snmp-utils -y
4.3 Integrate Didactum MIB file
# Copy MIB file to the system MIB directory: sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/share/snmp/mibs/ # Enable in /etc/snmp/snmp.conf: echo "mibs +DIDACTUM-RACKMONI2-MIB" | sudo tee -a /etc/snmp/snmp.conf # Test with MIB name: snmpget -v2c -c public -m +DIDACTUM-RACKMONI2-MIB \ 192.168.1.100 tempValue.1
4.4 Check Wanguard server configuration
- Open Wanguard Console.
- Navigation: Configuration → Servers.
- Check server status – all components should show Online.
- Navigation: Configuration → IP Zones – check an existing IP zone or create a new one that includes the network segment of the Didactum device.
5. Configuring Didactum as an SNMP Sensor
The Wanguard SNMP sensor is primarily designed for bandwidth monitoring. For the Didactum device, we use it for availability monitoring and as an anchor point for custom scripts.
5.1 Create SNMP sensor
- Wanguard Console: Navigation: Configuration → Components → [+] Add.
- Select type: SNMP Sensor.
- Fill in the following fields:
- Sensor Name: Didactum-Rack01
- Device Group: Rack-Monitoring (organization label)
- Sensor Server: select Wanguard server
- Device IP:Port: 192.168.1.100:161
- SNMP Protocol: SNMP version 2c
- Community String: public
- Polling Interval: 60 seconds
- Timeout (ms): 2000
- Retries: 3
- Under Interface Discovery: select Off (Didactum has no relevant network interfaces).
- Under Sensor License: Wanguard or Wansight depending on the available license.
- Save.
5.2 Use SNMP tester
Wanguard includes an integrated SNMP tester. Using the button next to the Device IP:Port field, an SNMP walk of the Didactum device can be started directly from the console. This is used to verify reachability and to determine available OIDs.
5.3 For SNMP v3
- SNMP Protocol: select SNMP version 3.
- Additional fields:
- Security Level: authPriv (recommended)
- Security Name: SNMP v3 username from the Didactum device
- Authentication Protocol: SHA
- Authentication Passphrase: authentication password
- Privacy Protocol: AES
- Privacy Passphrase: encryption password
5.4 Check sensor in event log
- Navigation: Events → Event Log.
- Filter: sensor name Didactum-Rack01.
- Entry SNMP Sensor started confirms successful configuration.
- Error messages such as SNMP timeout or No such object indicate configuration problems.
6. Custom SNMP Queries via Script
Since the native Wanguard SNMP sensor cannot directly evaluate environmental sensor OIDs, the Didactum sensor values are queried via custom shell scripts. These scripts run as cron jobs on the Wanguard server and can generate Wanguard events or send their own notifications when threshold values are exceeded.
6.1 Create main monitoring script
sudo nano /opt/wanguard-didactum/didactum_monitor.sh
#!/bin/bash
# =============================================================================
# Didactum Sensor Monitor for Wanguard
# Query temperature, leakage, humidity, voltage via SNMP
# Generates email alerts and Wanguard events when thresholds are exceeded
# =============================================================================
# Configuration
DIDACTUM_IP="192.168.1.100"
SNMP_COMMUNITY="public"
SNMP_VERSION="2c"
LOG_FILE="/var/log/wanguard/didactum_monitor.log"
ALERT_EMAIL="admin@example.com"
WANGUARD_API_URL="https://192.168.1.95/wanguard-api/v3"
WANGUARD_API_KEY="YOUR-API-KEY"
# Thresholds
TEMP_WARN=30 # Warning at 30 °C (raw value: 300)
TEMP_CRIT=35 # Critical at 35 °C (raw value: 350)
HUM_WARN_HIGH=70 # Warning humidity high
HUM_WARN_LOW=20 # Warning humidity low
VOLT_WARN_LOW=207 # Warning voltage low (V, after division by 10)
VOLT_WARN_HIGH=253 # Warning voltage high
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Helper function: query SNMP OID
snmp_get() {
local oid="$1"
snmpget -v${SNMP_VERSION} -c ${SNMP_COMMUNITY} \
-Oqv ${DIDACTUM_IP} ${oid} 2>/dev/null
}
# Helper function: send alert
send_alert() {
local severity="$1"
local message="$2"
echo "${TIMESTAMP} [${severity}] ${message}" >> "${LOG_FILE}"
echo -e "Subject: [Wanguard/Didactum] ${severity}: ${message}\n\n${message}\n\nTime: ${TIMESTAMP}\nDevice: ${DIDACTUM_IP}" \
| sendmail "${ALERT_EMAIL}" 2>/dev/null
}
# ── TEMPERATURE SENSOR 1 ───────────────────────────────────────────────────────
TEMP_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1")
if [ -n "${TEMP_RAW}" ] && [ "${TEMP_RAW}" -eq "${TEMP_RAW}" ] 2>/dev/null; then
TEMP=$(echo "scale=1; ${TEMP_RAW} / 10" | bc)
echo "${TIMESTAMP} Temperature S1: ${TEMP} °C (raw value: ${TEMP_RAW})" >> "${LOG_FILE}"
if [ "${TEMP_RAW}" -ge $((TEMP_CRIT * 10)) ]; then
send_alert "CRITICAL" "Temperature Sensor 1 CRITICAL: ${TEMP} °C (threshold: ${TEMP_CRIT} °C) on ${DIDACTUM_IP}"
elif [ "${TEMP_RAW}" -ge $((TEMP_WARN * 10)) ]; then
send_alert "WARNING" "Temperature Sensor 1 WARNING: ${TEMP} °C (threshold: ${TEMP_WARN} °C) on ${DIDACTUM_IP}"
fi
fi
# ── LEAKAGE SENSOR 1 ──────────────────────────────────────────────────────────
LEAK=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1")
if [ "${LEAK}" = "1" ]; then
send_alert "CRITICAL" "LEAKAGE DETECTED on ${DIDACTUM_IP} – Sensor 1! Immediate action required!"
fi
# ── LEAKAGE SENSOR 2 ──────────────────────────────────────────────────────────
LEAK2=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2")
if [ "${LEAK2}" = "1" ]; then
send_alert "CRITICAL" "LEAKAGE DETECTED on ${DIDACTUM_IP} – Sensor 2! Immediate action required!"
fi
# ── HUMIDITY SENSOR 1 ─────────────────────────────────────────────────────────
HUM=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1")
if [ -n "${HUM}" ] && [ "${HUM}" -eq "${HUM}" ] 2>/dev/null; then
echo "${TIMESTAMP} Humidity S1: ${HUM} % rH" >> "${LOG_FILE}"
if [ "${HUM}" -gt "${HUM_WARN_HIGH}" ] || [ "${HUM}" -lt "${HUM_WARN_LOW}" ]; then
send_alert "WARNING" "Humidity outside threshold on ${DIDACTUM_IP}: ${HUM} % rH (OK: ${HUM_WARN_LOW}–${HUM_WARN_HIGH} %)"
fi
fi
# ── VOLTAGE SENSOR 1 ──────────────────────────────────────────────────────────
VOLT_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1")
if [ -n "${VOLT_RAW}" ] && [ "${VOLT_RAW}" -eq "${VOLT_RAW}" ] 2>/dev/null; then
VOLT=$(echo "scale=1; ${VOLT_RAW} / 10" | bc)
VOLT_INT=$(echo "${VOLT_RAW} / 10" | bc)
if [ "${VOLT_INT}" -lt "${VOLT_WARN_LOW}" ] || [ "${VOLT_INT}" -gt "${VOLT_WARN_HIGH}" ]; then
send_alert "WARNING" "Voltage outside threshold on ${DIDACTUM_IP}: ${VOLT} V (OK: ${VOLT_WARN_LOW}–${VOLT_WARN_HIGH} V)"
fi
fi
# ── DOOR CONTACT SENSOR 1 ─────────────────────────────────────────────────────
DOOR=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1")
if [ "${DOOR}" = "1" ]; then
send_alert "WARNING" "Door contact open on ${DIDACTUM_IP} – rack front door"
fi
# ── SMOKE DETECTOR SENSOR 1 ───────────────────────────────────────────────────
SMOKE=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1")
if [ "${SMOKE}" = "1" ]; then
send_alert "CRITICAL" "SMOKE DETECTOR triggered on ${DIDACTUM_IP}!"
fi
exit 0sudo chmod +x /opt/wanguard-didactum/didactum_monitor.sh sudo mkdir -p /opt/wanguard-didactum sudo mkdir -p /var/log/wanguard
6.2 Set up cron job for regular polling
sudo crontab -e
# Didactum sensor monitoring every 5 minutes: */5 * * * * /opt/wanguard-didactum/didactum_monitor.sh # Leakage and safety sensors every minute: * * * * * /opt/wanguard-didactum/didactum_leakcheck.sh
6.3 Separate leakage quick script (every minute)
sudo nano /opt/wanguard-didactum/didactum_leakcheck.sh
#!/bin/bash
# Quick query for time-critical sensors (leakage, smoke, door)
DIDACTUM_IP="192.168.1.100"
SNMP_COMMUNITY="public"
ALERT_EMAIL="admin@example.com"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
snmp_get() { snmpget -v2c -c ${SNMP_COMMUNITY} -Oqv ${DIDACTUM_IP} "$1" 2>/dev/null; }
# Leakage S1 and S2
for sensor in 1 2; do
OID=".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.${sensor}"
VAL=$(snmp_get "${OID}")
if [ "${VAL}" = "1" ]; then
echo -e "Subject: [CRITICAL] LEAKAGE Sensor ${sensor} on ${DIDACTUM_IP}\n\nLeakage detected – Sensor ${sensor} – Immediate action required!\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
done
# Smoke detector
SMOKE=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1")
if [ "${SMOKE}" = "1" ]; then
echo -e "Subject: [CRITICAL] SMOKE DETECTOR on ${DIDACTUM_IP}\n\nSmoke detector triggered!\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fisudo chmod +x /opt/wanguard-didactum/didactum_leakcheck.sh
6.4 Use Wanguard REST API for event creation
Wanguard offers a REST API through which external events can be injected into the console:
# Create Wanguard event via REST API (example: leakage alarm):
curl -s -X POST \
"https://192.168.1.95/wanguard-api/v3/events" \
-H "Authorization: Bearer YOUR-API-KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "Custom",
"severity": "critical",
"description": "Didactum leakage detected on 192.168.1.100 – Sensor 1",
"component": "Didactum-Rack01",
"timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
}'Integrate this API call into the monitoring script so that Didactum alarms are also visible in the Wanguard console.
7. OID Reference for Wanguard / Didactum
All OIDs are based on the Didactum Enterprise OID base 1.3.6.1.4.1.3854. The placeholder {n} stands for the sensor index (1 = first sensor, etc.).
7.1 Temperature sensors
| OID | Description | Raw value | Script formula | Threshold (raw value) |
|---|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n} | Temperature value sensor n | °C × 10 | $RAW / 10 | 300 = 30 °C, 350 = 35 °C |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n} | Temperature status sensor n | Enum 0/1/2 | – | ≥ 1 = problem |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n} | Upper threshold sensor n | °C × 10 | $RAW / 10 | Informational |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n} | Lower threshold sensor n | °C × 10 | $RAW / 10 | Informational |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n} | Sensor name n | Text | – | – |
7.2 Leakage sensors
| OID | Description | Raw value | Alarm condition |
|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n} | Leakage status sensor n | 0=OK, 1=leakage | = 1 → CRITICAL |
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.3.{n} | Leakage value sensor n | 0=dry | ≥ 1 → CRITICAL |
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.2.{n} | Sensor name n | Text | – |
7.3 Humidity and other sensors
| OID | Description | Raw value | Alarm condition |
|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n} | Humidity value sensor n | % rH | > 70 or < 20 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n} | Humidity status n | Enum 0/1/2 | ≥ 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n} | Voltage value sensor n | V × 10 | < 2070 or > 2530 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n} | Door contact status n | 0=closed, 1=open | = 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n} | Shock / motion n | 0=none, 1=alarm | = 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n} | Smoke detector status n | 0=OK, 1=alarm | = 1 → CRITICAL |
| 1.3.6.1.2.1.1.3.0 | System uptime | Hundredths of seconds | – |
| 1.3.6.1.2.1.1.1.0 | Device description (sysDescr) | Text | – |
8. Configure Events and Alert Scripts
8.1 Wanguard response scripts for Didactum alarms
Wanguard supports custom response scripts that are executed when anomalies are detected. These can be used to trigger SNMP checks of the Didactum device at the same time as network-relevant events:
- Navigation: Configuration → Response Scripts → Add.
- Settings:
- Script Name: Didactum-Status-Check
- Description: Checks Didactum sensors on network event
- Execution: Run on anomaly detection
- Script content: call the monitoring script /opt/wanguard-didactum/didactum_monitor.sh.
- Save and assign it to the desired sensor or IP zone.
8.2 Configure email notification in Wanguard
- Navigation: Configuration → Notifications → Email.
- Enter SMTP server: host, port, sender, authentication.
- Send test email.
- Create notification rule for sensor events:
- Trigger: SNMP Sensor Offline (Didactum device not reachable)
- Recipient: [admin@example.com](mailto:admin@example.com)
8.3 Wanguard internal events for Didactum
| Wanguard event | Cause | Configuration location |
|---|---|---|
| SNMP Sensor started | Sensor started successfully | Event Log |
| SNMP Sensor stopped | Sensor stopped or error | Event Log, notification |
| SNMP Timeout | Didactum device not reachable | Configure notification |
| Custom Script executed | Response script was triggered | Event Log |
| SNMP Trap received | Trap received from Didactum device | Event Log (if trap handler is active) |
8.4 Recommended thresholds for scripts
| Sensor | Warning threshold | Critical threshold | Standard |
|---|---|---|---|
| Temperature (raw value × 10) | ≥ 300 (30 °C) | ≥ 350 (35 °C) | ASHRAE A1: 15–32 °C |
| Humidity (% rH) | > 70 or < 20 | > 80 or < 10 | ASHRAE: 20–80 % rH |
| Leakage (0/1) | – | = 1 | Immediate alarm |
| Voltage (raw value × 10) | < 2070 or > 2530 | < 1960 or > 2600 | EN 50160 ±10 % |
| Door contact / smoke | – | = 1 | Policy-dependent |
9. SNMP-Trap-Integration
Wanguard supports SNMP traps for its own anomaly notifications (Wanguard sends traps). To receive Didactum traps, snmptrapd is configured on the Wanguard server.
9.1 Configure snmptrapd on the Wanguard server
sudo nano /etc/snmp/snmptrapd.conf
# Accept Didactum traps: authCommunity log,execute,net public # Trap handler for all Didactum traps: traphandle .1.3.6.1.4.1.3854 /opt/wanguard-didactum/didactum_trap_handler.sh # Enable logging: doNotLogTraps no outputOption fq
# Enable snmptrapd: sudo systemctl enable snmptrapd sudo systemctl start snmptrapd # Open firewall port: sudo ufw allow 162/udp
9.2 Trap handler script
sudo nano /opt/wanguard-didactum/didactum_trap_handler.sh
#!/bin/bash
# Didactum SNMP Trap Handler
# Called by snmptrapd for incoming Didactum traps
ALERT_EMAIL="admin@example.com"
LOG_FILE="/var/log/wanguard/didactum_traps.log"
WANGUARD_API_URL="https://192.168.1.95/wanguard-api/v3"
WANGUARD_API_KEY="YOUR-API-KEY"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Read trap information:
SOURCE_IP="${1}"
TRAP_OID="${2:-unknown}"
echo "${TIMESTAMP} TRAP from ${SOURCE_IP}: OID=${TRAP_OID}" >> "${LOG_FILE}"
# Leakage trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.2"; then
MSG="LEAKAGE DETECTED via SNMP trap from ${SOURCE_IP}!"
echo -e "Subject: [CRITICAL] Didactum Leakage Alarm\n\n${MSG}\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
# Create Wanguard event:
curl -s -X POST "${WANGUARD_API_URL}/events" \
-H "Authorization: Bearer ${WANGUARD_API_KEY}" \
-H "Content-Type: application/json" \
-d "{\"type\":\"Custom\",\"severity\":\"critical\",\"description\":\"${MSG}\"}" \
>> "${LOG_FILE}" 2>&1
fi
# Temperature alarm trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.1"; then
MSG="Temperature alarm via SNMP trap from ${SOURCE_IP}!"
echo -e "Subject: [HIGH] Didactum Temperature Alarm\n\n${MSG}\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
# Door contact trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.10"; then
MSG="Door contact opened via SNMP trap from ${SOURCE_IP}!"
echo -e "Subject: [WARNING] Didactum Door Contact\n\n${MSG}\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
# Smoke detector trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.14"; then
MSG="SMOKE DETECTOR triggered via SNMP trap from ${SOURCE_IP}!"
echo -e "Subject: [CRITICAL] Didactum Smoke Detector\n\n${MSG}\nTime: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fisudo chmod +x /opt/wanguard-didactum/didactum_trap_handler.sh
9.3 Important Didactum trap OIDs
| Trap OID | Event | Recommended response |
|---|---|---|
| 1.3.6.1.4.1.3854.1.7.1 | Temperature alarm | Email + Wanguard event |
| 1.3.6.1.4.1.3854.1.7.2 | Leakage alarm | Email + SMS + Wanguard event |
| 1.3.6.1.4.1.3854.1.7.3 | Humidity alarm | Email + Wanguard event |
| 1.3.6.1.4.1.3854.1.7.4 | Voltage alarm | Email + Wanguard event |
| 1.3.6.1.4.1.3854.1.7.10 | Door contact opened | |
| 1.3.6.1.4.1.3854.1.7.14 | Smoke detector alarm | Email + SMS + Wanguard event |
| 1.3.6.1.4.1.3854.1.7.99 | Device restart | Logging |
9.4 Perform trap test
# Send test trap for leakage: snmptrap -v2c -c public 192.168.1.95 '' \ .1.3.6.1.4.1.3854.1.7.2 \ .1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1 # Check trap reception in log: sudo tail -f /var/log/wanguard/didactum_traps.log # snmptrapd log: sudo journalctl -u snmptrapd -f
10. Reports and Dashboards
10.1 Wanguard Console – available views for Didactum
Wanguard offers the following views in the console that can be used for the Didactum device:
- Reports → Devices → Overview: SNMP sensor status, device availability of the Didactum node
- Events → Event Log: All Wanguard events including custom events from the monitoring script
- Reports → Tools → SNMP Graphs: Bandwidth graphs (primarily for network devices, not relevant for environmental sensors)
10.2 Create a custom monitoring dashboard (HTML)
Since Wanguard does not provide native environmental sensor dashboards, a simple HTML dashboard can display the current sensor values:
sudo nano /opt/wanguard-didactum/dashboard.sh
#!/bin/bash
# Generates a simple HTML status page for Didactum sensors
DIDACTUM_IP="192.168.1.100"
COMMUNITY="public"
OUTPUT="/var/www/html/didactum-status.html"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
snmp_get() { snmpget -v2c -c ${COMMUNITY} -Oqv ${DIDACTUM_IP} "$1" 2>/dev/null; }
TEMP1_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1")
TEMP1=$(echo "scale=1; ${TEMP1_RAW:-0} / 10" | bc)
TEMP2_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.2")
TEMP2=$(echo "scale=1; ${TEMP2_RAW:-0} / 10" | bc)
HUM=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1")
LEAK1=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1")
LEAK2=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2")
DOOR=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1")
VOLT_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1")
VOLT=$(echo "scale=1; ${VOLT_RAW:-0} / 10" | bc)
color_status() {
[ "$1" = "0" ] && echo "green" || echo "red"
}
temp_color() {
[ "$1" -ge 350 ] 2>/dev/null && { echo "red"; return; }
[ "$1" -ge 300 ] 2>/dev/null && { echo "orange"; return; }
echo "green"
}
cat > "${OUTPUT}" <<HTML
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8">
<meta http-equiv="refresh" content="60">
<title>Didactum Status – Wanguard</title>
<style>
body { font-family: Arial, sans-serif; background: #1a1a2e; color: #eee; padding: 20px; }
h1 { color: #00d4ff; }
.card { background: #16213e; border-radius: 8px; padding: 16px; margin: 8px; display: inline-block; min-width: 180px; }
.ok { color: #00ff88; }
.warn { color: #ffaa00; }
.crit { color: #ff4444; }
.label { font-size: 12px; color: #888; }
.value { font-size: 28px; font-weight: bold; }
.ts { color: #888; font-size: 12px; margin-top: 20px; }
</style>
</head>
<body>
<h1>Didactum Rack Monitoring</h1>
<p class="label">${DIDACTUM_IP} | Letzte Aktualisierung: ${TIMESTAMP}</p>
<div class="card">
<div class="label">Temperatur Sensor 1</div>
<div class="value $([ ${TEMP1_RAW:-0} -ge 300 ] && echo warn || echo ok)">${TEMP1} °C</div>
</div>
<div class="card">
<div class="label">Temperatur Sensor 2</div>
<div class="value $([ ${TEMP2_RAW:-0} -ge 300 ] && echo warn || echo ok)">${TEMP2} °C</div>
</div>
<div class="card">
<div class="label">Luftfeuchtigkeit</div>
<div class="value ok">${HUM} % rF</div>
</div>
<div class="card">
<div class="label">Leckage Sensor 1</div>
<div class="value $([ "${LEAK1}" = "0" ] && echo ok || echo crit)">$([ "${LEAK1}" = "0" ] && echo OK || echo ALARM)</div>
</div>
<div class="card">
<div class="label">Leckage Sensor 2</div>
<div class="value $([ "${LEAK2}" = "0" ] && echo ok || echo crit)">$([ "${LEAK2}" = "0" ] && echo OK || echo ALARM)</div>
</div>
<div class="card">
<div class="label">Türkontakt</div>
<div class="value $([ "${DOOR}" = "0" ] && echo ok || echo warn)">$([ "${DOOR}" = "0" ] && echo Zu || echo OFFEN)</div>
</div>
<div class="card">
<div class="label">Spannung</div>
<div class="value ok">${VOLT} V</div>
</div>
</body></html>
HTML
echo "Dashboard aktualisiert: ${OUTPUT}"sudo chmod +x /opt/wanguard-didactum/dashboard.sh # Dashboard alle 5 Minuten aktualisieren: echo "*/5 * * * * /opt/wanguard-didactum/dashboard.sh" | sudo crontab -
The dashboard is then accessible at [http://192.168.1.95/didactum-status.html](http://192.168.1.95/didactum-status.html) and updates automatically every 60 seconds.
11. Recommended hybrid architecture with Nagios/Icinga
For complete, professional monitoring of the Didactum sensors, the following hybrid architecture is recommended, in which Wanguard and a specialized monitoring tool are operated in parallel:
11.1 Division of tasks
| Task | Wanguard | Nagios / Icinga / Checkmk |
|---|---|---|
| DDoS detection and mitigation | Yes (core function) | No |
| Network bandwidth (routers, switches) | Yes | Conditional |
| Didactum device availability (Ping/SNMP) | Yes | Yes |
| Temperature/humidity/leakage checks | Only via script | Yes (native) |
| Threshold alerting for environmental sensors | Only via script | Yes (native) |
| Trend graphs for sensor values | No | Yes |
| SNMP trap reception | Via snmptrapd | Via snmptrapd or native |
| Long-term data storage (90 days+) | No (environmental sensors) | Yes (RRD/InfluxDB) |
11.2 Send Didactum SNMP traps to both systems
The Didactum device can send traps to multiple receivers simultaneously. In the Didactum web interface under Settings → Network → SNMP → Trap Receiver, enter both IPs:
- Trap Receiver 1: 192.168.1.95 (Wanguard server, port 162)
- Trap Receiver 2: 192.168.1.50 (Nagios/Icinga server, port 162)
11.3 Trigger Wanguard alert on Didactum trap
In the trap handler script (section 9.2), a Wanguard custom event is generated via REST API. At the same time, the Nagios/Icinga system sends its own alert – thus both systems are informed.
11.4 References to complete monitoring guides
For the complete integration of Didactum sensors into a specialized monitoring tool, separate guides are available:
- Didactum integration into Nagios – with complete check_snmp definitions and SNMP trap reception
- Didactum integration into Icinga 2 – with DSL configuration, apply rules, and Graphite integration
- Didactum integration into Checkmk – with automatic service discovery and Python plugin
- Didactum integration into NetXMS – with DCI templates and dashboard visualization
12. Troubleshooting
| Problem | Possible cause / solution |
|---|---|
| SNMP sensor shows timeout in the event log | Firewall: Is UDP port 161 open? Community string correct? IP of the Didactum device correctly set in Device IP:Port? Test: snmpwalk -v2c -c public 192.168.1.100 from the Wanguard server. |
| Script does not generate emails | sendmail installed? (apt install sendmail). SMTP relay configured? Test script manually: bash /opt/wanguard-didactum/didactum_monitor.sh. Check log: cat /var/log/wanguard/didactum_monitor.log. |
| Cron job does not run | Crontab entry correct? (crontab -l). Cron service running? (systemctl status cron). Script executable? (ls -l /opt/wanguard-didactum/). Check cron log: journalctl -u cron. |
| Temperature raw value incorrect (235 instead of 23.5) | In the script: TEMP=$(echo "scale=1; ${TEMP_RAW} / 10" | bc). Is bc installed? (apt install bc). Thresholds defined in the script as raw values (× 10)? |
| SNMP traps are not received | Is UDP port 162 open? (ufw allow 162/udp). Is snmptrapd running? (systemctl status snmptrapd). Trap receiver IP correctly set in the Didactum device? Community string correct? |
| Wanguard REST API call fails | API key valid? (Configuration → Users → API Keys in Wanguard). SSL certificate of the Wanguard server trusted? (curl -k for testing). API URL correct? (https://... /wanguard-api/v3/). |
| Dashboard shows no values | Script executable? Web server (apache2 or nginx) running? Write permissions for /var/www/html/? Run script manually and check output. |
| Wanguard event log shows no custom events | API key and URL correct in the script? Wanguard server reachable? Check curl output in the log. Wanguard API documentation under Help → API in the console. |
Overview of Diagnostic Commands
# Check Wanguard services: sudo systemctl status wanguard-console sudo systemctl status wanguard-sensor # Wanguard log: sudo tail -f /var/log/wanguard/wanguard.log # Test SNMP connectivity: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 # Query a single OID: snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # Run monitoring script manually: bash /opt/wanguard-didactum/didactum_monitor.sh # Check Didactum monitor log: sudo tail -f /var/log/wanguard/didactum_monitor.log # Check trap log: sudo tail -f /var/log/wanguard/didactum_traps.log # snmptrapd log: sudo journalctl -u snmptrapd -f # Send test trap: snmptrap -v2c -c public 192.168.1.95 '' \\ .1.3.6.1.4.1.3854.1.7.2 \\ .1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1 # Check cron log: sudo journalctl -u cron | tail -20 # Test Wanguard REST API: curl -s -k \\ -H "Authorization: Bearer YOUR-API-KEY" \\ "https://192.168.1.95/wanguard-api/v3/events" | python3 -m json.tool # Firewall status: sudo ufw status verbose
Appendix: File and Script Overview
| File / path | Purpose | Execution |
|---|---|---|
| /opt/wanguard-didactum/didactum_monitor.sh | Main monitoring: temperature, humidity, voltage, door | Cron: every 5 minutes |
| /opt/wanguard-didactum/didactum_leakcheck.sh | Quick check: leakage, smoke | Cron: every minute |
| /opt/wanguard-didactum/didactum_trap_handler.sh | SNMP trap handler for snmptrapd | Automatically via snmptrapd |
| /opt/wanguard-didactum/dashboard.sh | HTML dashboard generator | Cron: every 5 minutes |
| /var/log/wanguard/didactum_monitor.log | Log file for monitoring script | Automatically filled |
| /var/log/wanguard/didactum_traps.log | Log file for SNMP traps | Automatically filled |
| /var/www/html/didactum-status.html | HTML status page (dashboard) | Automatically generated |
| /etc/snmp/snmptrapd.conf | snmptrapd configuration | One-time configuration |
For firmware-specific OIDs and supported sensor types, always consult the current Didactum device documentation. Wanguard API details are documented in the Wanguard Console under Help → API.