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

Didactum Monitoring & TclMon Integration

Complete step-by-step guide for integrating Didactum monitoring devices and sensors into TclMon via SNMP – including installation, dependencies, configuration files, SNMP object definition, RRD data storage, alarm configuration, e-mail notification, and Netstate client visualization.

Product Note: TclMon is a platform-independent open-source network monitoring system implemented entirely in the scripting language Tcl.

It consists of a server process that collects SNMP data from network devices and stores it in RRD databases, as well as the Netstate client, which provides a graphical representation of the collected data and alarms.

TclMon uses the thread-safe Tclsnmp library for all SNMP v1/v2c/v3 queries. The configuration of devices and OIDs is performed exclusively via text configuration files (objects.conf and tclmon.conf).

Didactum environmental sensors are fully integrated as user-defined SNMP objects.

  • Software: TclMon (Open Source, SourceForge) + Netstate Client
  • Platform: Linux (Debian / Ubuntu / RHEL / CentOS)
  • Protocol: SNMP v1 / v2c / v3 (via Tclsnmp)
  • Devices: Didactum Monitoring System 100T / 300T / 500 / 550T
  • Sensors: Temperature, Leakage, Humidity, Door Contact, Smoke

1. Prerequisites & System Overview

TclMon Server

  • Linux Server (Debian 10+, Ubuntu 20.04+, RHEL/CentOS 7+)
  • Tcl 8.5 or higher installed
  • The following Tcl packages available: Thread, Tclsnmp, Tclsyslog, Rrd, ip, dns, time
  • RRDtool installed (for data storage and graphs)
  • fping installed (for ICMP availability check)
  • UDP port 161 open outbound for SNMP polling
  • Network access from the TclMon server to the Didactum device

Didactum Device

  • Monitoring System 100, 300, 500 or 550T
  • SNMP activated (v2c recommended)
  • Device reachable via ICMP from the TclMon server
  • MIB file available in the web interface (download under Preferences → SNMP)

Architecture & Data Flow

[TclMon Server]                          [Didactum Monitoring System]
  Linux Server                            IP: 192.168.1.50
  tclmon-server (Tcl process)
  RRD database (historical data)
  Netstate Client (visualization)
                    -- SNMP GET/WALK UDP 161 (Tclsnmp) -->
                    <-- INTEGER values (sensor values) --------

TclMon Architecture

  • tclmon-server: Main process in Tcl; reads configuration files; starts thread-based SNMP polling; stores data in RRD databases; evaluates alarm states
  • Tclsnmp: Thread-safe SNMP library for Tcl; supports SNMP v1/v2c/v3 Get, GetNext, Walk, Trap
  • Tclsyslog: Thread-safe Syslog library; used for alarm logging
  • RRDtool: Round-Robin Database for long-term storage of time-series data (temperatures, measured values)
  • Netstate Client: Graphical visualization application; shows current status, alarms, and historical graphs

2. Installing TclMon

Step 1 – Installing System Dependencies

# Debian / Ubuntu
sudo apt update
sudo apt install tcl tcl-thread tcllib rrdtool fping \
                 libsnmp-dev snmp snmp-mibs-downloader

# RHEL / CentOS / Rocky
sudo dnf install tcl tcl-thread tcllib rrdtool fping \
                 net-snmp net-snmp-utils net-snmp-devel

Step 2 – Installing Tclsnmp and Tclsyslog

# Download Tclsnmp and Tclsyslog from SourceForge
# sourceforge.net/projects/tclmon/

# Extract archives to the Tcl library directory
# Determine Tcl library path:
tclsh
% puts [join [lsearch -inline -all [info library] *] \n]
% exit

# Typically: /usr/lib/tcl8.6/ or /usr/local/lib/tcl8.6/
# Extract Tclsnmp:
sudo tar xzf tclsnmp-*.tar.gz -C /usr/lib/tcl8.6/
# Extract Tclsyslog:
sudo tar xzf tclsyslog-*.tar.gz -C /usr/lib/tcl8.6/

# Correct pkgIndex.tcl path if necessary:
sudo vi /usr/lib/tcl8.6/tclsnmp/pkgIndex.tcl

Step 3 – Testing Tcl Packages

