Skip to content
Projects
Platform ComponentImplemented2026

Containerized BLE Edge Gateway

Built a containerized BLE gateway on embedded Linux to bridge sensor data into a reusable edge integration layer.

IoTEdgeLinuxContainerization

Core stack

PythonPodmanBlueZD-BusBLE

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

System design flow

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

PythonPodmanBlueZD-BusBLERock4 SE

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.