'''
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()



'''