Didactum Monitoring & FreeRADIUS Integration
Complete step-by-step guide for integrating Didactum monitoring devices into a FreeRADIUS server – including OID reference and MIB import configuration.
- Server: FreeRADIUS 3.x (Ubuntu / Debian)
- Protocol: RADIUS + SNMP v1/v2c/v3
- Device: Didactum Monitoring System 100 / 300T / 500T / 550T
1. Prerequisites and System Overview
Server Requirements
- Ubuntu 20.04 / 22.04 LTS or Debian 11/12
- At least 512 MB RAM, 1 CPU
- Static IP address (e.g. 192.168.1.10)
- Root or sudo access
- UDP ports 1812 (authentication) and 1813 (accounting) open
Didactum Device
- Monitoring System 100T, 300T / 500T or 550T
- Firmware with RADIUS support
- Network access to the RADIUS server
- SNMP enabled (v1/v2c/v3)
- MIB file (downloadable from the web interface)
What does RADIUS provide for Didactum?
Didactum monitoring devices support RADIUS for centralized user authentication in the web interface. Instead of local user accounts directly on the device, login credentials are verified against a central RADIUS server. This enables unified user management for multiple Didactum devices at the same time.
Network Architecture
[Administrator Browser]
| HTTPS login
v
[Didactum Monitoring System] --RADIUS--> [FreeRADIUS Server]
IP: 192.168.1.50 IP: 192.168.1.10
Port: 443 (WebUI) Port: 1812/UDP
|
| SNMP (OID queries)
v
[NMS / PRTG / Zabbix / Nagios]
2. Installing FreeRADIUS and Basic Configuration
Step 1 – Update system and install FreeRADIUS
sudo apt update && sudo apt upgrade -y sudo apt install freeradius freeradius-utils -y
Check status:
sudo systemctl status freeradius
Step 2 – Start FreeRADIUS in debug mode
sudo systemctl stop freeradius sudo freeradius -X
Successful start:
At the end of the output, the following must appear: Ready to process requests — exit with Ctrl+C.
Step 3 – Configuration directory
/etc/freeradius/3.0/ ├── radiusd.conf <-- Main configuration ├── clients.conf <-- RADIUS clients (e.g. Didactum devices) ├── users <-- Local users ├── mods-available/ <-- Available modules ├── mods-enabled/ <-- Active modules (symlinks) └── sites-enabled/ <-- Active virtual servers
Important:
Create a backup before each change:
sudo cp /etc/freeradius/3.0/clients.conf /etc/freeradius/3.0/clients.conf.bak
3. Configure Didactum as a RADIUS Client
Every device that is allowed to send RADIUS requests must be entered in the clients.conf file.
Step 1 – Open clients.conf
sudo nano /etc/freeradius/3.0/clients.conf
Step 2 – Add Didactum entry at the end of the file
# -------------------------------------------------------
# Didactum Monitoring System – RADIUS Client
# -------------------------------------------------------
client didactum-monitor-01 {
ipaddr = 192.168.1.50
secret = Change_Your_Secret_Here
shortname = didactum-01
nastype = other
}
Security note: The secret must be at least 16 characters long and is configured identically in the Didactum web interface.
Step 3 – Option: Enable entire subnet
client didactum-netz {
ipaddr = 192.168.1.0/24
secret = Subnet_Secret
shortname = didactum-subnet
nastype = other
}
4. Configure User Authentication
Step 1 – Create local users
sudo nano /etc/freeradius/3.0/users
Insert the following entries at the beginning of the file (before the DEFAULT block). The indentation of the second line is syntactically mandatory:
admin Cleartext-Password := "SecurePassword123!"
Reply-Message = "Welcome, Administrator"
readonly Cleartext-Password := "ReadOnly456#"
Reply-Message = "Welcome, Read Access"
techniker Cleartext-Password := "Technician789$"
Reply-Message = "Welcome, Technician"
Step 2 – Enable PAP module
ls -la /etc/freeradius/3.0/mods-enabled/ | grep pap
sudo ln -s /etc/freeradius/3.0/mods-available/pap \\
/etc/freeradius/3.0/mods-enabled/pap
Step 3 – Restart service
sudo systemctl restart freeradius sudo systemctl status freeradius
5. Configure the Didactum Web Interface
Open web interface: 192.168.1.50 (adjust device IP)
Navigation
System Settings → Network → RADIUS
Enter the following values
| Field in the Didactum web interface | Value |
|---|---|
| Enable RADIUS | Enabled |
| Server IP / Primary Server | 192.168.1.10 |
| Port | 1812 |
| Shared Secret | Identical to secret from clients.conf |
| Authentication method | PAP |
| Timeout | 5 seconds |
| Retry / Attempts | 3 |
| Fallback to local accounts | Enabled |
Important:
Test and note the local admin access beforehand – it is the fallback if RADIUS is not reachable.
6. SNMP OID Reference
All Didactum OIDs start 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 (Sensor ID 101001) |
|---|---|---|
| .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) | .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 |
Specific OIDs by sensor type
| Sensor type | Sensor ID | OID – Measured value | OID – Status |
|---|---|---|---|
| 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 |
| 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 |
| Water sensor / leakage | 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 |
| 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 |
| 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 |
| 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 |
| 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 |
Determine sensor ID: In the Didactum web interface under System tree → Sensor → Details.
Temperature value: Raw value ÷ 10 = degrees Celsius (example: 235 = 23.5 °C)
Test SNMP query
# Temperature value (SNMPv2c)
snmpget -v 2c -c public 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
# Leakage status (SNMPv2c)
snmpget -v 2c -c public 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.6.107001
# Temperature value (SNMPv3)
snmpget -v 3 -l authPriv -u snmpuser -a SHA -A "AuthPassword" \\
-x AES -X "PrivPassword" 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
7. MIB Import Configuration
Step 1 – Download MIB file
System Settings → SNMP → "Download MIB file" → didactum.mib
Step 2 – MIB reference configuration
-- ============================================================
-- DIDACTUM-MIB import configuration
-- Compatible with: iReasoning MIB Browser, PRTG, Zabbix,
-- Nagios, Check_MK, OpenNMS
-- ============================================================
DIDACTUM-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32,
enterprises FROM SNMPv2-SMI
DisplayString FROM SNMPv2-TC;
didactum MODULE-IDENTITY
LAST-UPDATED "202401010000Z"
ORGANIZATION "Didactum Ltd."
CONTACT-INFO "support@didactum.eu"
DESCRIPTION "Didactum Monitoring System MIB"
::= { enterprises 46501 }
-- Columns of the sensor table:
-- .1 = Sensor ID .5 = Sensor name
-- .6 = Status .7 = Measured value
--
-- Temperature: raw value x 0.1 = degrees Celsius (235 = 23.5 C)
-- Leakage: 0 = dry, 1 = water detected
-- Contact: 0 = open, 1 = closed
sensorName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Configured name of the sensor"
::= { enterprises 46501 5 1 1 5 }
sensorStatus OBJECT-TYPE
SYNTAX INTEGER { ok(0), alarm(1), noConnect(2) }
MAX-ACCESS read-only
STATUS current
DESCRIPTION "0=OK, 1=Alarm, 2=No signal"
::= { enterprises 46501 5 1 1 6 }
sensorValue OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Measured value of the sensor"
::= { enterprises 46501 5 1 1 7 }
END
Step 3 – Install MIB on Linux
sudo cp didactum.mib /usr/share/snmp/mibs/ echo "mibdirs /usr/share/snmp/mibs" >> ~/.snmp/snmp.conf echo "mibs ALL" >> ~/.snmp/snmp.conf snmpwalk -v 2c -c public -m ALL 192.168.1.50 enterprises.46501.5.1.1
Step 4 – Import MIB into PRTG
1. Copy didactum.mib to: C:\\Program Files (x86)\\PRTG Network Monitor\\snmpmibs\\ 2. Restart PRTG service 3. Add sensor: "SNMP Custom OID" OID: .1.3.6.1.4.1.46501.5.1.1.7.SENSOR_ID 4. Temperature sensor: scaling factor 0.1, unit °C
8. Troubleshooting
Step 1 – Test RADIUS locally
radtest admin SecurePassword123! 127.0.0.1 1812 testing123 # Success: Received Access-Accept
Step 2 – Debug mode
sudo systemctl stop freeradius sudo freeradius -X 2>&1 | tee /tmp/radius-debug.log
Error messages and solutions
| Message | Cause & solution |
|---|---|
| Access-Accept | Authentication successful |
| Access-Reject | Incorrect password or user missing → check users file |
| Client not found | IP not in clients.conf → add Didactum IP |
| Shared secret is incorrect | Secret does not match → align in clients.conf and WebUI |
| No response | Firewall blocks port 1812/UDP → check rule |
Step 3 – Firewall rules (Ubuntu UFW)
sudo ufw allow 1812/udp sudo ufw allow 1813/udp sudo ufw allow from 192.168.1.50 to any port 1812 proto udp
Step 4 – View logs
sudo tail -f /var/log/freeradius/radius.log sudo journalctl -u freeradius -f --since "1 hour ago"
9. Completion Checklist
FreeRADIUS Server
- FreeRADIUS installed and service running
- clients.conf: Didactum IP and secret configured
- users file: At least one user created
- PAP module enabled (mods-enabled/pap)
- Ports 1812 and 1813 UDP opened in the firewall
- radtest successful locally (Access-Accept)
- Autostart enabled: sudo systemctl enable freeradius
Didactum device
- RADIUS enabled in the web interface
- RADIUS server IP entered
- Port 1812 entered
- Shared secret identical to clients.conf
- Fallback to local accounts enabled
- SNMP enabled (v1/v2c or v3)
- MIB file downloaded
- Login test with RADIUS user successful
SNMP / OIDs
- MIB file imported into NMS
- snmpwalk / snmpget successfully tested
- Sensor IDs noted from the web interface
- Temperature sensor OID configured in NMS
- Leakage OID monitored and alerting configured
Security
- Strong shared secret (at least 16 characters)
- Secure user passwords set
- Only required IPs in clients.conf
- SNMP community string changed (not “public")
- SNMPv3 evaluated for production environments
- Log rotation configured for radius.log