Usage Examples
Real-world scenarios and implementation examples
Scenario Overview
This example demonstrates a bulk update operation where the server sends new 2-bit binary image data to 8 ESL devices distributed across two mesh gateways.
Scenario: Morning price update for retail store
Devices: 8 ESL devices (4 per mesh gateway)
Operation: Bulk render with staggered delivery
Devices: 8 ESL devices (4 per mesh gateway)
Operation: Bulk render with staggered delivery
📚 Looking for Large-Scale Deployment?
For comprehensive examples including 1000+ ESL deployments with ultra-low power optimization and advanced caching strategies, see our Comprehensive Deployment Guide.
For comprehensive examples including 1000+ ESL deployments with ultra-low power optimization and advanced caching strategies, see our Comprehensive Deployment Guide.
Network Topology
Server Layer
Server
Source of Truth
Source of Truth
↓ Internet Connection ↓
Gateway Layer
Main Gateway
GW-MAIN-001
GW-MAIN-001
↓ WiFi-Mesh Network ↓
Mesh Gateways
Mesh Gateway 01
GW-MESH-001
GW-MESH-001
Mesh Gateway 02
GW-MESH-002
GW-MESH-002
↓ BLE Connections ↓
ESL Devices
ESL_BLE_001
ESL_BLE_002
ESL_BLE_003
ESL_BLE_004
ESL_BLE_002
ESL_BLE_003
ESL_BLE_004
ESL_BLE_005
ESL_BLE_006
ESL_BLE_007
ESL_BLE_008
ESL_BLE_006
ESL_BLE_007
ESL_BLE_008
Step-by-Step Message Flow
Detailed Message Examples
Server → Main Gateway (Bulk Operation)
Topic: esl/v1/gateway/main/GW-MAIN-001/bulk_render
PUBLISH
esl/v1/gateway/main/GW-MAIN-001/bulk_render
{
"api_version": "1.0",
"message_id": "bulk-render-001",
"timestamp": "2025-05-27T14:00:00.000Z",
"source": "server",
"destination": "GW-MAIN-001",
"type": "bulk_render",
"connection_info": {
"route": "direct_internet",
"connection_type": "internet"
},
"payload": {
"operation_id": "morning-price-update",
"total_devices": 8,
"mesh_distribution": {
"GW-MESH-001": ["ESL_BLE_001", "ESL_BLE_002", "ESL_BLE_003", "ESL_BLE_004"],
"GW-MESH-002": ["ESL_BLE_005", "ESL_BLE_006", "ESL_BLE_007", "ESL_BLE_008"]
},
"batch_config": {
"batch_size": 2,
"retry_policy": {
"max_retries": 3,
"retry_delay": 5000
}
},
"common_config": {
"display_size": "2.9",
"refresh_times": ["08:00", "12:00", "18:00"],
"encoding": "base64_2bit"
},
"device_data": {
"ESL_BLE_001": {
"image_data": {
"width": 296,
"height": 128,
"data": "Gx5kMnQ7...",
"checksum": "sha256:abc001..."
}
},
"ESL_BLE_002": {
"image_data": {
"width": 296,
"height": 128,
"data": "Hx6lNoR8...",
"checksum": "sha256:abc002..."
}
}
}
}
}
Main Gateway → Mesh Gateway 01
Topic: esl/v1/mesh/GW-MESH-001/batch_render
{
"api_version": "1.0",
"message_id": "mesh-batch-001",
"timestamp": "2025-05-27T14:00:05.000Z",
"source": "GW-MAIN-001",
"destination": "GW-MESH-001",
"type": "batch_render",
"connection_info": {
"route": "wifi_mesh",
"connection_type": "wifi_mesh",
"original_source": "server"
},
"payload": {
"operation_id": "morning-price-update",
"parent_message_id": "bulk-render-001",
"assigned_devices": ["ESL_BLE_001", "ESL_BLE_002", "ESL_BLE_003", "ESL_BLE_004"],
"batch_config": {
"batch_size": 2,
"ble_timeout": 60000
},
"device_data": {
"ESL_BLE_001": {
"image_data": {
"width": 296,
"height": 128,
"data": "Gx5kMnQ7...",
"checksum": "sha256:abc001..."
}
},
"ESL_BLE_002": {
"image_data": {
"width": 296,
"height": 128,
"data": "Hx6lNoR8...",
"checksum": "sha256:abc002..."
}
}
}
}
}
Mesh Gateway → ESL Device
Topic: esl/v1/ble/mesh/ESL_BLE_001/render_command
{
"api_version": "1.0",
"message_id": "esl-render-001",
"timestamp": "2025-05-27T14:00:10.000Z",
"source": "GW-MESH-001",
"destination": "ESL_BLE_001",
"type": "render_command",
"connection_info": {
"route": "via_mesh_gateway",
"connection_type": "ble",
"gateway_id": "GW-MESH-001",
"original_source": "server"
},
"payload": {
"operation_id": "morning-price-update",
"parent_message_id": "mesh-batch-001",
"display_config": {
"size": "2.9",
"orientation": "landscape",
"refresh_rate": "low_power"
},
"schedule": {
"immediate": true,
"refresh_times": ["08:00", "12:00", "18:00"],
"timezone": "UTC"
},
"image_data": {
"encoding": "base64_2bit",
"width": 296,
"height": 128,
"data": "Gx5kMnQ7...",
"checksum": "sha256:abc001..."
}
}
}
ESL Device → Acknowledgment
Topic: esl/v1/ble/mesh/ESL_BLE_001/render_ack
{
"api_version": "1.0",
"message_id": "ack-001",
"in_response_to": "esl-render-001",
"timestamp": "2025-05-27T14:00:45.000Z",
"source": "ESL_BLE_001",
"destination": "GW-MESH-001",
"type": "render_acknowledgment",
"connection_info": {
"route": "via_mesh_gateway",
"connection_type": "ble",
"gateway_id": "GW-MESH-001"
},
"payload": {
"operation_id": "morning-price-update",
"status": "success",
"execution_time": 35000,
"device_status": {
"battery_level": 92,
"signal_strength": -38,
"display_updated": true,
"next_wake_time": "2025-05-27T16:00:00.000Z"
},
"checksum_verified": true,
"errors": []
}
}
Device Status Tracking
Monitor the status of all devices involved in the bulk operation.
ESL_BLE_001
Online
Gateway:
GW-MESH-001
Battery:
92%
Signal:
-38 dBm
Last Update:
14:00:45
ESL_BLE_002
Online
Gateway:
GW-MESH-001
Battery:
88%
Signal:
-42 dBm
Last Update:
14:01:12
ESL_BLE_005
Sleeping
Gateway:
GW-MESH-002
Battery:
95%
Next Wake:
16:00:00
Last Update:
14:02:30
ESL_BLE_008
Offline
Gateway:
GW-MESH-002
Battery:
23%
Issue:
Low Battery
Last Seen:
13:45:00
Error Handling Examples
Device Offline Error
{
"api_version": "1.0",
"message_id": "error-001",
"in_response_to": "esl-render-008",
"timestamp": "2025-05-27T14:03:00.000Z",
"source": "GW-MESH-002",
"destination": "server",
"type": "error",
"error": {
"code": "DEVICE_OFFLINE",
"message": "ESL_BLE_008 is not reachable - device may be in deep sleep or battery depleted",
"details": {
"device_id": "ESL_BLE_008",
"last_seen": "2025-05-27T13:45:00.000Z",
"battery_level": 23,
"retry_attempts": 3,
"suggested_action": "Check device battery and physical location"
}
}
}
Checksum Mismatch Error
{
"api_version": "1.0",
"message_id": "error-002",
"in_response_to": "esl-render-003",
"timestamp": "2025-05-27T14:01:30.000Z",
"source": "ESL_BLE_003",
"destination": "GW-MESH-001",
"type": "error",
"error": {
"code": "CHECKSUM_MISMATCH",
"message": "Image data checksum verification failed",
"details": {
"expected_checksum": "sha256:abc003...",
"received_checksum": "sha256:def003...",
"data_size": 9472,
"corruption_detected": true,
"suggested_action": "Retransmit image data"
}
}
}
Performance Metrics
Metric | Value | Target | Status |
---|---|---|---|
Total Operation Time | 3 minutes 45 seconds | < 5 minutes | Good |
Success Rate | 87.5% (7/8 devices) | > 95% | Below Target |
Average Response Time | 35 seconds | < 60 seconds | Good |
Network Efficiency | 92% | > 90% | Good |
Note: ESL_BLE_008 failed due to low battery (23%). Consider implementing battery monitoring alerts for proactive maintenance.