Appearance
IPCom Configuration Documentation
Version: 9.0
Complete Configuration Reference Guide
Table of Contents
- Configuration Overview
- General Settings
- Database Configuration
- API Settings
- Receivers Configuration
- Tracker Settings
- COM Terminals
- Users Management
- Ignorable Startup Events
- Internal Events
- 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
| Property | Value | Description |
|---|---|---|
| Version | 9 | Current configuration schema version |
| Format | JSON | Human-readable configuration format |
| Encoding | UTF-8 | Character encoding |
| Schema | Validated | Strict schema validation |
Configuration Sections
Core System Settings
- General Settings - Instance name, startup behavior, time sync
- Database Settings - SQL connection, memory management, cleanup
- API Settings - HTTPS/HTTP ports, JWT security, SSL certificates
Communication & Input
- Receivers - TCP, UDP, COM, and Modem receiver configuration
- COM Terminals - Serial port settings and status
Security & Access
- Users - User accounts, permissions, API keys
- Visible Receivers - Access control per user
Event Management
- Internal Events - System-generated events configuration
- Tracker Settings - Device tracking and timeout settings
- Ignorable Events - Startup event filtering
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
- 📋 Configure Core Settings: Start with General Settings
- 🗄️ Setup Database: Configure Database Connection
- 📡 Add Receivers: Setup Communication Receivers
- 👥 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
| Field | Type | Description |
|---|---|---|
instance_name | string | Instance identifier. Used in generating database name. |
generate_restore_on_new_session | boolean | Generate restore events |
ignore_events_on_device_startup | boolean | Ignore startup events |
synchronize_device_time_interval | integer | Time sync interval (days) |
device_time_update_enabled | boolean | Enable time updates |
prioritize_message_rl | boolean | Prioritize 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
| Field | Type | Description |
|---|---|---|
enabled | boolean | Enable database connection |
sqluser | string | Database username for authentication |
sqlpass | string | Database password for authentication |
sqlhost | string | Database server hostname or IP address |
sqlport | integer | Database server port number |
sqldatabase | string | Database name. If database does not exist IPCom will create it (make sure it has the rights needed) |
in_memory_device_management | boolean | Use in-memory-only storage for device management instead of database + memory. Better performance, risk of losing data |
in_memory_event_management | boolean | Use in-memory-only storage for event management instead of database + memory. Better performance, risk of losing data |
remove_lost_objects_enabled | boolean | Enable automatic removal of lost objects from database and memory |
remove_lost_objects_age | integer | Age in days after which lost objects are removed |
remove_events_enabled | boolean | Enable automatic removal of old events from database |
remove_events_age | integer | Age in days after which events are removed |
track_device_sessions | boolean | Enable tracking of device sessions (in-memory only) |
device_session_log_count | integer | Number 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
| Field | Type | Description |
|---|---|---|
api_port | integer | HTTPS port |
api_http_port | integer | HTTP port |
http_enabled | boolean | Enable HTTP (insecure). Will only work in local networks |
api_jwt_secret | string | JWT secret |
private_key | string | SSL private key path. Used for HTTPS access. May be relative or absolute path. May add your own SSL certificate |
public_key | string | SSL 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
idfield 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:
| Field | Type | Description |
|---|---|---|
id | integer | Unique receiver identifier |
name | string | Human-readable receiver name |
port | integer | TCP port number to listen on |
receiver_number | integer | Receiver number for identification |
line_number | integer | Line number for identification |
encryption_password | string | 16-character encryption key for secure communication |
sia | object | SIA protocol timing configuration |
| SIA Options: | ||
| Field | Type | Description |
| ------- | ------ | ------------- |
time_deviation_negative | integer | Negative time deviation tolerance (seconds) |
time_deviation_positive | integer | Positive time deviation tolerance (seconds) |
UDP Receivers
Network-based UDP receivers for IP communication. Fields:
| Field | Type | Description |
|---|---|---|
id | integer | Unique receiver identifier |
name | string | Human-readable receiver name |
port | integer | UDP port number to listen on |
receiver_number | integer | Receiver number for identification |
line_number | integer | Line number for identification |
encryption_password | string | 16-character encryption key for secure communication |
sia | object | SIA protocol timing configuration |
COM Receivers
Serial communication receivers. Fields:
| Field | Type | Description |
|---|---|---|
id | integer | Unique receiver identifier |
name | string | Human-readable receiver name |
port_id | integer | Reference to COM terminal ID for communication |
receiver_number | integer | Receiver number for identification |
line_number | integer | Line number for identification |
forward | boolean | Enable message forwarding |
seek_objects | boolean | Enable automatic object discovery |
📎 Port Reference: The
port_idmust match an existing COM terminalidfrom the COM Terminals configuration.
Modem Receivers
SMS modem receivers for cellular communication. Fields:
| Field | Type | Description |
|---|---|---|
id | integer | Unique receiver identifier |
name | string | Human-readable receiver name |
port_id | integer | Reference to COM terminal ID where SMS modem is connected |
receiver_number | integer | Receiver number for identification |
line_number | integer | Line number for identification |
encryption_password | string | 16-character encryption key for decrypting SMS data |
📎 Port Reference: The
port_idmust match an existing COM terminalidfrom 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
| Field | Type | Description |
|---|---|---|
timeout_multiplier | integer | Multiplier for non SMS devices |
timeout_tolerance | integer | Additional tolerance time in seconds for network communications |
sms_timeout_multiplier | integer | Multiplier for SMS communication timeout calculations |
sms_timeout_tolerance | integer | Additional tolerance time in seconds for SMS communications |
event_count_for_restore | integer | Number of events required to trigger restore for network communications |
event_count_for_restore_sms | integer | Number 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_restorenumber 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_smsnumber 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_multiplierto 2-3 and tolerance to 120s+ - High-Speed Requirements: Reduce
timeout_toleranceto 30s but monitor false positives
SMS Communications
- Reliable SMS: Use default settings with 1x multiplier
- Poor Coverage: Increase
sms_timeout_multiplierto 2-3x - Critical Systems: Set higher
event_count_for_restore_smsfor 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:
| State | Description | Trigger |
|---|---|---|
| Online | Device communicating normally | Regular heartbeats within timeout |
| Offline | Device not responding | No communication beyond calculated timeout |
| SMS mode | Device in SMS sending mode | SMS received by the modem |
| Untracked | Device is not tracked | Device 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
| Field | Type | Description |
|---|---|---|
id | integer | Unique terminal identifier (auto-assigned at creation) |
port | string | Port display name visible to users (e.g., "COM1", "ttyS1") |
baud_rate | integer | Serial communication speed in bits per second |
data_bits | integer | Number of data bits per frame (typically 7 or 8) |
stop_bits | integer | Number of stop bits (1 or 2) |
parity | string | Parity checking ("none", "odd", "even") |
flow_control | string | Flow control method ("None", "hardware", "software") |
status | integer | Terminal status code (0=Unknown, 1=Missing) |
path | string | Physical port path in the operating system |
Platform Differences
Windows
- Port Name:
COM1,COM2, etc. - Path: Same as port name (
COM1,COM2) - Example: Both
portandpathwould be"COM1"
Linux
- Port Name:
ttyS1,ttyUSB0, etc. - Path: Full device path (
/dev/ttyS1,/dev/ttyUSB0) - Example:
port="ttyS1",path="/dev/ttyS1"
Status Values
| Value | Name | Description |
|---|---|---|
0 | Unknown | Terminal status not determined. May usually treat as OK |
1 | Missing | Terminal was present before but no longer detected now |
Usage with Receivers
COM terminals are referenced by their id field in:
- COM Receivers -
port_idfield - Modem Receivers -
port_idfield Theport_idin receiver configurations must match an existing COM terminalidto establish the connection.
Auto-Discovery Process
- System Scan: IPCom scans the operating system for available serial and USB ports
- ID Assignment: Each discovered port receives a unique incremental ID starting from 1
- Configuration: Ports are added to the
com_terminalsarray 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_keyfield is currently not implemented and should be left empty. API key authentication is planned for a future release.
Fields
| Field | Type | Description |
|---|---|---|
id | integer | Unique user identifier |
login | string | Username for authentication |
password | string | Plain text password for login |
name | string | Human-readable display name |
scopes | array | Permission scopes defining user capabilities |
visible_receivers | object | Access control for receivers visibility |
token_time | integer | JWT token expiration time in minutes |
api_key | string | ⚠️ Not implemented - API key for programmatic access (planned for future release) |
Available Scopes
User permissions are controlled through scopes. Each scope grants specific capabilities:
| Scope | Description |
|---|---|
users | Manage user accounts and permissions |
settings | Access and modify system configuration |
objects | View and manage tracked objects/devices |
device_control | Control and configure devices |
events | View event logs and real-time events |
omit_mpass | Bypass cloud access code requirement |
restart_services | Restart IPCom services |
turnoff_receiver | Shutdown IPCom. In RL systems it will shutdown OS, otherwise only IPCom |
license | Manage license |
Visible Receivers
Controls which receivers a user can access and monitor:
json
{
"visible_receivers": {
"all": true,
"custom": []
}
}Fields
| Field | Type | Description |
|---|---|---|
all | boolean | When true, user can access all receivers |
custom | array | Specific 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
customarray must contain valid receiveridvalues 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
- Strong Passwords: Use complex passwords with mixed characters
- Minimal Scopes: Grant only necessary permissions for each user role
- Regular Rotation: Change passwords and API keys periodically
- File Permissions: Restrict configuration file access to authorized users only
- Token Expiration: Set appropriate
token_timevalues 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:
| Field | Type | Description |
|---|---|---|
event_code | integer | Event code in hexadecimal format (e.g., 304, 324, 721) |
group_no | integer | Group number associated with the event (hexadecimal) |
zone_no | integer | Zone number associated with the event (hexadecimal) |
Related Configuration
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:
| Field | Type | Description |
|---|---|---|
enabled | boolean | Enable/disable this internal event |
type | integer | Internal event type identifier (0-24) |
classificator | string | Event classification: "E" (Event) or "R" (Restore) |
event_code | string | Event code in hexadecimal format |
group_no | string | Group number in hexadecimal format |
zone_no | string | Zone number in hexadecimal format |
name | string | Human-readable event name |
is_restore | boolean | Whether this is a restore event |
event_type | integer | Event type classification (10=System, 11=Auxiliary) |
event_sub_type | integer | Event 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
| Type | Event Code | Name | Category |
|---|---|---|---|
| 0 | 762 | GPRS Lost/Restore | Data Connection |
| 1 | 752 | GSM Lost/Restore | Cellular Connection |
| 2 | 704 | Mass Lost | Multi-device |
| 3 | 764 | Mass GPRS Restore | Multi-device |
| 4 | 754 | Mass GSM Restore | Multi-device |
| 5 | 732 | WAN Ping Failed/Restore | Network |
| 8 | 733 | WAN Link Lost/Restore | Network |
System Events
| Type | Event Code | Name | Category |
|---|---|---|---|
| 9 | 713 | Receiver Heartbeat | Hardware |
| 10 | 712 | Receiver Error | Hardware |
| 11 | 313 | System Reboot | System |
| 12 | 305 | System Started | System |
| 13 | 714 | Receiver Unplugged | Hardware |
| 19 | 308 | System Shutdown | System |
Connection Type Events
| Type | Event Code | Name | Category |
|---|---|---|---|
| 21 | 010/011 | LAN Connection | Network Type |
| 22 | 012/013 | WiFi Connection | Network Type |
| 23 | 014/015 | GPRS Connection | Network Type |
| 24 | 016/017 | SigFox Connection | Network 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
| Field | Type | Description |
|---|---|---|
id | integer | Unique output identifier |
name | string | Human-readable output name |
enabled | boolean | Enable/disable output processing |
type | integer | Output type (see Output Types) |
identificator | integer | Output identificator for output related events. It wil be used as a zone number |
buffer_size | integer | Internal buffer size for queued events. If value is 0, default size of 1000 will be used |
protocol | integer | Message protocol (see Output Protocols) |
oid | integer | Account number (Object ID) for use in system or output events and heart beats |
receiver_number | integer | Virtual receiver number. This will use when generating heart beats |
line_number | integer | Virtual line number. This will use when generating heart beats |
assigned_receivers | array | Receiver IDs from Receivers configuration |
filters | array | Event filtering rules (see Output Filters) |
📎 Receiver Reference: The
assigned_receiversarray must contain valid receiveridvalues 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:
| Type | Value | Description | Required Settings |
|---|---|---|---|
TCP | 0 | TCP client connection to external system | tcp_settings |
COM | 1 | Serial port communication | com_settings |
JSON_SERVER | 2 | JSON-based server for API clients | json_server_settings |
TCP_SERVER | 3 | TCP server accepting incoming connections | server_settings |
WEBHOOK | 4 | HTTP POST webhooks to external URLs | webhook_settings |
Output Protocols
Communication protocols define the message format and structure:
| Protocol | Value | Description |
|---|---|---|
Surgard | 0 | Standard Surgard protocol |
Monas3 | 1 | Monas3 monitoring protocol |
Surgard8 | 2 | Surgard with extended account number length (8 symbols) protocol |
SurgardNoEnd | 3 | Surgard without end terminator symbol (0x14) |
Ademco685 | 4 | Ademco 685 protocol |
Ademco685Cid | 5 | Ademco 685 with Contact ID |
Surgard2000 | 6 | Surgard 2000 protocol |
SiaDc09 | 7 | SIA DC-09 protocol |
SurgardMlr2_LineWithAccount | 8 | Surgard 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
}
}| Field | Type | Description |
|---|---|---|
host | string | Target host address or IP |
port | integer | Target port number |
heartbeat_enabled | boolean | Enable periodic heartbeat messages |
heartbeat_interval | integer | Heartbeat 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"
}
}| Field | Type | Description |
|---|---|---|
port | integer | Server listening port |
whitelist | array | Allowed client IP addresses |
encrypt | boolean | Enable encryption for communications |
encryption_key | string | 16-character encryption key |
Server Settings
For type: 3 (TCP server):
json
{
"server_settings": {
"port": 8091,
"whitelist": ["192.168.1.15"]
}
}| Field | Type | Description |
|---|---|---|
port | integer | Server listening port |
whitelist | array | Allowed client IP addresses |
COM Settings
For type: 1 (serial communication):
json
{
"com_settings": {
"id": 1,
"heartbeat_enabled": false,
"heartbeat_interval": 30
}
}| Field | Type | Description |
|---|---|---|
id | integer | Reference to COM terminal ID |
heartbeat_enabled | boolean | Enable heartbeat on serial connection |
heartbeat_interval | integer | Heartbeat 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]"
]
}
}| Field | Type | Description |
|---|---|---|
urls | array | Target 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:
| Placeholder | Description |
|---|---|
[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"
}
}| Field | Type | Description |
|---|---|---|
enable_encryption | boolean | Enable SIA encryption |
key | string | 16-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"]
}
]
}| Field | Type | Description |
|---|---|---|
receiver_number | integer | Filter events by specific receiver number |
time | integer | Filter duration in seconds from last signal |
override_receiver_number | integer | Replace receiver number in output |
override_line_number | integer | Replace line number in output |
perform_override | boolean | Enable receiver/line number override |
perform_conversion | boolean | Enable event code conversion |
excluded_event_codes | array | Event 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)