2.1 KiB
2.1 KiB
1. Communication Architecture
Overview
The communication architecture for the ASF project is designed to be industrial-grade, ensuring reliability, low latency, and high throughput for critical operations like Over-the-Air (OTA) updates and real-time monitoring.
Primary & Secondary Communication Stack
The system utilizes a multi-layered communication approach to ensure connectivity even in challenging environments.
| Role | Technology | Why (Industrial Rationale) |
|---|---|---|
| Primary Uplink | Wi-Fi 802.11n (2.4 GHz) | Leverages existing infrastructure and provides high throughput necessary for OTA updates. |
| Peer-to-Peer | ESP-NOW | Provides deterministic, low-latency communication without dependency on an Access Point (AP). |
| Long-range Fallback | LoRa (External Module) | Ensures resilience at farm-scale distances where Wi-Fi may not reach. |
Note: Zigbee on ESP32-S3 is currently not considered industrial-mature in ESP-IDF. ESP-NOW is the preferred choice for reliable peer-to-peer communication.
Application Protocol
To avoid the pitfalls of raw TCP sockets or unversioned custom protocols, the system adopts MQTT over TLS 1.2.
| Item | Decision |
|---|---|
| Broker | Main Hub / Edge Gateway |
| QoS | QoS 1 (At least once delivery) |
| Retain | Used for configuration topics only |
| Payload | CBOR (Binary, versioned for efficiency and compatibility) |
| Topic Model | /farm/{site}/{house}/{node}/... |
Why MQTT?
- Store-and-Forward: Handles intermittent connectivity gracefully.
- Built-in Keepalive: Monitors connection health automatically.
- Industrial Tooling: Compatible with standard monitoring and management tools.
- Native Support: Stable implementation within the ESP-IDF framework.
Heartbeat & Liveness
A formalized heartbeat mechanism is implemented to feed into predictive maintenance systems.
- Interval: 10 seconds
- Timeout: 3 missed heartbeats (30 seconds) triggers an "offline" status.
- Payload includes: Uptime, firmware version, free heap memory, RSSI (signal strength), and an error bitmap.