Hallo Zusammen,
ich versuche momentan auf relativ einfachem Weg, die Daten von einem Wemos D1 Mini in Variablen zu speichern, damit ich mit diesen Daten später einfach weiter arbeiten kann.
Das bereitet mir aber momentan Kopfzerbrechen, da ich in Python leider nicht so fit bin.
Ich hole mir folgende Daten vom ESP8266:
- Temperatur
- Feuchtigkeit
- Akkuspannung
Momentan übertage ich nur die Daten von einem ESP auf einen Pi per MQTT.
Wenn das ganze so funktioniert, wie ich mir das vorstelle, sollen noch mehrere ESP's folgen.
Hier der Code der auf dem Pi läuft:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("ESP_Easy/#")
def on_message(client, userdata, msg):
print(msg.topic)
print(float(msg.payload.decode()))
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()
Alles anzeigen
Die Ausgabe sieht wie folgt aus:
ESP_Easy/Bad_Akku/Spannung
3.88
ESP_Easy/Bad/Temperature
22.79
ESP_Easy/Bad/Humidity
43.9
Ich habe jetzt schon verschiedene Sachen probiert:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe("ESP_Easy/#")
def on_message(client, userdata, msg):
if msg.topic == "ESP_Easy/Bad_Akku/Spannung":
print(msg.topic)
print(float(msg.payload.decode()))
Spannung = float(msg.payload.decode())
print(Spannung)
if msg.topic == "ESP_Easy/Bad/Temperature":
Temperatur == float(msg.payload.decode())
print(Temperatur)
if msg.topic == "ESP_Easy/Bad/Humidity":
Feuchtigkeit == float(msg.payload.decode())
print(Feuchtigkeit)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()
Alles anzeigen
So funktioniert es aber leider auch nicht, da nach dem ersten If sofort die Schleife verlassen wird.
Auch mit elif funktioniert es nicht.
So funktioniert es leider auch nicht:
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
client.subscribe("ESP_Easy/#")
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode('utf-8'))
temperatur = float(payload["Temperature"])
print(temperatur)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("localhost", 1883, 60)
client.loop_forever()
Alles anzeigen
Ich bin auf der Suche nach einem einfachen und für einen Anfänger verständlichen Weg, damit ich jeden Wert in einer eigenen Variable habe, damit ich später diese zum Befüllen einer Datenbank verwenden kann.
Danke für die Hilfe.