# All required packages must be loadable:
tclsh
% package require Thread
% package require Syslog
% package require Tclsnmp
% package require Rrd
% package require ip
% package require dns
% package require time
% exit
# No error = all packages available

Step 4 – Creating TclMon User and Extracting Archive

# Create user
sudo useradd -m -d /home/tclmon -s /bin/bash tclmon

# Download and extract TclMon archive
# sourceforge.net/projects/tclmon/
sudo tar xzf tclmon-*.tar.gz -C /home/tclmon/
sudo chown -R tclmon:tclmon /home/tclmon/

# Change to the TclMon directory
cd /home/tclmon/tclmon/

Step 5 – Adjusting TclMon Base Variables

# Adjust in the main configuration file:
vi /home/tclmon/tclmon/tclmon.conf

# Check and adjust the following variables if necessary:
CONFIG(ROOT_DIR)         /home/tclmon/tclmon
CONFIG(RSH_BINARY)       /usr/bin/rsh
CONFIG(FPING_BINARY)     /usr/bin/fping
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_SENDER)   tclmon@yourdomain.de
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_RCPT)     admin@yourdomain.de
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_SUBJECT)  [TclMon ALARM] %object% - %parameter%

3. Activating SNMP on the Didactum Device

Step 1 – Opening the Didactum Web Interface

Access in browser: 192.168.1.50 (adjust IP of the Didactum device)

Step 2 – Opening SNMP Settings

Preferences → SNMP

Step 3 – Entering the Following Values

Field in Didactum Web InterfaceValue
Enable SNMPEnabled
SNMP Versionv2c (recommended)
Community Stringdidactum_tcl (do not use "public"!)
SNMP Port161

Save settings. Test SNMP connection:

# From the TclMon server:
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1

# All sensor readings
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7

# All sensor names
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.5

Determining Sensor IDs via snmpwalk

# The sensor ID is the last number in the OID (e.g., 101001)
# Output example:
# .1.3.6.1.4.1.46501.5.1.1.5.101001 = STRING: "Temperature Server Room"
# .1.3.6.1.4.1.46501.5.1.1.7.101001 = INTEGER: 215   (= 21.5 degrees C)
# .1.3.6.1.4.1.46501.5.1.1.7.107001 = INTEGER: 0     (= dry)

4. OID Reference for Didactum Sensors

All Didactum OIDs begin with .1.3.6.1.4.1.46501. The sensor ID at the end is determined via snmpwalk.

OID Fields per Sensor

FieldMeaningExample OID
.5.x.SENSOR_IDSensor Name (String).1.3.6.1.4.1.46501.5.1.1.5.101001
.6.x.SENSOR_IDStatus: 0=Normal, 1=Warning, 2=Critical, 3=Error.1.3.6.1.4.1.46501.5.1.1.6.101001
.7.x.SENSOR_IDMeasurement (Current).1.3.6.1.4.1.46501.5.1.1.7.101001

Sensor Types with OIDs and Scaling

Sensor TypeSensor IDOID ValueScalingAlarm Threshold
Temperature Sensor Port 1101001.1.3.6.1.4.1.46501.5.1.1.7.101001Raw value ÷ 10 = °C (215 = 21.5 °C)Warn: > 280 / Crit: > 350
Temperature Sensor Port 2101002.1.3.6.1.4.1.46501.5.1.1.7.101002Raw value ÷ 10 = °CWarn: > 280 / Crit: > 350
Humidity Sensor Port 1102001.1.3.6.1.4.1.46501.5.1.1.7.102001Direct value = %rHWarn: > 80 / Crit: > 90
Combined Sensor Temp (CAN)103001.1.3.6.1.4.1.46501.5.1.1.7.103001Raw value ÷ 10 = °CWarn: > 280 / Crit: > 350
Combined Sensor Humidity (CAN)103002.1.3.6.1.4.1.46501.5.1.1.7.103002Direct value = %rHWarn: > 80 / Crit: > 90
Door Contact104001.1.3.6.1.4.1.46501.5.1.1.7.1040010 = closed, 1 = openWarn: > 0
Smoke Detector106001.1.3.6.1.4.1.46501.5.1.1.7.1060010 = OK, 1 = AlarmCrit: > 0
Leakage Sensor (Spot)107001.1.3.6.1.4.1.46501.5.1.1.7.1070010 = dry, 1 = waterCrit: > 0
Leakage Sensor (Cable)107002.1.3.6.1.4.1.46501.5.1.1.7.1070020 = dry, 1 = waterCrit: > 0
System Status (Device Total).1.3.6.1.4.1.46501.1.1.00 = OK, 1 = Warning, 2 = CriticalWarn: > 0 / Crit: > 1

