66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
import paho.mqtt.client as mqtt
|
|
import mysql.connector
|
|
import json
|
|
import time
|
|
|
|
print("Projet lance...")
|
|
|
|
db = None
|
|
while db is None:
|
|
try:
|
|
db = mysql.connector.connect(
|
|
host="127.0.0.1",
|
|
user="web_user",
|
|
password="poubelle2026",
|
|
database="smart_bins"
|
|
)
|
|
print("Connecte a la base de donnees !")
|
|
except Exception:
|
|
print("En attente de la base de donnees...")
|
|
time.sleep(5)
|
|
|
|
cursor = db.cursor()
|
|
|
|
def on_message(client, userdata, msg):
|
|
try:
|
|
data = json.loads(msg.payload.decode())
|
|
print("recu :", data)
|
|
|
|
sql = """
|
|
INSERT INTO mesures (id_poubelle, niveau, poids, temperature, batterie)
|
|
VALUES (%s, %s, %s, %s, %s)
|
|
"""
|
|
values = (
|
|
data.get("id_poubelle", 1),
|
|
data.get("niveau", 0),
|
|
data.get("poids", 0),
|
|
data.get("temperature", 0),
|
|
data.get("batterie", 100)
|
|
)
|
|
|
|
cursor.execute(sql, values)
|
|
db.commit()
|
|
|
|
print("Enregistre en DB")
|
|
|
|
except Exception as e:
|
|
print("Erreur :", e)
|
|
|
|
client = mqtt.Client()
|
|
|
|
mqtt_connected = False
|
|
while not mqtt_connected:
|
|
try:
|
|
client.connect("localhost", 1883, 60)
|
|
mqtt_connected = True
|
|
print("Connecte au broker MQTT !")
|
|
except Exception:
|
|
print("En attente du broker MQTT...")
|
|
time.sleep(5)
|
|
|
|
client.subscribe("smart_trash/data")
|
|
client.on_message = on_message
|
|
|
|
print("En attente des donnees MQTT...")
|
|
client.loop_forever()
|