Containerized BLE Edge Gateway
Built a containerized BLE gateway on embedded Linux to bridge sensor data into a reusable edge integration layer.
Case Snapshot
Role
Product-minded implementation: data model, interface behavior, integration path, and maintainable implementation artifacts.
Scope
I built a Podman-based Python gateway that connects to an ESP32 BLE sensor, parses environmental telemetry, and emits normalized timestamped readings. The container is configured to access the host Bluetooth stack through BlueZ...
Constraints
Container boundaries reduce blast radius, while Bluetooth access is limited to the specific service that needs BlueZ and D-Bus integration. Retry handling and timestamped parsing turn the gateway into a long-running edge...
Result
Parsed BLE sensor payloads in Python and exposed normalized timestamped output for downstream services.
Architecture
Node
An ESP32 BLE sensor publishes environmental readings using a lightweight custom device profile.
Edge
A Rock4 SE runs a containerized Python gateway that reads BLE data through BlueZ and D-Bus on the host.
Cloud
The output is designed to feed downstream MQTT and analytics layers rather than stay trapped inside the gateway host.
Node
An ESP32 BLE sensor publishes environmental readings using a lightweight custom device profile.
Edge
A Rock4 SE runs a containerized Python gateway that reads BLE data through BlueZ and D-Bus on the host.
Cloud
The output is designed to feed downstream MQTT and analytics layers rather than stay trapped inside the gateway host.
Architecture Views
Concise system views summarize the project boundary, deployment path, and data flow without adding implementation claims.
System overview diagram
Node
Deployment diagram
Edge
Data flow diagram
Cloud
Technical Decisions
- BlueZ and D-Bus integration from inside a containerized workflow
- Python telemetry parser for BLE environmental payloads
- Repeatable build and start scripts for embedded Linux deployment
- Normalized timestamped output for downstream systems
Challenges
- BLE payloads are awkward to operationalize on embedded Linux when host Bluetooth access, D-Bus, and container isolation all need to coexist.
- Container boundaries reduce blast radius, while Bluetooth access is limited to the specific service that needs BlueZ and D-Bus integration.
- Retry handling and timestamped parsing turn the gateway into a long-running edge component rather than a brittle development script.
Lessons Learned
- Parsed BLE sensor payloads in Python and exposed normalized timestamped output for downstream services.
- Ran BlueZ and D-Bus integration from a containerized Linux environment.
- Created the foundation for the secured MQTT gateway
Future Improvements
- Keep architecture views aligned with the implementation.
- Keep documentation concise: align README, architecture decisions, and screenshots.
Tech Stack
Artifacts
Related Project
Follow the adjacent case study to see how this project connects with the rest of the work.
Secure BLE MQTT Monitoring Platform
Built a Raspberry Pi 5 monitoring platform that ingests BLE sensor data, secures transport with TLS-enabled MQTT, processes events in Node-RED, stores metrics in InfluxDB, and visualizes them in Grafana.