Skip to content

mortylabs/mqtt2influx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mqtt2influx

A lightweight Python tool (and companion Docker image) to bridge your MQTT sensor streams into InfluxDB for time-series analysis.

Python Version License


🤔 Why This Repo Exists

MQTT is a go-to protocol for IoT and sensor data transmission - but it doesn't store data.
InfluxDB is perfect for storing time-series data - but it doesn't talk MQTT out of the box.

mqtt2influx bridges that gap:

  • ✅ Subscribes to MQTT topics with minimal setup
  • ✅ Writes values directly into InfluxDB with timestamps
  • ✅ Enables easy graphing and querying with Grafana or Chronograf
  • ✅ Eliminates the need for custom Node-RED flows or Python scripts

Whether you're monitoring temperature sensors, home automation events, or custom devices - this repo gives you a fast path from MQTT to metrics.


📖 Table of Contents


🧰 Features

  • Simple yet powerful script to bridge MQTT → InfluxDB
  • Configurable via environment variables or .env file
  • Flexible topic-to-measurement mapping (topics.txt)
  • Ideal for IoT setups, telemetry collection, or sensor dashboards

🚀 Quickstart

git clone https://github.com/mortylabs/mqtt2influx.git
cd mqtt2influx
cp .env.example .env
nano .env  # configure MQTT + Influx credentials
pip install -r requirements.txt
python mqtt2influx.py

⚙️ Configuration

Start by copying the example config:

cp .env.example .env

Then edit .env to set your connection and subscription parameters:

Variable Description Required Example
MQTT_HOST MQTT broker hostname or IP mqtt.local
MQTT_PORT MQTT broker port 1883
MQTT_USER MQTT username (optional) myuser
MQTT_PASS MQTT password (optional) mypassword
INFLUX_URL Full URL to your InfluxDB server http://influx.local:8086
INFLUX_ORG InfluxDB organization name homelab
INFLUX_BUCKET InfluxDB bucket to store data mqtt_data
TOPICS_FILE Path to topic mapping file topics.txt

Next, define the topics you wish to subscribe to in the text file topics.txt as follows:

MY_TOPIC1    SHORT_NAME1
MY_TOPIC2    SHORT_NAME2

🗂️ MQTT Topics to Influx Mapping

Define which MQTT topics to subscribe to and how they map to InfluxDB measurements using a simple topics.txt file.

🔧 Example topics.txt

home/sensors/temperature temperature
home/sensors/humidity    humidity
garden/moisture/level    soil_moisture

Each line follows the format:

<mqtt_topic> <influx_measurement>

💡 Notes

  • Whitespace separates the MQTT topic from the desired InfluxDB measurement name.
  • Wildcards (e.g., home/+/temperature, sensors/#) can be used for grouped subscriptions.
  • The payload of each MQTT message is assumed to be a numeric value (e.g., temperature, voltage, etc.).
  • All data is timestamped automatically when written to InfluxDB.

💡 Pro tip: You can use wildcards like home/+/temperature in topics.txt to subscribe to topic groups.

🐳 Docker Support

Run mqtt2influx using Docker for easy deployment:

🔨 Build the Docker image

bash
./build.sh

This will build a minimal Python image with the required dependencies and your current config.

▶️ Run the container

./run.sh

Make sure your .env file and topics.txt are available in the container's context (or volume-mounted).

About

simple python and associated DockerFile to grab metrics from an MQTT broker and save the data into Influx

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published