Skip to content

IPCom Configuration Documentation

Version: 9.0
Complete Configuration Reference Guide


Table of Contents

  1. Configuration Overview
  2. General Settings
  3. Database Configuration
  4. API Settings
  5. Receivers Configuration
  6. Tracker Settings
  7. COM Terminals
  8. Users Management
  9. Ignorable Startup Events
  10. Internal Events
  11. Outputs Configuration

Configuration Overview

IPCom uses a JSON-based configuration with built-in version management. This page provides a complete overview of the configuration structure.

Configuration Structure

The root configuration object contains all system settings organized into logical sections:

json
{
  "version": 9,
  "general": { ... },
  "database": { ... },
  "api": { ... },
  "receivers": { ... },
  "users": [],
  "ignorable_startup_events": [],
  "tracker": { ... },
  "internal_events": [],
  "outputs": [],
  "com_terminals": []
}

Version Information

PropertyValueDescription
Version9Current configuration schema version
FormatJSONHuman-readable configuration format
EncodingUTF-8Character encoding
SchemaValidatedStrict schema validation

Configuration Sections

Core System Settings

Communication & Input

Security & Access

Event Management

Output & Integration

  • Outputs - External system integration and forwarding

Default Configuration

json
{
  "version": 9,
  "general": {
    "instance_name": "main",
    "generate_restore_on_new_session": false,
    "ignore_events_on_device_startup": false,
    "synchronize_device_time_interval": 7,
    "device_time_update_enabled": true,
    "prioritize_message_rl": true
  },
  "database": {
    "enabled": true,
    "sqluser": "sqluser",
    "sqlpass": "sqlpass",
    "sqlhost": "localhost",
    "sqlport": 3306,
    "sqldatabase": "ipcom",
    "in_memory_device_management": false,
    "in_memory_event_management": false,
    "remove_lost_objects_enabled": true,
    "remove_lost_objects_age": 20,
    "remove_events_enabled": true,
    "remove_events_age": 15,
    "track_device_sessions": false,
    "device_session_log_count": 10
  },
  "api": {
    "api_port": 30003,
    "api_http_port": 8080,
    "api_jwt_secret": "a7e9c2f1b8d4a6c3e5f7b9d1a3c5e7f9b2d4a6c8e0f2b4d6a8c0e2f4b6d8a0c2e",
    "private_key": "cert/privateKey.pem",
    "public_key": "cert/serverCertificate.pem",
    "http_enabled": true
  },
  "receivers": {
    "tcp": [],
    "udp": [],
    "com": [],
    "modem": []
  },
  "users": [
    {
      "id": 1,
      "login": "administrator",
      "password": "admin",
      "name": "Admin",
      "scopes": [
        "events",
        "devices",
        "receivers",
        "outputs",
        "users",
        "configuration",
        "system",
        "statistics",
        "license"
      ],
      "visible_receivers": {
        "all": true,
        "custom": []
      },
      "token_time": 60,
      "api_key": ""
    }
  ],
  "ignorable_startup_events": [],
  "tracker": {
    "timeout_multiplier": 1,
    "timeout_tolerance": 60,
    "sms_timeout_multiplier": 1,
    "sms_timeout_tolerance": 60,
    "event_count_for_restore": 1,
    "event_count_for_restore_sms": 1
  },
  "internal_events": [
    {
      "enabled": true,
      "type": 0,
      "classificator": "E",
      "event_code": "762",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GPRS",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 0,
      "classificator": "R",
      "event_code": "762",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GPRS_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 1,
      "classificator": "E",
      "event_code": "752",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GSM",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 1,
      "classificator": "R",
      "event_code": "752",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GSM_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 2,
      "classificator": "E",
      "event_code": "704",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_MASS_LOST",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 3,
      "classificator": "R",
      "event_code": "764",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_MASS_GPRS_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 4,
      "classificator": "R",
      "event_code": "754",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_MASS_GSM_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 5,
      "classificator": "E",
      "event_code": "732",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_WAN_PING_NO_RESPONSE",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 5,
      "classificator": "R",
      "event_code": "732",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_WAN_PING_NO_RESPONSE_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 6,
      "classificator": "E",
      "event_code": "753",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_GSM_MODEM_NO_PING",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 6,
      "classificator": "R",
      "event_code": "753",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_GSM_MODEM_NO_PING_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 7,
      "classificator": "E",
      "event_code": "751",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_GSM_MODEM_OFFLINE",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 7,
      "classificator": "R",
      "event_code": "751",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_GSM_MODEM_OFFLINE_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 8,
      "classificator": "E",
      "event_code": "733",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_WAN_LINK_LOST",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 8,
      "classificator": "R",
      "event_code": "733",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_WAN_LINK_LOST_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 9,
      "classificator": "E",
      "event_code": "713",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_RECEIVER_NO_HEART_BEAT",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 9,
      "classificator": "R",
      "event_code": "713",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_RECEIVER_NO_HEART_BEAT_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 10,
      "classificator": "E",
      "event_code": "712",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_RECEIVER_ERROR",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 10,
      "classificator": "R",
      "event_code": "712",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_RECEIVER_ERROR_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 11,
      "classificator": "E",
      "event_code": "313",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_SYSTEM_REBOOT",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 12,
      "classificator": "E",
      "event_code": "305",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_SYSTEM_STARTED",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 13,
      "classificator": "E",
      "event_code": "714",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_RECEIVER_UNPLUGGED",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 13,
      "classificator": "R",
      "event_code": "714",
      "group_no": "98",
      "zone_no": "1",
      "name": "EVENT_RECEIVER_UNPLUGGED_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 14,
      "classificator": "E",
      "event_code": "755",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_GSM_MODE",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 15,
      "classificator": "E",
      "event_code": "350",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_CONNECTION_TROUBLE",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 15,
      "classificator": "R",
      "event_code": "350",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_CONNECTION_TROUBLE_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 16,
      "classificator": "E",
      "event_code": "350",
      "group_no": "98",
      "zone_no": "0",
      "name": "OUTPUT_CONNECTION_TROUBLE",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 16,
      "classificator": "R",
      "event_code": "350",
      "group_no": "98",
      "zone_no": "0",
      "name": "OUTPUT_CONNECTION_TROUBLE_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 17,
      "classificator": "E",
      "event_code": "301",
      "group_no": "98",
      "zone_no": "0",
      "name": "POWER_CONNECTION_TROUBLE",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 17,
      "classificator": "R",
      "event_code": "301",
      "group_no": "98",
      "zone_no": "0",
      "name": "POWER_CONNECTION_TROUBLE_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 18,
      "classificator": "E",
      "event_code": "311",
      "group_no": "98",
      "zone_no": "0",
      "name": "POWER_BATTERY_MISSING",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 18,
      "classificator": "R",
      "event_code": "311",
      "group_no": "98",
      "zone_no": "0",
      "name": "POWER_BATTERY_MISSING_RESTORE",
      "is_restore": true,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 19,
      "classificator": "E",
      "event_code": "308",
      "group_no": "98",
      "zone_no": "0",
      "name": "SYSTEM_SHUTDOWN",
      "is_restore": false,
      "event_type": 10,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 20,
      "classificator": "E",
      "event_code": "330",
      "group_no": "98",
      "zone_no": "0",
      "name": "DUPLICATE_OBJECT_ID_DETECTED",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 21,
      "classificator": "E",
      "event_code": "010",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_LAN",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 21,
      "classificator": "R",
      "event_code": "011",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_LAN_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 22,
      "classificator": "E",
      "event_code": "012",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_WIFI",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 22,
      "classificator": "R",
      "event_code": "013",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_WIFI_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 23,
      "classificator": "E",
      "event_code": "014",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_GPRS",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 23,
      "classificator": "R",
      "event_code": "015",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_GPRS_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 24,
      "classificator": "E",
      "event_code": "016",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_SIGFOX",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 24,
      "classificator": "R",
      "event_code": "018",
      "group_no": "98",
      "zone_no": "0",
      "name": "CONNECTED_VIA_SIGFOX_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    }
  ],
  "outputs": [],
  "com_terminals": []
}

Next Steps

  1. 📋 Configure Core Settings: Start with General Settings
  2. 🗄️ Setup Database: Configure Database Connection
  3. 📡 Add Receivers: Setup Communication Receivers
  4. 👥 Create Users: Manage User Accounts

General Settings

System behavior and instance configuration.

Configuration

json
{
  "general": {
    "instance_name": "main",
    "generate_restore_on_new_session": false,
    "ignore_events_on_device_startup": false,
    "synchronize_device_time_interval": 7,
    "device_time_update_enabled": true,
    "prioritize_message_rl": true
  }
}

Fields

FieldTypeDescription
instance_namestringInstance identifier. Used in generating database name.
generate_restore_on_new_sessionbooleanGenerate restore events
ignore_events_on_device_startupbooleanIgnore startup events
synchronize_device_time_intervalintegerTime sync interval (days)
device_time_update_enabledbooleanEnable time updates
prioritize_message_rlbooleanPrioritize device Receiver and Line numbers.

Database Configuration

SQL database connection settings.

Configuration

json
{
  "database": {
    "enabled": true,
    "sqluser": "sqluser",
    "sqlpass": "sqlpass",
    "sqlhost": "localhost",
    "sqlport": 3306,
    "sqldatabase": "ipcom",
    "in_memory_device_management": false,
    "in_memory_event_management": false,
    "remove_lost_objects_enabled": true,
    "remove_lost_objects_age": 20,
    "remove_events_enabled": true,
    "remove_events_age": 15,
    "track_device_sessions": false,
    "device_session_log_count": 10
  },
}

Fields

FieldTypeDescription
enabledbooleanEnable database connection
sqluserstringDatabase username for authentication
sqlpassstringDatabase password for authentication
sqlhoststringDatabase server hostname or IP address
sqlportintegerDatabase server port number
sqldatabasestringDatabase name. If database does not exist IPCom will create it (make sure it has the rights needed)
in_memory_device_managementbooleanUse in-memory-only storage for device management instead of database + memory. Better performance, risk of losing data
in_memory_event_managementbooleanUse in-memory-only storage for event management instead of database + memory. Better performance, risk of losing data
remove_lost_objects_enabledbooleanEnable automatic removal of lost objects from database and memory
remove_lost_objects_ageintegerAge in days after which lost objects are removed
remove_events_enabledbooleanEnable automatic removal of old events from database
remove_events_ageintegerAge in days after which events are removed
track_device_sessionsbooleanEnable tracking of device sessions (in-memory only)
device_session_log_countintegerNumber of device session log entries to retain

API Settings

REST API server settings.

Configuration

json
{
  "api": {
    "api_port": 30003,
    "api_http_port": 8080,
    "api_jwt_secret": "a7e9c2f1b8d4a6c3e5f7b9d1a3c5e7f9b2d4a6c8e0f2b4d6a8c0e2f4b6d8a0c2e",
    "private_key": "cert/privateKey.pem",
    "public_key": "cert/serverCertificate.pem",
    "http_enabled": true
  },
}

Fields

FieldTypeDescription
api_portintegerHTTPS port
api_http_portintegerHTTP port
http_enabledbooleanEnable HTTP (insecure). Will only work in local networks
api_jwt_secretstringJWT secret
private_keystringSSL private key path. Used for HTTPS access. May be relative or absolute path. May add your own SSL certificate
public_keystringSSL certificate path. Used for HTTPS access. May be relative or absolute path. May add your own SSL certificate

Receivers Configuration

Communication channel setup for receiving data from various sources.

⚠️ Important: The id field must be unique across ALL receiver types. Each receiver (TCP, UDP, COM, Modem) must have a different ID value to avoid conflicts.

Configuration

json
{
  "receivers": {
    "tcp": [
      {
        "id": 1,
        "name": "TCP Receiver 1",
        "port": 10000,
        "receiver_number": 1,
        "line_number": 1,
        "encryption_password": "1234567890abcdef",
        "sia": {
          "time_deviation_negative": 10,
          "time_deviation_positive": 10
        }
      }
    ],
    "udp": [
      {
        "id": 2,
        "name": "UDP Receiver 1",
        "port": 10001,
        "receiver_number": 2,
        "line_number": 1,
        "encryption_password": "fedcba0987654321",
        "sia": {
          "time_deviation_negative": 5,
          "time_deviation_positive": 5
        }
      }
    ],
    "com": [
      {
        "id": 3,
        "name": "COM Receiver 1",
        "port_id": 1,
        "receiver_number": 3,
        "line_number": 1,
        "forward": true,
        "seek_objects": true
      }
    ],
    "modem": [
      {
        "id": 4,
        "name": "SMS Modem 1",
        "port_id": 2,
        "receiver_number": 4,
        "line_number": 1,
        "encryption_password": "abcdef1234567890"
      }
    ]
  }
}

Receiver Types

TCP Receivers

Network-based TCP receivers for IP communication. Fields:

FieldTypeDescription
idintegerUnique receiver identifier
namestringHuman-readable receiver name
portintegerTCP port number to listen on
receiver_numberintegerReceiver number for identification
line_numberintegerLine number for identification
encryption_passwordstring16-character encryption key for secure communication
siaobjectSIA protocol timing configuration
SIA Options:
FieldTypeDescription
--------------------------
time_deviation_negativeintegerNegative time deviation tolerance (seconds)
time_deviation_positiveintegerPositive time deviation tolerance (seconds)

UDP Receivers

Network-based UDP receivers for IP communication. Fields:

FieldTypeDescription
idintegerUnique receiver identifier
namestringHuman-readable receiver name
portintegerUDP port number to listen on
receiver_numberintegerReceiver number for identification
line_numberintegerLine number for identification
encryption_passwordstring16-character encryption key for secure communication
siaobjectSIA protocol timing configuration

COM Receivers

Serial communication receivers. Fields:

FieldTypeDescription
idintegerUnique receiver identifier
namestringHuman-readable receiver name
port_idintegerReference to COM terminal ID for communication
receiver_numberintegerReceiver number for identification
line_numberintegerLine number for identification
forwardbooleanEnable message forwarding
seek_objectsbooleanEnable automatic object discovery

📎 Port Reference: The port_id must match an existing COM terminal id from the COM Terminals configuration.

Modem Receivers

SMS modem receivers for cellular communication. Fields:

FieldTypeDescription
idintegerUnique receiver identifier
namestringHuman-readable receiver name
port_idintegerReference to COM terminal ID where SMS modem is connected
receiver_numberintegerReceiver number for identification
line_numberintegerLine number for identification
encryption_passwordstring16-character encryption key for decrypting SMS data

📎 Port Reference: The port_id must match an existing COM terminal id from the COM Terminals configuration.


Tracker Settings

Device tracking and timeout management for monitoring device connectivity and status.

Configuration

json
{
  "tracker": {
    "timeout_multiplier": 1,
    "timeout_tolerance": 60,
    "sms_timeout_multiplier": 1,
    "sms_timeout_tolerance": 60,
    "event_count_for_restore": 1,
    "event_count_for_restore_sms": 1
  }
}

Fields

FieldTypeDescription
timeout_multiplierintegerMultiplier for non SMS devices
timeout_toleranceintegerAdditional tolerance time in seconds for network communications
sms_timeout_multiplierintegerMultiplier for SMS communication timeout calculations
sms_timeout_toleranceintegerAdditional tolerance time in seconds for SMS communications
event_count_for_restoreintegerNumber of events required to trigger restore for network communications
event_count_for_restore_smsintegerNumber of events required to trigger restore for SMS communications

Timeout Calculations

The tracker uses different timeout mechanisms for network and SMS communications:

Network Communications (TCP/UDP)

  • Base Timeout: Calculated from device ping interval
  • Applied Formula: (base_timeout * timeout_multiplier) + timeout_tolerance
  • Purpose: Determines when a device is considered "lost" or disconnected

SMS Communications (Modem)

  • Base Timeout: Calculated from SMS ping interval
  • Applied Formula: (base_timeout * sms_timeout_multiplier) + sms_timeout_tolerance
  • Purpose: Accounts for slower SMS delivery and processing times

Restore Event Management

The tracker manages when "lost" devices are considered "restored":

Network Restore

  • Trigger: Device sends event_count_for_restore number of events
  • Default: 1 event required for restore
  • Use Case: Quick restoration for reliable network connections

SMS Restore

  • Trigger: Device sends event_count_for_restore_sms number of events
  • Default: 1 event required for restore
  • Use Case: SMS communications may need different restore criteria

Configuration Examples

Standard Configuration

json
{
  "tracker": {
    "timeout_multiplier": 1,
    "timeout_tolerance": 60,
    "sms_timeout_multiplier": 1,
    "sms_timeout_tolerance": 60,
    "event_count_for_restore": 1,
    "event_count_for_restore_sms": 1
  }
}

Conservative Configuration (Slower Timeouts)

json
{
  "tracker": {
    "timeout_multiplier": 2,
    "timeout_tolerance": 120,
    "sms_timeout_multiplier": 3,
    "sms_timeout_tolerance": 180,
    "event_count_for_restore": 2,
    "event_count_for_restore_sms": 3
  }
}

Aggressive Configuration (Faster Detection)

json
{
  "tracker": {
    "timeout_multiplier": 1,
    "timeout_tolerance": 30,
    "sms_timeout_multiplier": 1,
    "sms_timeout_tolerance": 60,
    "event_count_for_restore": 1,
    "event_count_for_restore_sms": 1
  }
}

Best Practices

Network Communications

  • Stable Networks: Use default multiplier (1) with moderate tolerance (60s)
  • Unstable Networks: Increase timeout_multiplier to 2-3 and tolerance to 120s+
  • High-Speed Requirements: Reduce timeout_tolerance to 30s but monitor false positives

SMS Communications

  • Reliable SMS: Use default settings with 1x multiplier
  • Poor Coverage: Increase sms_timeout_multiplier to 2-3x
  • Critical Systems: Set higher event_count_for_restore_sms for confirmation

Restore Settings

  • Quick Recovery: Keep restore counts at 1 for immediate restoration
  • False Positive Prevention: Increase restore counts to 2-3 for confirmation
  • Mixed Environment: Use different counts for network vs SMS based on reliability

Device States

The tracker manages these device states based on timeout settings:

StateDescriptionTrigger
OnlineDevice communicating normallyRegular heartbeats within timeout
OfflineDevice not respondingNo communication beyond calculated timeout
SMS modeDevice in SMS sending modeSMS received by the modem
UntrackedDevice is not trackedDevice never sent a ping message

COM Terminals

Serial and USB port management for device communication.

ℹ️ Auto-Discovery: COM terminals are automatically detected and configured at IPCom startup. The system scans the OS for available COM and USB ports and assigns unique IDs.

Configuration

json
{
  "com_terminals": [
    {
      "id": 1,
      "port": "COM1",
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1,
      "parity": "None",
      "flow_control": "None",
      "status": 0,
      "path": "COM1"
    },
    {
      "id": 2,
      "port": "COM2", 
      "baud_rate": 9600,
      "data_bits": 8,
      "stop_bits": 1,
      "parity": "None",
      "flow_control": "None",
      "status": 0,
      "path": "COM2"
    }
  ]
}

Fields

FieldTypeDescription
idintegerUnique terminal identifier (auto-assigned at creation)
portstringPort display name visible to users (e.g., "COM1", "ttyS1")
baud_rateintegerSerial communication speed in bits per second
data_bitsintegerNumber of data bits per frame (typically 7 or 8)
stop_bitsintegerNumber of stop bits (1 or 2)
paritystringParity checking ("none", "odd", "even")
flow_controlstringFlow control method ("None", "hardware", "software")
statusintegerTerminal status code (0=Unknown, 1=Missing)
pathstringPhysical port path in the operating system

Platform Differences

Windows

  • Port Name: COM1, COM2, etc.
  • Path: Same as port name (COM1, COM2)
  • Example: Both port and path would be "COM1"

Linux

  • Port Name: ttyS1, ttyUSB0, etc.
  • Path: Full device path (/dev/ttyS1, /dev/ttyUSB0)
  • Example: port = "ttyS1", path = "/dev/ttyS1"

Status Values

ValueNameDescription
0UnknownTerminal status not determined. May usually treat as OK
1MissingTerminal was present before but no longer detected now

Usage with Receivers

COM terminals are referenced by their id field in:

  • COM Receivers - port_id field
  • Modem Receivers - port_id field The port_id in receiver configurations must match an existing COM terminal id to establish the connection.

Auto-Discovery Process

  1. System Scan: IPCom scans the operating system for available serial and USB ports
  2. ID Assignment: Each discovered port receives a unique incremental ID starting from 1
  3. Configuration: Ports are added to the com_terminals array with default settings

💡 Tip: COM terminals are automatically managed. Manual configuration is typically not required unless changing serial parameters like baud rate or parity settings.


Users Management

User accounts, permissions, and access control configuration.

Configuration

json
{
  "users": [
    {
      "id": 1,
      "login": "administrator",
      "password": "admin",
      "name": "Admin",
      "scopes": [
        "users",
        "settings",
        "objects",
        "device_control",
        "events",
        "device_status",
        "omit_mpass",
        "restart_services",
        "turnoff_receiver",
        "license"
      ],
      "visible_receivers": {
        "all": true,
        "custom": []
      },
      "token_time": 3600,
      "api_key": ""
    },
    {
      "id": 2,
      "login": "events_user",
      "password": "events123",
      "name": "Events Monitor",
      "scopes": [
        "events",
        "device_status"
      ],
      "visible_receivers": {
        "all": false,
        "custom": [1, 2, 3]
      },
      "token_time": 1440,
      "api_key": ""
    }
  ]
}

ℹ️ Note: The api_key field is currently not implemented and should be left empty. API key authentication is planned for a future release.

Fields

FieldTypeDescription
idintegerUnique user identifier
loginstringUsername for authentication
passwordstringPlain text password for login
namestringHuman-readable display name
scopesarrayPermission scopes defining user capabilities
visible_receiversobjectAccess control for receivers visibility
token_timeintegerJWT token expiration time in minutes
api_keystring⚠️ Not implemented - API key for programmatic access (planned for future release)

Available Scopes

User permissions are controlled through scopes. Each scope grants specific capabilities:

ScopeDescription
usersManage user accounts and permissions
settingsAccess and modify system configuration
objectsView and manage tracked objects/devices
device_controlControl and configure devices
eventsView event logs and real-time events
omit_mpassBypass cloud access code requirement
restart_servicesRestart IPCom services
turnoff_receiverShutdown IPCom. In RL systems it will shutdown OS, otherwise only IPCom
licenseManage license

Visible Receivers

Controls which receivers a user can access and monitor:

json
{
  "visible_receivers": {
    "all": true,
    "custom": []
  }
}

Fields

FieldTypeDescription
allbooleanWhen true, user can access all receivers
customarraySpecific receiver IDs from Receivers configuration when all is false

Examples

Full Access:

json
{
  "all": true,
  "custom": []
}

Limited Access:

json
{
  "all": false,
  "custom": [1, 3, 5]
}

📎 Receiver Reference: The custom array must contain valid receiver id values from the Receivers configuration. These IDs can reference any combination of TCP, UDP, COM, or Modem receivers. Remember that receiver IDs must be unique across all receiver types.

Security Considerations

⚠️ Security Warning: Passwords are stored in plain text in the configuration file. Ensure proper file system permissions and secure storage of configuration files.

Best Practices

  1. Strong Passwords: Use complex passwords with mixed characters
  2. Minimal Scopes: Grant only necessary permissions for each user role
  3. Regular Rotation: Change passwords and API keys periodically
  4. File Permissions: Restrict configuration file access to authorized users only
  5. Token Expiration: Set appropriate token_time values based on security requirements

Common User Roles

Administrator

json
{
  "scopes": [
    "users", "settings", "objects", "device_control", 
    "events", "device_status", "restart_services", 
    "turnoff_receiver", "license"
  ],
  "visible_receivers": { "all": true, "custom": [] }
}

Events Monitor

json
{
  "scopes": ["events", "device_status"],
  "visible_receivers": { "all": true, "custom": [] }
}

Device Operator

json
{
  "scopes": ["objects", "device_control", "events"],
  "visible_receivers": { "all": false, "custom": [1, 2] }
}

Ignorable Startup Events

Configure events that should be ignored when devices restart. This prevents noise from expected startup events.

Configuration

json
{
  "ignorable_startup_events": [
    {
      "event_code": 304,
      "group_no": 0,
      "zone_no": 2049
    },
    {
      "event_code": 324,
      "group_no": 0,
      "zone_no": 1911
    },
    {
      "event_code": 1092,
      "group_no": 0,
      "zone_no": 7
    }
  ]
}

Event Definition

Each ignorable startup event is defined by three fields that must match exactly:

FieldTypeDescription
event_codeintegerEvent code in hexadecimal format (e.g., 304, 324, 721)
group_nointegerGroup number associated with the event (hexadecimal)
zone_nointegerZone number associated with the event (hexadecimal)

General Settings

Related startup behavior in general section:

  • ignore_events_on_device_startup: Global startup event filtering

Internal Events

Configure system-generated internal events for monitoring infrastructure health and device connectivity. These events provide visibility into system status and communication issues.

Configuration

json
{
  "internal_events": [
    {
      "enabled": true,
      "type": 0,
      "classificator": "E",
      "event_code": "762",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GPRS",
      "is_restore": false,
      "event_type": 11,
      "event_sub_type": 0
    },
    {
      "enabled": true,
      "type": 0,
      "classificator": "R",
      "event_code": "762",
      "group_no": "98",
      "zone_no": "0",
      "name": "EVENT_LOST_GPRS_RESTORE",
      "is_restore": true,
      "event_type": 11,
      "event_sub_type": 0
    }
  ]
}

Event Fields

Each internal event is configured with the following fields:

FieldTypeDescription
enabledbooleanEnable/disable this internal event
typeintegerInternal event type identifier (0-24)
classificatorstringEvent classification: "E" (Event) or "R" (Restore)
event_codestringEvent code in hexadecimal format
group_nostringGroup number in hexadecimal format
zone_nostringZone number in hexadecimal format
namestringHuman-readable event name
is_restorebooleanWhether this is a restore event
event_typeintegerEvent type classification (10=System, 11=Auxiliary)
event_sub_typeintegerEvent sub-type for additional categorization

Internal Event Types

Auxiliary Events (0-9)

GPRS/Data Connection Events
json
{
  "type": 0,
  "name": "EVENT_LOST_GPRS",
  "event_code": "762",
  "event_type": 11
}
  • Purpose: GPRS/data connection lost
  • Restore: EVENT_LOST_GPRS_RESTORE
GSM Connection Events
json
{
  "type": 1,
  "name": "EVENT_LOST_GSM", 
  "event_code": "752",
  "event_type": 11
}
  • Purpose: GSM cellular connection lost
  • Restore: EVENT_LOST_GSM_RESTORE
Mass Communication Events
json
{
  "type": 2,
  "name": "EVENT_MASS_LOST",
  "event_code": "704",
  "event_type": 11
}
  • Purpose: Multiple devices lost simultaneously
  • Related: EVENT_MASS_GPRS_RESTORE, EVENT_MASS_GSM_RESTORE
Network Connectivity Events
json
{
  "type": 5,
  "name": "EVENT_WAN_PING_NO_RESPONSE",
  "event_code": "732",
  "event_type": 10
}
  • Purpose: WAN ping test failed
  • Restore: EVENT_WAN_PING_NO_RESPONSE_RESTORE
json
{
  "type": 8,
  "name": "EVENT_WAN_LINK_LOST",
  "event_code": "733",
  "event_type": 10
}
  • Purpose: WAN link connectivity lost
  • Restore: EVENT_WAN_LINK_LOST_RESTORE

Receiver/Hardware Events (9-13)

Receiver Status Events
json
{
  "type": 9,
  "name": "EVENT_RECEIVER_NO_HEART_BEAT",
  "event_code": "713",
  "event_type": 10
}
  • Purpose: Receiver heartbeat timeout
  • Restore: EVENT_RECEIVER_NO_HEART_BEAT_RESTORE
json
{
  "type": 10,
  "name": "EVENT_RECEIVER_ERROR",
  "event_code": "712",
  "event_type": 10
}
  • Purpose: Receiver communication error
  • Restore: EVENT_RECEIVER_ERROR_RESTORE
json
{
  "type": 13,
  "name": "EVENT_RECEIVER_UNPLUGGED",
  "event_code": "714",
  "event_type": 10
}
  • Purpose: Physical receiver disconnection
  • Restore: EVENT_RECEIVER_UNPLUGGED_RESTORE

System Events (11-12, 19)

System Status Events
json
{
  "type": 11,
  "name": "EVENT_SYSTEM_REBOOT",
  "event_code": "313",
  "event_type": 10
}
  • Purpose: System reboot notification
  • No Restore: Single occurrence event
json
{
  "type": 12,
  "name": "EVENT_SYSTEM_STARTED",
  "event_code": "305",
  "event_type": 10
}
  • Purpose: System startup notification
  • No Restore: Single occurrence event
json
{
  "type": 19,
  "name": "SYSTEM_SHUTDOWN",
  "event_code": "308",
  "event_type": 10
}
  • Purpose: System shutdown notification
  • No Restore: Single occurrence event

Connection Method Events (21-24)

Network Connection Type Detection
json
{
  "type": 21,
  "name": "CONNECTED_VIA_LAN",
  "event_code": "010",
  "event_type": 11
}
  • Purpose: Device connected via LAN
  • Restore: CONNECTED_VIA_LAN_RESTORE
json
{
  "type": 22,
  "name": "CONNECTED_VIA_WIFI",
  "event_code": "012",
  "event_type": 11
}
  • Purpose: Device connected via WiFi
  • Restore: CONNECTED_VIA_WIFI_RESTORE
json
{
  "type": 23,
  "name": "CONNECTED_VIA_GPRS",
  "event_code": "014",
  "event_type": 11
}
  • Purpose: Device connected via GPRS/cellular data
  • Restore: CONNECTED_VIA_GPRS_RESTORE
json
{
  "type": 24,
  "name": "CONNECTED_VIA_SIGFOX",
  "event_code": "016",
  "event_type": 11
}
  • Purpose: Device connected via SigFox network
  • Restore: CONNECTED_VIA_SIGFOX_RESTORE

Power and Infrastructure Events (17-18, 20)

Power Events
json
{
  "type": 17,
  "name": "POWER_CONNECTION_TROUBLE",
  "event_code": "301",
  "event_type": 10
}
  • Purpose: Power supply issues detected
  • Restore: POWER_CONNECTION_TROUBLE_RESTORE
json
{
  "type": 18,
  "name": "POWER_BATTERY_MISSING",
  "event_code": "311",
  "event_type": 10
}
  • Purpose: Backup battery missing or failed
  • Restore: POWER_BATTERY_MISSING_RESTORE
System Integrity Events
json
{
  "type": 20,
  "name": "DUPLICATE_OBJECT_ID_DETECTED",
  "event_code": "330",
  "event_type": 11
}
  • Purpose: Duplicate device ID detected on network
  • No Restore: Configuration issue event

Event Classification

Event vs Restore

  • Event (E): Problem/issue detected (is_restore: false)
  • Restore (R): Problem resolved (is_restore: true)

Event Types

  • Type 10: System events (hardware, power, receivers)
  • Type 11: Communication events (network, connectivity)

Group and Zone Numbers

  • Group 98: Standard internal event group
  • Zone 0: Default zone for system events

Event Code Reference

Communication Events

TypeEvent CodeNameCategory
0762GPRS Lost/RestoreData Connection
1752GSM Lost/RestoreCellular Connection
2704Mass LostMulti-device
3764Mass GPRS RestoreMulti-device
4754Mass GSM RestoreMulti-device
5732WAN Ping Failed/RestoreNetwork
8733WAN Link Lost/RestoreNetwork

System Events

TypeEvent CodeNameCategory
9713Receiver HeartbeatHardware
10712Receiver ErrorHardware
11313System RebootSystem
12305System StartedSystem
13714Receiver UnpluggedHardware
19308System ShutdownSystem

Connection Type Events

TypeEvent CodeNameCategory
21010/011LAN ConnectionNetwork Type
22012/013WiFi ConnectionNetwork Type
23014/015GPRS ConnectionNetwork Type
24016/017SigFox ConnectionNetwork Type

Outputs Configuration

External system integrations for forwarding events and data to third-party systems.

Configuration

json
{
  "outputs": [
    {
      "id": 1,
      "name": "TCP Output to Monitoring Center",
      "enabled": true,
      "type": 0,
      "identificator": 1,
      "buffer_size": 1000,
      "protocol": 0,
      "oid": 1,
      "receiver_number": 0,
      "line_number": 0,
      "tcp_settings": {
        "host": "monitoring.center.com",
        "port": 9999,
        "heartbeat_enabled": true,
        "heartbeat_interval": 45
      },
      "assigned_receivers": [1, 2, 3],
      "filters": []
    },
    {
      "id": 2,
      "name": "JSON Server for API",
      "enabled": true,
      "type": 2,
      "identificator": 2,
      "buffer_size": 500,
      "protocol": 0,
      "oid": 0,
      "receiver_number": 0,
      "line_number": 0,
      "json_server_settings": {
        "port": 8090,
        "whitelist": ["192.168.1.15"],
        "encrypt": true,
        "encryption_key": "1234567890abcdef"
      },
      "assigned_receivers": [1, 4],
      "filters": []
    }
  ]
}

Fields

FieldTypeDescription
idintegerUnique output identifier
namestringHuman-readable output name
enabledbooleanEnable/disable output processing
typeintegerOutput type (see Output Types)
identificatorintegerOutput identificator for output related events. It wil be used as a zone number
buffer_sizeintegerInternal buffer size for queued events. If value is 0, default size of 1000 will be used
protocolintegerMessage protocol (see Output Protocols)
oidintegerAccount number (Object ID) for use in system or output events and heart beats
receiver_numberintegerVirtual receiver number. This will use when generating heart beats
line_numberintegerVirtual line number. This will use when generating heart beats
assigned_receiversarrayReceiver IDs from Receivers configuration
filtersarrayEvent filtering rules (see Output Filters)

📎 Receiver Reference: The assigned_receivers array must contain valid receiver id values from the Receivers configuration. These determine which receivers' events are processed by this output.

Output Types

Output types determine the connection method and data transmission approach:

TypeValueDescriptionRequired Settings
TCP0TCP client connection to external systemtcp_settings
COM1Serial port communicationcom_settings
JSON_SERVER2JSON-based server for API clientsjson_server_settings
TCP_SERVER3TCP server accepting incoming connectionsserver_settings
WEBHOOK4HTTP POST webhooks to external URLswebhook_settings

Output Protocols

Communication protocols define the message format and structure:

ProtocolValueDescription
Surgard0Standard Surgard protocol
Monas31Monas3 monitoring protocol
Surgard82Surgard with extended account number length (8 symbols) protocol
SurgardNoEnd3Surgard without end terminator symbol (0x14)
Ademco6854Ademco 685 protocol
Ademco685Cid5Ademco 685 with Contact ID
Surgard20006Surgard 2000 protocol
SiaDc097SIA DC-09 protocol
SurgardMlr2_LineWithAccount8Surgard MLR2 with account number length of 6 where line takes the takes two first character and account numebr the rest

Output Settings

Each output type requires specific settings configuration:

TCP Settings

For type: 0 (TCP client connections):

json
{
  "tcp_settings": {
    "host": "external.system.com",
    "port": 9999,
    "heartbeat_enabled": true,
    "heartbeat_interval": 45
  }
}
FieldTypeDescription
hoststringTarget host address or IP
portintegerTarget port number
heartbeat_enabledbooleanEnable periodic heartbeat messages
heartbeat_intervalintegerHeartbeat interval in seconds

JSON Server Settings

For type: 2 (JSON API server):

json
{
  "json_server_settings": {
    "port": 8090,
    "whitelist": ["192.168.1.15", "10.0.0.1"],
    "encrypt": true,
    "encryption_key": "1234567890abcdef"
  }
}
FieldTypeDescription
portintegerServer listening port
whitelistarrayAllowed client IP addresses
encryptbooleanEnable encryption for communications
encryption_keystring16-character encryption key

Server Settings

For type: 3 (TCP server):

json
{
  "server_settings": {
    "port": 8091,
    "whitelist": ["192.168.1.15"]
  }
}
FieldTypeDescription
portintegerServer listening port
whitelistarrayAllowed client IP addresses

COM Settings

For type: 1 (serial communication):

json
{
  "com_settings": {
    "id": 1,
    "heartbeat_enabled": false,
    "heartbeat_interval": 30
  }
}
FieldTypeDescription
idintegerReference to COM terminal ID
heartbeat_enabledbooleanEnable heartbeat on serial connection
heartbeat_intervalintegerHeartbeat interval in seconds

Webhook Settings

For type: 4 (HTTP webhooks):

json
{
  "webhook_settings": {
    "urls": [
      "https://api.example.com/webhook?event=[full_event]&account=[event_account]",
      "https://monitoring.system.com/events?code=[event_code]&zone=[event_zone]&receiver=[receiver_no]"
    ]
  }
}
FieldTypeDescription
urlsarrayTarget webhook URLs for HTTP GET requests

ℹ️ Note: Webhook outputs currently send HTTP GET requests only.

URL Placeholders

You can use the following placeholders in your webhook URLs:

PlaceholderDescription
[full_event]Complete generated event text for the selected protocol (hex string)
[event_classificator]Event classificator (E/R for event/restore)
[event_code]Event code number
[event_group]Event group number
[event_zone]Event zone number
[line_no]Line number
[receiver_no]Receiver number
[event_account]Account number of the event
Example URLs
https://api.monitoring.com/events?code=[event_code]&zone=[event_zone]&account=[event_account]
https://webhook.site/#!/12345?event=[full_event]
https://alerts.system.com/alarm?receiver=[receiver_no]&line=[line_no]&type=[event_classificator]

SIA DC-09 Settings

For protocol: 7 (SIA DC-09):

json
{
  "sia_dc09_settings": {
    "enable_encryption": true,
    "key": "1234567890abcdef"
  }
}
FieldTypeDescription
enable_encryptionbooleanEnable SIA encryption
keystring16-character encryption key

Output Filters

Event filtering allows selective processing of events based on receiver, timing, and event codes:

json
{
  "filters": [
    {
      "receiver_number": 1,
      "time": 300,
      "override_receiver_number": 10,
      "override_line_number": 1,
      "perform_override": true,
      "perform_conversion": false,
      "excluded_event_codes": ["130", "131", "132"]
    }
  ]
}
FieldTypeDescription
receiver_numberintegerFilter events by specific receiver number
timeintegerFilter duration in seconds from last signal
override_receiver_numberintegerReplace receiver number in output
override_line_numberintegerReplace line number in output
perform_overridebooleanEnable receiver/line number override
perform_conversionbooleanEnable event code conversion
excluded_event_codesarrayEvent codes to exclude (hex format)

Common Configurations

Monitoring Center TCP Output

json
{
  "type": 0,
  "protocol": 0,
  "tcp_settings": {
    "host": "monitoring.center.com",
    "port": 9999,
    "heartbeat_enabled": true,
    "heartbeat_interval": 60
  }
}

JSON API Server

json
{
  "type": 2,
  "protocol": 0,
  "json_server_settings": {
    "port": 8081,
    "whitelist": [],
    "encrypt": false,
    "encryption_key": ""
  }
}

SIA DC-09 Output

json
{
  "type": 0,
  "protocol": 7,
  "tcp_settings": {
    "host": "sia.receiver.com",
    "port": 5000
  },
  "sia_dc09_settings": {
    "enable_encryption": true,
    "key": "abcdef1234567890"
  }
}


Version: 9.0 (Documentation)

Released under the MIT License.