Management Overview
The ESL MQTT API provides comprehensive device management capabilities, from initial provisioning to ongoing maintenance and monitoring. This guide covers all aspects of ESL device lifecycle management.
Key Management Areas:
Device provisioning and registration
Configuration management
Content updates and scheduling
Health monitoring and maintenance
Firmware updates
Lifecycle management
Device Provisioning
Provisioning Workflow
1
Unboxing & Power On
Device enters provisioning mode automatically on first boot
2
Network Discovery
WiFi: AP mode for configuration BLE: Advertising for pairing
3
Initial Configuration
Set device ID, network credentials, server details
4
Registration
Device registers with server and receives initial configuration
5
First Render
Display test pattern or assigned content
Provisioning Messages
Device Registration Request
{
"api_version": "1.0",
"message_id": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": "2025-05-27T10:30:00.000Z",
"source": "ESL_NEW_001",
"destination": "server",
"type": "registration_request",
"payload": {
"device_info": {
"model": "ZKC29B-E4",
"firmware_version": "2.1.0",
"hardware_version": "1.0",
"serial_number": "SN2025052700001",
"capabilities": {
"display": {
"size": "2.9",
"resolution": "296x128",
"colors": ["white", "black", "red", "yellow"]
},
"connectivity": ["ble"],
"sensors": ["temperature", "battery"],
"features": ["partial_update", "low_power_mode"]
}
},
"network_info": {
"connection_type": "ble",
"gateway_id": "GW-MESH-001",
"signal_strength": -65
}
}
}
Registration Response
{
"api_version": "1.0",
"message_id": "660e8400-e29b-41d4-a716-446655440001",
"timestamp": "2025-05-27T10:30:01.000Z",
"source": "server",
"destination": "ESL_NEW_001",
"type": "registration_response",
"payload": {
"status": "success",
"device_id": "ESL_BLE_001",
"configuration": {
"display_settings": {
"orientation": "landscape",
"refresh_mode": "full",
"power_save_enabled": true
},
"schedule": {
"wake_times": ["08:00", "12:00", "18:00"],
"timezone": "UTC",
"slot_offset_ms": 0
},
"server_endpoints": {
"primary": "mqtt://server.example.com:1883",
"backup": "mqtt://backup.example.com:1883"
}
}
}
}
Bulk Provisioning
For large deployments, use CSV import or automated provisioning:
serial_number,device_id,location,gateway_id,wake_schedule
SN2025052700001,ESL_BLE_001,Aisle-1-Shelf-A,GW-MESH-001,standard
SN2025052700002,ESL_BLE_002,Aisle-1-Shelf-B,GW-MESH-001,standard
SN2025052700003,ESL_BLE_003,Aisle-2-Shelf-A,GW-MESH-002,frequent
SN2025052700004,ESL_WIFI_001,Entrance-Display,direct,realtime
Configuration Management
Display Settings
Network Config
Schedule Settings
Advanced Options
Display Configuration
Update Display Settings
{
"type": "config_update",
"payload": {
"display_settings": {
"orientation": "landscape",
"brightness": 100,
"contrast": 50,
"refresh_mode": "partial",
"dithering_enabled": true,
"color_mapping": {
"white": 0,
"black": 1,
"red": 2,
"yellow": 3
},
"power_save_settings": {
"enabled": true,
"idle_timeout_minutes": 30,
"deep_sleep_enabled": true
}
}
}
}
Display Modes
Mode
Description
Power Usage
Update Speed
Full Refresh
Complete screen update, best quality
High
2-3 seconds
Partial Update
Update changed regions only
Medium
0.5-1 second
Fast Mode
Quick update, may have ghosting
Low
<0.5 second
Ultra Low Power
Minimal updates, maximum battery
Minimal
3-5 seconds
Network Configuration
WiFi ESL Network Settings
{
"type": "config_update",
"payload": {
"network_settings": {
"wifi": {
"ssid": "ESL-Network",
"password": "encrypted_password",
"security": "WPA2-PSK",
"channel": "auto",
"power_save": "enabled"
},
"mqtt": {
"broker_url": "mqtt://server.example.com:1883",
"username": "esl_device",
"password": "encrypted_password",
"keep_alive": 60,
"qos": 1,
"clean_session": true
},
"fallback": {
"ap_mode_timeout": 300,
"retry_count": 3,
"retry_delay": 5000
}
}
}
}
BLE ESL Gateway Assignment
{
"type": "gateway_assignment",
"payload": {
"primary_gateway": "GW-MESH-001",
"backup_gateways": ["GW-MESH-002", "GW-MAIN-001"],
"connection_params": {
"advertising_interval": 1000,
"connection_interval": 50,
"slave_latency": 4,
"supervision_timeout": 4000
}
}
}
Schedule Configuration
Wake Schedule Templates
🏪 Retail Standard
{
"name": "retail_standard",
"wake_times": ["06:00", "09:00", "12:00", "15:00", "18:00", "21:00"],
"business_hours": {
"open": "08:00",
"close": "22:00"
}
}
🏢 Office Hours
{
"name": "office_hours",
"wake_times": ["08:00", "12:00", "17:00"],
"weekend_schedule": {
"enabled": false
}
}
🏥 24/7 Operations
{
"name": "always_on",
"wake_times": ["00:00", "04:00", "08:00", "12:00", "16:00", "20:00"],
"night_mode": {
"reduced_frequency": false
}
}
Custom Schedule Definition
{
"type": "schedule_update",
"payload": {
"schedule": {
"type": "custom",
"timezone": "America/New_York",
"regular_schedule": {
"monday": ["08:00", "12:00", "18:00"],
"tuesday": ["08:00", "12:00", "18:00"],
"wednesday": ["08:00", "12:00", "15:00", "18:00"],
"thursday": ["08:00", "12:00", "18:00"],
"friday": ["08:00", "11:00", "14:00", "17:00", "20:00"],
"saturday": ["09:00", "13:00", "17:00", "21:00"],
"sunday": ["10:00", "14:00", "18:00"]
},
"special_dates": {
"2025-12-24": ["08:00", "10:00", "12:00", "14:00", "16:00"],
"2025-12-25": ["12:00"]
}
}
}
}
Advanced Configuration
Sensor Settings
{
"type": "config_update",
"payload": {
"sensor_config": {
"temperature": {
"enabled": true,
"reporting_interval": 3600,
"thresholds": {
"low": 0,
"high": 40,
"alert_on_breach": true
}
},
"battery": {
"low_threshold": 20,
"critical_threshold": 10,
"reporting_interval": 86400
},
"motion": {
"enabled": false,
"sensitivity": "medium"
}
}
}
}
Debug and Diagnostics
{
"type": "config_update",
"payload": {
"debug_settings": {
"log_level": "info",
"diagnostic_mode": false,
"test_patterns": {
"enabled": false,
"pattern": "checkerboard"
},
"performance_monitoring": {
"enabled": true,
"metrics": ["render_time", "battery_usage", "connection_quality"]
}
}
}
}
Content Management
Content Types
💰 Price Tags
Product name, price, unit price, promotions
📊 Information Displays
Product details, specifications, QR codes
🏷️ Promotional Tags
Sale indicators, special offers, limited time
📍 Location Markers
Aisle numbers, department signs, directions
Image Preparation
Best practices for preparing images for ESL displays:
Image Guidelines:
Use exact display resolution (e.g., 296×128 for 2.9")
Limit to 4 colors: White, Black, Red, Yellow
Use high contrast for better readability
Avoid small text (<12pt equivalent)
Test dithering for gradients and photos
Template System
{
"template_id": "price_tag_v1",
"layout": {
"zones": [
{
"id": "product_name",
"type": "text",
"bounds": { "x": 10, "y": 10, "width": 276, "height": 40 },
"style": { "font": "bold", "size": 24, "color": "black" }
},
{
"id": "price",
"type": "text",
"bounds": { "x": 10, "y": 50, "width": 150, "height": 60 },
"style": { "font": "bold", "size": 48, "color": "black" }
},
{
"id": "unit_price",
"type": "text",
"bounds": { "x": 170, "y": 70, "width": 116, "height": 20 },
"style": { "font": "regular", "size": 14, "color": "black" }
},
{
"id": "promo_banner",
"type": "rectangle",
"bounds": { "x": 0, "y": 0, "width": 296, "height": 30 },
"style": { "fill": "red", "visible": "${has_promotion}" }
},
{
"id": "promo_text",
"type": "text",
"bounds": { "x": 148, "y": 5, "width": 296, "height": 20 },
"style": { "font": "bold", "size": 16, "color": "white", "align": "center" }
}
]
}
}
Monitoring & Maintenance
Health Monitoring
Metric
Good
Warning
Critical
Action
Battery Level
>50%
20-50%
<20%
Schedule replacement
Signal Strength
>-70 dBm
-70 to -85 dBm
<-85 dBm
Relocate gateway/device
Update Success Rate
>95%
80-95%
<80%
Check connectivity
Temperature
0-40°C
-10-0°C, 40-50°C
<-10°C, >50°C
Environmental control
Last Check-in
<24 hours
24-48 hours
>48 hours
Investigate device
Status Dashboard Example
{
"dashboard": {
"total_devices": 1250,
"device_status": {
"online": 1205,
"offline": 45,
"maintenance": 12
},
"battery_status": {
"good": 1100,
"low": 125,
"critical": 25
},
"recent_alerts": [
{
"device_id": "ESL_BLE_042",
"type": "battery_critical",
"level": 8,
"timestamp": "2025-05-27T14:30:00Z"
},
{
"device_id": "ESL_WIFI_003",
"type": "connection_lost",
"last_seen": "2025-05-27T12:00:00Z"
}
]
}
}
Maintenance Procedures
1
Regular Health Check
Query all devices for status every 24 hours
2
Battery Monitoring
Track trends and predict replacement needs
3
Display Testing
Periodic full refresh to prevent image retention
4
Firmware Updates
Roll out updates in batches during off-hours
5
Performance Analysis
Review logs and optimize configurations
Firmware Updates
Update Process
Firmware updates are critical for security, features, and bug fixes. The ESL system supports OTA (Over-The-Air) updates.
Firmware Update Message
{
"api_version": "1.0",
"type": "firmware_update",
"payload": {
"firmware_info": {
"version": "2.2.0",
"release_date": "2025-05-15",
"size_bytes": 524288,
"checksum": "sha256:7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730",
"release_notes": "Bug fixes and performance improvements"
},
"update_config": {
"update_window": {
"start": "02:00",
"end": "05:00",
"timezone": "local"
},
"strategy": "rolling",
"batch_size": 10,
"retry_policy": {
"max_attempts": 3,
"backoff_minutes": 30
}
},
"download_url": "https://updates.example.com/firmware/esl/2.2.0/esl-ble-fw-2.2.0.bin"
}
}
Update Strategies
Strategy
Description
Pros
Cons
Rolling Update
Update devices in small batches
Safe, can halt if issues
Takes longer
Canary
Test on small group first
Very safe, early detection
Complex management
Big Bang
Update all at once
Fast completion
Risky, hard to rollback
Scheduled
Update during maintenance window
Predictable, off-hours
Fixed timing