Important Note – Temperature Thresholds: TclMon compares the SNMP raw value directly. Since Didactum provides temperatures as raw value × 10 (215 = 21.5 °C), all thresholds must also be specified × 10. 28 °C warning = threshold 280.

5. TclMon Configuration File – Defining Didactum Objects

TclMon is managed entirely via text configuration files. The Didactum device is defined in objects.conf as an SNMP object with its OIDs. TclMon automatically detects available parameters and keeps the list up to date.

File: /home/tclmon/tclmon/objects.conf

# ================================================================
# TclMon object configuration for Didactum Monitoring System
# Didactum Enterprise OID: 1.3.6.1.4.1.46501
# ================================================================

# ----------------------------------------------------------------
# Object: Didactum Monitoring System Server Room
# ----------------------------------------------------------------
object didactum_serverraum {

    # Basic connection parameters
    address         192.168.1.50
    description     "Didactum Monitoring System Server Room"
    location        "Server Room"
    contact         "admin@yourdomain.de"

    # SNMP parameters
    snmp_version    2c
    snmp_community  didactum_tcl
    snmp_port       161
    snmp_timeout    5000
    snmp_retries    3

    # Polling interval (seconds)
    poll_interval   300

    # ICMP availability check
    ping_enabled    1
    ping_interval   60

    # SNMP methods for collection
    methods         { snmp_custom rrd_store }

    # -------- User-defined SNMP parameters --------

    # Temperature sensor Port 1 (Raw value; 215 = 21.5 Grad C)
    custom_oid Temperatur_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.101001
        type        gauge
        scale       0.1
        unit        "Deg C"
        warn_high   280
        crit_high   350
        rrd_store   1
    }

    # Temperature sensor Port 2
    custom_oid Temperatur_Sensor_02 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.101002
        type        gauge
        scale       0.1
        unit        "Deg C"
        warn_high   280
        crit_high   350
        rrd_store   1
    }

    # Humidity sensor Port 1
    custom_oid Luftfeuchte_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.102001
        type        gauge
        scale       1
        unit        "%rH"
        warn_high   80
        crit_high   90
        rrd_store   1
    }

    # Leakage sensor Spot (0=dry 1=water detected)
    custom_oid Leckage_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.107001
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 120
    }

    # Leakage sensor Cable
    custom_oid Leckage_Sensor_02 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.107002
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 120
    }

    # Door contact (0=closed 1=open)
    custom_oid Tuerkontakt_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.104001
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        rrd_store   1
        poll_interval 60
    }

    # Smoke detector (0=OK 1=Alarm)
    custom_oid Rauchmelder_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.106001
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 60
    }

    # Sensor status (0=Normal 1=Warning 2=Critical 3=Error)
    custom_oid Sensor_Status_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.6.101001
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        crit_high   1
        rrd_store   1
    }

    # System status device total (0=OK 1=Warn 2=Crit)
    custom_oid Geraet_Systemzustand {
        oid         .1.3.6.1.4.1.46501.1.1.0
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        crit_high   1
        rrd_store   1
    }
}

6. TclMon Main Configuration (tclmon.conf)

The main configuration file controls the TclMon server process, alarm behavior, mail delivery, and logging.

File: /home/tclmon/tclmon/tclmon.conf (Relevant sections)

# ================================================================
# TclMon Main Configuration (Excerpt for Didactum integration)
# ================================================================

# ---- Server paths ----
set CONFIG(ROOT_DIR)              /home/tclmon/tclmon
set CONFIG(RRD_DIR)               /home/tclmon/tclmon/rrd
set CONFIG(LOG_DIR)               /home/tclmon/tclmon/log
set CONFIG(CONF_DIR)              /home/tclmon/tclmon/conf

# ---- External binaries ----
set CONFIG(FPING_BINARY)          /usr/bin/fping
set CONFIG(RSH_BINARY)            /usr/bin/rsh
set CONFIG(RRDTOOL_BINARY)        /usr/bin/rrdtool

# ---- SNMP standard values ----
set CONFIG(SNMP_DEFAULT_VERSION)  2c
set CONFIG(SNMP_DEFAULT_TIMEOUT)  5000
set CONFIG(SNMP_DEFAULT_RETRIES)  3

# ---- Alarm server settings ----
set CONFIG(ALARMS_SERVER_ENABLED) 1
set CONFIG(ALARMS_SERVER_PORT)    9001

# ---- E-Mail alerting ----
set CONFIG(MAIL_NOTIFY_ENABLED)   1
set CONFIG(MAIL_SENDER)           tclmon@yourdomain.de
set CONFIG(MAIL_RCPT)             admin@yourdomain.de
set CONFIG(MAIL_RCPT_CRITICAL)    admin@yourdomain.de,notfall@yourdomain.de
set CONFIG(MAIL_SUBJECT_WARN)     {[TclMon WARNING] %object% - %param% = %value%}
set CONFIG(MAIL_SUBJECT_CRIT)     {[TclMon CRITICAL] %object% - %param% = %value%}
set CONFIG(MAIL_SUBJECT_RECOVER)  {[TclMon OK] %object% - %param% normalized}

# ---- Syslog logging ----
set CONFIG(SYSLOG_ENABLED)        1
set CONFIG(SYSLOG_FACILITY)       local0
set CONFIG(SYSLOG_LEVEL_WARN)     warning
set CONFIG(SYSLOG_LEVEL_CRIT)     critical

# ---- Thread settings (scaling) ----
set CONFIG(THREAD_POOL_SIZE)      10
set CONFIG(POLLER_THREADS)        5

# ---- Alarm suppression (Maintenance Window) ----
# Period in Cron syntax: "Minute Hour Day Month Weekday"
# Example: Maintenance Saturdays 02:00-04:00 AM
set CONFIG(MAINTENANCE_WINDOW)    {0 2 * * 6}
set CONFIG(MAINTENANCE_DURATION)  7200

7. Verifying SNMP Polling with Tclsnmp

Before starting TclMon, the SNMP connection should be tested directly in the Tcl interpreter using the Tclsnmp package.

Interactive Tclsnmp Test

tclsh

# Load package
package require Tclsnmp

# Create SNMP session to Didactum device
set session [snmp::session -version 2c \
                           -community didactum_tcl \
                           -address 192.168.1.50 \
                           -port 161 \
                           -timeout 5000 \
                           -retries 3]

# Query temperature value (raw value)
set result [$session get .1.3.6.1.4.1.46501.5.1.1.7.101001]
puts "Temperature raw value: $result"
# Expected output: 215 (= 21.5 degrees Celsius)

# Query leakage sensor
set result [$session get .1.3.6.1.4.1.46501.5.1.1.7.107001]
puts "Leakage Status: $result"
# Expected output: 0 (= dry)

# Walk over all sensor readings
set results [$session walk .1.3.6.1.4.1.46501.5.1.1.7]
foreach {oid value} $results {
    puts "$oid = $value"
}

# Close session
$session destroy
exit

Quick test via Shell Script

#!/usr/bin/env tclsh
# /usr/local/bin/didactum-snmp-test.tcl
# Didactum SNMP connection test for TclMon

package require Tclsnmp

set HOST      "192.168.1.50"
set COMMUNITY "didactum_tcl"
set OIDS {
    Temperatur_01    .1.3.6.1.4.1.46501.5.1.1.7.101001
    Luftfeuchte_01   .1.3.6.1.4.1.46501.5.1.1.7.102001
    Leckage_01       .1.3.6.1.4.1.46501.5.1.1.7.107001
    Systemzustand    .1.3.6.1.4.1.46501.1.1.0
}

set s [snmp::session -version 2c -community $COMMUNITY \
                   -address $HOST -port 161]

foreach {name oid} $OIDS {
    if {[catch {set val [$s get $oid]} err]} {
        puts "ERROR $name: $err"
    } else {
        puts "OK    $name: $val"
    }
}

