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

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.

FunctionWanguard SNMP SensorSuitable for Didactum?
Bandwidth monitoring (ifInOctets, ifOutOctets)Yes, primary purposeNo (Didactum has no network interfaces)
Register device as SNMP nodeYesYes – for device availability (Ping/SNMP)
Custom OID queryLimited (via scripts)Yes – for temperature, leakage, etc.
SNMP trap receptionYes (via snmptrapd + script)Yes – for proactive Didactum alerts
Threshold alerting for environmental sensorsOnly via external scriptsConditional – with custom response scripts
Graphical trend display for sensor valuesNo (native)No – external tool required
DDoS detection at network levelYes, core functionNot 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

ComponentFunction
Wanguard ConsoleWeb-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 FilterDDoS mitigation – not relevant for Didactum
Response ScriptsCustom scripts upon anomaly detection – usable for Didactum integration
REST APIFull 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

DeviceIP addressRole
Wanguard server192.168.1.95Network monitoring, DDoS protection, SNMP trap reception
Didactum Monitoring Unit192.168.1.100Monitored device (SNMP agent)

3. SNMP Preparation on the Didactum Device

3.1 Enable SNMP

  1. Open the Didactum web interface: 192.168.1.100, log in with the admin account.
  2. Navigation: Settings → Network → SNMP (or: Settings → Network → SNMP).
  3. 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
  4. 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

  1. Open Wanguard Console.
  2. Navigation: Configuration → Servers.
  3. Check server status – all components should show Online.
  4. 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

  1. Wanguard Console: Navigation: Configuration → Components → [+] Add.
  2. Select type: SNMP Sensor.
  3. 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
  4. Under Interface Discovery: select Off (Didactum has no relevant network interfaces).
  5. Under Sensor License: Wanguard or Wansight depending on the available license.
  6. 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

  1. SNMP Protocol: select SNMP version 3.
  2. 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

  1. Navigation: Events → Event Log.
  2. Filter: sensor name Didactum-Rack01.
  3. Entry SNMP Sensor started confirms successful configuration.
  4. 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 0
sudo 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}"
fi
sudo 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

OIDDescriptionRaw valueScript formulaThreshold (raw value)
1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n}Temperature value sensor n°C × 10$RAW / 10300 = 30 °C, 350 = 35 °C
1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n}Temperature status sensor nEnum 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 / 10Informational
1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n}Lower threshold sensor n°C × 10$RAW / 10Informational
1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n}Sensor name nText

7.2 Leakage sensors

OIDDescriptionRaw valueAlarm condition
1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n}Leakage status sensor n0=OK, 1=leakage= 1 → CRITICAL
1.3.6.1.4.1.3854.1.2.2.1.18.1.3.{n}Leakage value sensor n0=dry≥ 1 → CRITICAL
1.3.6.1.4.1.3854.1.2.2.1.18.1.2.{n}Sensor name nText

7.3 Humidity and other sensors

OIDDescriptionRaw valueAlarm 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 nEnum 0/1/2≥ 1 → WARNING
1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n}Voltage value sensor nV × 10< 2070 or > 2530 → WARNING
1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n}Door contact status n0=closed, 1=open= 1 → WARNING
1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n}Shock / motion n0=none, 1=alarm= 1 → WARNING
1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n}Smoke detector status n0=OK, 1=alarm= 1 → CRITICAL
1.3.6.1.2.1.1.3.0System uptimeHundredths of seconds
1.3.6.1.2.1.1.1.0Device 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:

  1. Navigation: Configuration → Response Scripts → Add.
  2. Settings:
    • Script Name: Didactum-Status-Check
    • Description: Checks Didactum sensors on network event
    • Execution: Run on anomaly detection
  3. Script content: call the monitoring script /opt/wanguard-didactum/didactum_monitor.sh.
  4. Save and assign it to the desired sensor or IP zone.

8.2 Configure email notification in Wanguard

  1. Navigation: Configuration → Notifications → Email.
  2. Enter SMTP server: host, port, sender, authentication.
  3. Send test email.
  4. 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 eventCauseConfiguration location
SNMP Sensor startedSensor started successfullyEvent Log
SNMP Sensor stoppedSensor stopped or errorEvent Log, notification
SNMP TimeoutDidactum device not reachableConfigure notification
Custom Script executedResponse script was triggeredEvent Log
SNMP Trap receivedTrap received from Didactum deviceEvent Log (if trap handler is active)

8.4 Recommended thresholds for scripts

SensorWarning thresholdCritical thresholdStandard
Temperature (raw value × 10)≥ 300 (30 °C)≥ 350 (35 °C)ASHRAE A1: 15–32 °C
Humidity (% rH)> 70 or < 20> 80 or < 10ASHRAE: 20–80 % rH
Leakage (0/1)= 1Immediate alarm
Voltage (raw value × 10)< 2070 or > 2530< 1960 or > 2600EN 50160 ±10 %
Door contact / smoke= 1Policy-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}"
fi
sudo chmod +x /opt/wanguard-didactum/didactum_trap_handler.sh

9.3 Important Didactum trap OIDs

Trap OIDEventRecommended response
1.3.6.1.4.1.3854.1.7.1Temperature alarmEmail + Wanguard event
1.3.6.1.4.1.3854.1.7.2Leakage alarmEmail + SMS + Wanguard event
1.3.6.1.4.1.3854.1.7.3Humidity alarmEmail + Wanguard event
1.3.6.1.4.1.3854.1.7.4Voltage alarmEmail + Wanguard event
1.3.6.1.4.1.3854.1.7.10Door contact openedEmail
1.3.6.1.4.1.3854.1.7.14Smoke detector alarmEmail + SMS + Wanguard event
1.3.6.1.4.1.3854.1.7.99Device restartLogging

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

TaskWanguardNagios / Icinga / Checkmk
DDoS detection and mitigationYes (core function)No
Network bandwidth (routers, switches)YesConditional
Didactum device availability (Ping/SNMP)YesYes
Temperature/humidity/leakage checksOnly via scriptYes (native)
Threshold alerting for environmental sensorsOnly via scriptYes (native)
Trend graphs for sensor valuesNoYes
SNMP trap receptionVia snmptrapdVia 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

ProblemPossible cause / solution
SNMP sensor shows timeout in the event logFirewall: 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 emailssendmail 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 runCrontab 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 receivedIs 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 failsAPI 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 valuesScript 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 eventsAPI 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 / pathPurposeExecution
/opt/wanguard-didactum/didactum_monitor.shMain monitoring: temperature, humidity, voltage, doorCron: every 5 minutes
/opt/wanguard-didactum/didactum_leakcheck.shQuick check: leakage, smokeCron: every minute
/opt/wanguard-didactum/didactum_trap_handler.shSNMP trap handler for snmptrapdAutomatically via snmptrapd
/opt/wanguard-didactum/dashboard.shHTML dashboard generatorCron: every 5 minutes
/var/log/wanguard/didactum_monitor.logLog file for monitoring scriptAutomatically filled
/var/log/wanguard/didactum_traps.logLog file for SNMP trapsAutomatically filled
/var/www/html/didactum-status.htmlHTML status page (dashboard)Automatically generated
/etc/snmp/snmptrapd.confsnmptrapd configurationOne-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.

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.