Commit 310045b9 authored by Gezer's avatar Gezer
Browse files

deleted all the dublicates and cleaned the repo

No related merge requests found
Showing with 0 additions and 343 deletions
+0 -343
# InfluxDB config
INFLUXDB_URL=http://localhost:8086
INFLUXDB_ORG=docs
INFLUXDB_BUCKET=co2-test
INFLUXDB_TOKEN=jTTnLJmL5w2Z1IlkKJzkwDreWJ62HdDWT5_RS0J3Rbm28AxPkUZfU_sIPaG3aoLQ5MklO_Gn9y23HtU38yR0Nw==
# (Optional) MQTT config, falls du das auch variabel machen willst
MQTT_BROKER_URL="172.20.10.12"
MQTT_TOPIC="co2/#"
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
class InfluxDBWriter:
def __init__(self, url: str, token: str, org: str, bucket: str):
self.client = InfluxDBClient(url=url, token=token, org=org)
self.write_api = self.client.write_api(write_options=SYNCHRONOUS)
self.bucket = bucket
self.org = org
def write_point(self, measurement: str, tags: dict, fields: dict, timestamp=None):
point = Point(measurement)
for k, v in tags.items():
point.tag(k, v)
for k, v in fields.items():
point.field(k, v)
if timestamp:
point.time(timestamp, WritePrecision.NS)
self.write_api.write(bucket=self.bucket, org=self.org, record=point)
import json
from datetime import datetime
import paho.mqtt.client as mqtt
from mqtt_influx_backend import InfluxDBWriter
class MQTTClientHandler:
def __init__(self, broker_url: str, topic: str, influx_writer: InfluxDBWriter):
self.broker_url = broker_url
self.topic = topic
self.influx_writer = influx_writer
self.client = mqtt.Client()
self.client.on_connect = self.on_connect
self.client.on_message = self.on_message
def on_connect(self, client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe(self.topic)
def on_message(self, client, userdata, msg):
utfMgs = msg.payload.decode("utf-8")
#dictionary = json.loads(utfMgs)
print(utfMgs)
print(utfMgs)
print(utfMgs)
data = utfMgs
try:
value = float(data.get("co2"))
self.influx_writer.write_point(
measurement="temperature",
tags={"topic": msg.topic},
fields={"value": value},
timestamp=datetime.utcnow()
)
print("Wrote to InfluxDB:", value)
except Exception as e:
print("Error processing message:", e)
def start(self):
self.client.connect(self.broker_url)
self.client.loop_forever()
from dotenv import load_dotenv
import os
from mqtt_influx_backend.MQTTClientHandler import MQTTClientHandler
from mqtt_influx_backend.InfluxDBWriter import InfluxDBWriter
load_dotenv()
def main():
influx_writer = InfluxDBWriter(
url=os.getenv("INFLUXDB_URL"),
token=os.getenv("INFLUXDB_TOKEN"),
org=os.getenv("INFLUXDB_ORG"),
bucket=os.getenv("INFLUXDB_BUCKET")
)
mqtt_handler = MQTTClientHandler(
broker_url=os.getenv("MQTT_BROKER_URL"),
topic=os.getenv("MQTT_TOPIC"),
influx_writer=influx_writer
)
mqtt_handler.start()
if __name__ == "__main__":
main()
import json
from datetime import datetime
import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
# InfluxDB config
INFLUXDB_URL = os.environ.get("INFLUXDB_URL")
INFLUXDB_TOKEN = os.environ.get("INFLUXDB_TOKEN")
INFLUXDB_ORG = os.environ.get("INFLUXDB_ORG")
INFLUXDB_BUCKET = os.environ.get("INFLUXDB_BUCKET")
write_client = influxdb_client.InfluxDBClient(url=INFLUXDB_URL, token=INFLUXDB_TOKEN, org=INFLUXDB_ORG)
bucket="co2-test"
write_api = write_client.write_api(write_options=SYNCHRONOUS)
# MQTT config
MQTT_BROKER_URL = os.environ.get("MQTT_BROKER_URL")
MQTT_PUBLISH_TOPIC = os.environ.get("MQTT_TOPIC")
for value in range(5):
point = (
Point("measurement1")
.tag("mac-adress", "22:de:aa:21::a2")
.field("ppm", value)
)
write_api.write(bucket=bucket, org=INFLUXDB_ORG, record=point)
time.sleep(1) # separate points by 1 second
'''
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe(MQTT_PUBLISH_TOPIC)
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
try:
# Decode JSON payload (z. B. {"value": 22.5, "unit": "C"})
data = json.loads(msg.payload.decode())
value = float(data.get("value"))
# Create data point
point = Point("temperature") \
.tag("topic", msg.topic) \
.field("value", value) \
.time(datetime.utcnow())
# Write to InfluxDB
write_api.write(bucket=INFLUXDB_BUCKET, org=INFLUXDB_ORG, record=point)
print("Wrote to InfluxDB:", point)
except Exception as e:
print("Error processing message:", e)
'''
# Start MQTT client
'''
mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.connect(MQTT_BROKER_URL)
mqttc.loop_forever()
'''
mosquitto_pub -h 172.20.10.12 -t co2/esp32 -m "{
"metadata": {
"timestamp": "2025-04-12T14:22:35Z",
"mac": "AA:BB:CC:DD:EE:FF",
"room": "A123"
},
"co2": 615.3,
"temperature": 21.8,
"humidity": 45.2
}"
Metadata-Version: 2.4
Name: mqtt-influx-backend
Version: 0.1.0
Summary: MQTT subscriber that stores data in InfluxDB
Author-email: Dein Name <deine.email@example.com>
Requires-Python: >=3.8
Requires-Dist: influxdb-client
Requires-Dist: paho-mqtt
Requires-Dist: python-dotenv
mqtt_to_influx.py
pyproject.toml
mqtt_influx_backend.egg-info/PKG-INFO
mqtt_influx_backend.egg-info/SOURCES.txt
mqtt_influx_backend.egg-info/dependency_links.txt
mqtt_influx_backend.egg-info/requires.txt
mqtt_influx_backend.egg-info/top_level.txt
\ No newline at end of file
influxdb-client
paho-mqtt
python-dotenv
mqtt_to_influx
'''
import json
from datetime import datetime
import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
from dotenv import load_dotenv
import os
load_dotenv() # <-- lädt deine .env Datei
# InfluxDB config
INFLUXDB_URL = os.environ.get("INFLUXDB_URL")
INFLUXDB_TOKEN = os.environ.get("INFLUXDB_TOKEN")
INFLUXDB_ORG = os.environ.get("INFLUXDB_ORG")
INFLUXDB_BUCKET = os.environ.get("INFLUXDB_BUCKET")
print(INFLUXDB_URL)
write_client = influxdb_client.InfluxDBClient(url=INFLUXDB_URL, token=INFLUXDB_TOKEN, org=INFLUXDB_ORG)
write_api = write_client.write_api(write_options=SYNCHRONOUS)
# MQTT config
MQTT_BROKER_URL = os.environ.get("MQTT_BROKER_URL")
MQTT_PUBLISH_TOPIC = os.environ.get("MQTT_TOPIC")
for value in range(5):
point = (
Point("measurement1")
.tag("mac-adress", "22:de:aa:21::a2")
.field("ppm", value)
)
write_api.write(bucket=INFLUXDB_BUCKET, org=INFLUXDB_ORG, record=point)
time.sleep(1) # separate points by 1 second
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe(MQTT_PUBLISH_TOPIC)
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
try:
# Decode JSON payload (z. B. {"value": 22.5, "unit": "C"})
data = json.loads(msg.payload.decode())
value = float(data.get("value"))
# Create data point
point = Point("temperature") \
.tag("topic", msg.topic) \
.field("value", value) \
.time(datetime.utcnow())
# Write to InfluxDB
write_api.write(bucket=INFLUXDB_BUCKET, org=INFLUXDB_ORG, record=point)
print("Wrote to InfluxDB:", point)
except Exception as e:
print("Error processing message:", e)
# Start MQTT client
mqttc = mqtt.Client()
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.connect(MQTT_BROKER_URL)
mqttc.loop_forever()
'''
[project]
name = "mqtt-influx-backend"
version = "0.1.0"
description = "Backend to write MQTT sensor data to InfluxDB"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"paho-mqtt",
"influxdb-client",
]
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]
Metadata-Version: 2.4
Name: mqtt-influx-backend
Version: 0.1.0
Summary: Backend to write MQTT sensor data to InfluxDB
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: paho-mqtt
Requires-Dist: influxdb-client
pyproject.toml
src/mqtt_influx_backend/InfluxDBWriter.py
src/mqtt_influx_backend/MQTTClientHandler.py
src/mqtt_influx_backend/Main.py
src/mqtt_influx_backend/__init__.py
src/mqtt_influx_backend.egg-info/PKG-INFO
src/mqtt_influx_backend.egg-info/SOURCES.txt
src/mqtt_influx_backend.egg-info/dependency_links.txt
src/mqtt_influx_backend.egg-info/requires.txt
src/mqtt_influx_backend.egg-info/top_level.txt
\ No newline at end of file
paho-mqtt
influxdb-client
mqtt_influx_backend
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
class InfluxDBWriter:
def __init__(self, url: str, token: str, org: str, bucket: str):
self.client = InfluxDBClient(url=url, token=token, org=org)
self.write_api = self.client.write_api(write_options=SYNCHRONOUS)
self.bucket = bucket
self.org = org
def write_point(self, measurement: str, tags: dict, fields: dict, timestamp=None):
point = Point(measurement)
for k, v in tags.items():
point.tag(k, v)
for k, v in fields.items():
point.field(k, v)
if timestamp:
point.time(timestamp, WritePrecision.NS)
self.write_api.write(bucket=self.bucket, org=self.org, record=point)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment