auf einem Linux-Rechner läuft der mosquitto-mqtt-broker. Dieser empfängt Daten von mehreren Sensoren. Damit ich die empfangenen Daten auswerten kann, möchte ich die Nachrichten zu den Topics in Datenbanken abspeichern.
Dafür möchte ich für jedes Topic einen MQTT-Client auf dem Rechner erstellen, welche die abonnierten Nachrichten in eine SQLite3-Datenbank ablegen.
Nun habe ich das Problem, dass mir die Datenbanken erstellt werden, aber das Abonnieren und abspeichern nicht funktioniert.
Das sind meine zugehörigen Programmschnipsel:
1. Hiermit bestimme ich die Ip-Adresse des Rechners:
Code: Alles auswählen
import netifaces as ni
ni.ifaddresses('eth0')
mqttBrokerIpAdress = ni.ifaddresses('eth0')[ni.AF_INET][0]['addr']
print(mqttBrokerIpAdress)
port = 1883
Code: Alles auswählen
import paho.mqtt.client as mqtt
def mqttConnection(id, db, topic):
directory = "/Mqtt/" + db
connection = sqlite3.connect(directory)
cursor = connection.cursor()
client = mqtt.Client(id, False)
client.on_connect = on_connect
client.subscribe(topic)
client.on_message = on_message
client.connect(mqttBrokerIpAdress, port, 60)
client.loop_forever()
3. Hier noch die beiden Methoden on_connect und on_message (den Code hierzu habe ich im Internet gefunden):
Code: Alles auswählen
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))