A small Python service that collects immersion-cooling telemetry from a Submer SmartPod on-prem RESTful API and publishes it to the Examon monitoring system over MQTT.
The service runs continuously, polling the Submer SmartPod for live, average, and configuration data at regular intervals and forwarding each metric to Examon as MQTT topics.
- Collects SmartPod immersion-cooling metrics from the Submer on-prem REST API — coolant/water temperatures and flow, power consumption, heat dissipation, mPUE (energy-efficiency ratio), pump status/RPM, CPU temperatures, and active/fixed errors and warnings.
- Transforms the JSON payload into the Examon data model, mapping each
measurement to a hierarchical MQTT topic under
org/tep/submer/.... - Publishes the transformed metrics to an MQTT broker consumed by Examon.
Because a live Submer SmartPod is not always available, the project also ships a
FastAPI mock server (data_gen.py) that generates realistic dummy telemetry for
local testing.
Submer SmartPod REST API ──► submer_collector.py ──► examon_collector.py ──► examon_publisher.py ──► MQTT broker ──► Examon
(or data_gen.py mock) (fetch live/avg/cfg) (JSON → Examon model) (paho-mqtt publish)
- Python 3.12
- Poetry
- An MQTT broker reachable by
examon_publisher.py
git clone https://github.com/MSKazemi/tep.git
cd tep
poetry installStart the FastAPI mock Submer API (optional, for local testing):
poetry run python data_gen.pyRun the collector/publisher loop:
poetry run python main.pymain.py collects live, average, and configuration data from the Submer API and
publishes the live data to the MQTT broker every 60 seconds.
.
├── main.py # Entry point: collect and publish on a loop
├── submer_collector.py # Fetch live / average / configuration data from the Submer API
├── examon_collector.py # Convert Submer JSON into the Examon data model (MQTT topics)
├── examon_publisher.py # Publish the Examon-formatted metrics to an MQTT broker
├── data_gen.py # FastAPI mock server that generates dummy Submer telemetry
├── pyproject.toml # Poetry project and dependencies
├── poetry.lock
└── tests/
- Submer API endpoint —
submer_collector.pytargetshttp://127.0.0.1:8000by default (the address of thedata_gen.pymock). Point it at a real SmartPod to collect live data. - MQTT broker — configure the broker host, port, and credentials in
examon_publisher.py.
- Submer SmartPod — an immersion (liquid) cooling unit for data-center and HPC hardware; it exposes an on-prem RESTful API for telemetry.
- Examon — an open monitoring framework for HPC systems and data centers that ingests metrics over MQTT.
- mPUE — a Submer-reported energy-efficiency ratio included in the telemetry.
The project header declares the MIT License. No LICENSE file is currently
included in the repository.