$s destroy
chmod +x /usr/local/bin/didactum-snmp-test.tcl
tclsh /usr/local/bin/didactum-snmp-test.tcl
# Expected output:
# OK    Temperatur_01:  215
# OK    Luftfeuchte_01: 58
# OK    Leckage_01:     0
# OK    Systemzustand:  0

8. Starting TclMon Server and Checking Operation

Step 1 – Starting TclMon Server Manually (Test)

su - tclmon
cd /home/tclmon/tclmon
tclsh tclmon-server.tcl &
# Observe log output:
tail -f /home/tclmon/tclmon/log/tclmon.log

Step 2 – Setting up TclMon as a System Service

# Create systemd service file:
sudo vi /etc/systemd/system/tclmon.service
[Unit]
Description=TclMon Network Monitoring Server
After=network.target
[Service]
Type=simple
User=tclmon
WorkingDirectory=/home/tclmon/tclmon
ExecStart=/usr/bin/tclsh /home/tclmon/tclmon/tclmon-server.tcl
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable tclmon
sudo systemctl start tclmon
sudo systemctl status tclmon

Step 3 – Checking Polling Status

# Query current status of all objects (plaintext protocol):
echo "get_status didactum_serverraum" | nc localhost 9001

# Check RRD databases (after the first polling cycle):
rrdtool info /home/tclmon/tclmon/rrd/didactum_serverraum_Temperatur_Sensor_01.rrd

# Query last reading from RRD:
rrdtool lastupdate /home/tclmon/tclmon/rrd/didactum_serverraum_Temperatur_Sensor_01.rrd

9. Alarm and E-Mail Configuration

TclMon evaluates all collected values against the defined thresholds and sends e-mails to the configured recipients when exceeded.

Configuring E-Mail Delivery

# In tclmon.conf, ensure that e-mail is configured correctly:
# (SMTP is used via local sendmail or an SMTP relay)

# Configure Postfix/sendmail as local mail relay:
sudo apt install postfix mailutils

# Relay configuration in /etc/postfix/main.cf:
relayhost = [mail.yourdomain.de]:587

# Send test e-mail:
echo "TclMon Test" | mail -s "[TclMon] Connection Test" admin@yourdomain.de

Alarm Rules in objects.conf (Summary)

Object / OIDwarn_highcrit_highPoll IntervalE-Mail on
Temperatur_Sensor_01280 (28 °C)350 (35 °C)300 sec.Warning + Critical
Temperatur_Sensor_02280350300 sec.Warning + Critical
Luftfeuchte_Sensor_018090300 sec.Warning + Critical
Leckage_Sensor_010 (from 1 = water)120 sec.Critical
Leckage_Sensor_020120 sec.Critical
Tuerkontakt_010 (from 1 = open)60 sec.Warning
Rauchmelder_010 (from 1 = Alarm)60 sec.Critical
Geraet_Systemzustand01300 sec.Warning + Critical

10. Configuring Netstate Client

The Netstate client is the graphical visualization component of TclMon. It connects to the TclMon server via the plaintext protocol and displays status, alarms, and historical graphs.

Installing Netstate

# Download Netstate archive from SourceForge
# sourceforge.net/projects/tclmon/
tar xzf netstate-*.tar.gz
cd netstate/

# Dependencies: Tcl/Tk with Wish
sudo apt install tk  # Debian/Ubuntu
sudo dnf install tk  # RHEL/CentOS

Configuring Netstate Connection

# In the Netstate configuration file:
vi /home/tclmon/netstate/netstate.conf

set NETSTATE(SERVER_HOST)   localhost
set NETSTATE(SERVER_PORT)   9001
set NETSTATE(UPDATE_INTERVAL) 30
set NETSTATE(RRD_DIR)         /home/tclmon/tclmon/rrd

Starting Netstate

cd /home/tclmon/netstate
wish netstate.tcl

In the Netstate window, the object didactum_serverraum appears with all configured parameters. Color-coded status display: Green = OK, Yellow = Warning, Red = Critical.

11. MIB Template for External SNMP Queries

-- ============================================================
-- DIDACTUM-ENV-MIB | Enterprise OID: 1.3.6.1.4.1.46501
-- ============================================================

