From 1964589abc2668f90bba6fbb9da2bd3181764a91 Mon Sep 17 00:00:00 2001 From: "ishak jmilou.ishak" Date: Thu, 9 Jan 2025 14:57:56 +0100 Subject: [PATCH] fix: update sensor_data function to process and store JSON message from kobuki --- src/Python/flask/web/app.py | 46 +++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/src/Python/flask/web/app.py b/src/Python/flask/web/app.py index f4599d6..32403a9 100644 --- a/src/Python/flask/web/app.py +++ b/src/Python/flask/web/app.py @@ -14,8 +14,8 @@ def on_message(client,userdata, message): global kobuki_message, latest_image if message.topic == "kobuki/data": kobuki_message = str(message.payload.decode("utf-8")) - # with app.app_context(): - # sensor_data() # Sla de data op in de database + with app.app_context(): + sensor_data(kobuki_message) # Sla de data op in de database elif message.topic == "kobuki/cam": latest_image = message.payload @@ -82,7 +82,6 @@ def move(): db_connection.commit() cursor.close() db_connection.close() - print(f"check: {data}") return jsonify({"status": "success", "direction": direction}) @app.route("/database") @@ -94,16 +93,39 @@ def database(): cursor.close() return str(rows) -# def sensor_data(): -# data = request.get_json() -# db = get_db() -# cursor = db.cursor() -# sql_sensor = "INSERT INTO kobuki_data (name, value) VALUES (%s)" -# sensor_data_tuples = [(name, float(value))for name, value in data.items()] -# cursor.executemany(sql_sensor, sensor_data_tuples) +def sensor_data(kobuki_message): + try: + # Parse de JSON-string naar een Python-dictionary + data = json.loads(kobuki_message) -# db.commit() -# cursor.close() + # Maak een lijst van tuples met de naam en waarde van elk veld + sensor_data_tuples = [(name, float(value)) for name, value in data.items() if isinstance(value, (int, float))] + + # Extra informatie of nested data (zoals "extraInfo" of "gyroData") kun je apart verwerken + if "extraInfo" in data: + for key, value in data["extraInfo"].items(): + sensor_data_tuples.append((f"extraInfo_{key}", float(value))) + + if "gyroData" in data: + for i, gyro in enumerate(data["gyroData"]): + for axis, value in gyro.items(): + sensor_data_tuples.append((f"gyroData_{i}_{axis}", float(value))) + + # Database-insert + db = get_db() + cursor = db.cursor() + + # Zorg dat je tabel `kobuki_data` kolommen heeft: `name` en `value` + sql_sensor = "INSERT INTO kobuki_data (name, value) VALUES (%s, %s)" + cursor.executemany(sql_sensor, sensor_data_tuples) + + # Commit en sluit de cursor + db.commit() + cursor.close() + except json.JSONDecodeError as e: + print(f"JSON decode error: {e}") + except mysql.connector.Error as err: + print(f"Database error: {err}") if __name__ == '__main__': app.run(debug=True, port=5000)