DIDACTUM-ENV-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 Security GmbH"
    CONTACT-INFO "support@didactum-security.com"
    DESCRIPTION  "MIB for Didactum environmental monitoring systems"
    ::= { enterprises 46501 }

didactumSensors     OBJECT IDENTIFIER ::= { didactum 5 }
didactumSensorTable OBJECT IDENTIFIER ::= { didactumSensors 1 }
didactumSensorEntry OBJECT IDENTIFIER ::= { didactumSensorTable 1 }

sensorName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Name of the sensor"
    ::= { didactumSensorEntry 5 }

sensorStatus OBJECT-TYPE
    SYNTAX      Integer32 (0..3)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Status: 0=Normal 1=Warning 2=Critical 3=Error"
    ::= { didactumSensorEntry 6 }

sensorValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Measured value: Temp raw value div 10 = Grad C; Leakage 0 or 1"
    ::= { didactumSensorEntry 7 }

END

12. Testing & Troubleshooting

Diagnostic Commands

# Test SNMP connection to Didactum
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1

# Check individual OID value
snmpget -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
# Expected output: INTEGER: 215 (= 21.5 degrees Celsius)

# TclMon service status
sudo systemctl status tclmon

# Follow TclMon log live
tail -f /home/tclmon/tclmon/log/tclmon.log

# Show RRD database content
rrdtool lastupdate /home/tclmon/tclmon/rrd/didactum_serverraum_Leckage_Sensor_01.rrd

# Test Tcl package availability
tclsh -c "package require Tclsnmp; puts OK"

# Query TclMon server directly via plaintext protocol
echo "list_objects" | nc localhost 9001
echo "get_alarms"   | nc localhost 9001

Error Messages and Solutions

ProblemCause & Solution
package require Tclsnmp failsTclsnmp not correctly installed or path in pkgIndex.tcl incorrect → Check path: tclsh -c "puts [info library]"
SNMP timeout in Tclsnmp testCommunity string incorrect; UDP 161 blocked; device unreachable → test snmpwalk manually
RRD database not createdRRD directory missing or incorrect permissions → mkdir -p /home/tclmon/tclmon/rrd && chown tclmon:tclmon /home/tclmon/tclmon/rrd
Temperature value 10x too high (e.g., 215 instead of 21.5)scale parameter in objects.conf missing or is 1 → set scale 0.1 for temperature sensors; enter thresholds × 10
No alarm on leakagecrit_high value incorrect → set crit_high 0 (triggers critical if value 1 = water)
No e-mail on alarmPostfix/sendmail not configured; e-mail address in tclmon.conf incorrect → send test e-mail manually
TclMon service does not startTcl libraries missing; configuration error in objects.conf → journalctl -u tclmon -f; check syntax of config file
Netstate shows no connectionTclMon server port 9001 unreachable; firewall blocked → check nc -zv localhost 9001

13. Final Checklist

System & Installation

  • Tcl 8.5+ installed
  • Tclsnmp package loaded (package require Tclsnmp without error)
  • Tclsyslog, Thread, Rrd, ip, dns, time packages available
  • RRDtool and fping installed
  • TclMon archive extracted to /home/tclmon/tclmon/
  • User tclmon created

Didactum Device

  • SNMP activated (v2c), Community: didactum_tcl
  • Device reachable via ping from the TclMon server
  • snmpwalk from the TclMon server successful
  • Tclsnmp test: all OID values queried correctly

TclMon Configuration

  • tclmon.conf: ROOT_DIR, FPING_BINARY, RRDTOOL_BINARY correctly set
  • tclmon.conf: Mail recipient and SMTP relay configured
  • objects.conf: Object didactum_serverraum created with all OIDs
  • Temperature sensors: scale 0.1, warn_high 280, crit_high 350
  • Leakage sensors: poll_interval 120, crit_high 0
  • TclMon service running (systemctl status tclmon)
  • RRD databases are created and filled

Alerting & Visualization

  • Test e-mail sent successfully
  • Alarm log shows correct entries (tclmon.log)
  • Netstate client connects to TclMon server (port 9001)
  • All Didactum sensors visible in Netstate with status OK (green)
  • RRD graphs for temperature sensors accessible via Netstate

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.