import asyncio import websockets import mysql.connector import json sensorNodeArray = [] enqueteNodeArray = [] async def processSensorNodeData(data): try: mydb = dbLogin() cursor = mydb.cursor() # MACDataReading = mydb.cursor() # MACDataReading.execute("SELECT MAC FROM Node") print('some_response') query = "INSERT INTO `Measurement` (NodeID, Type, Value) VALUES (%s, %s, %s)" processedData = json.loads(data) processedTemp = (processedData['Temp']) processedHumi = (processedData['Humi']) processedeCO2 = (processedData['eCO2']) processedTVOC = (processedData['TVOC']) processedMAC = (processedData['node']) MACTuple = (processedMAC,) # MACDataFetching = MACDataReading.fetchall() # MACArray = list(MACDataFetching) # if MACTuple not in MACArray: # addingNode = "INSERT INTO `Node` (MAC) VALUES (%s)" # cursor.execute(addingNode, MACTuple) # mydb.commit() pushingDataArray = [(1, "Temp", processedTemp), (1, "Humi", processedHumi), (1, "eCO2", processedeCO2), (1, "TVOC", processedTVOC)] for i in pushingDataArray: print(query ,i) cursor.execute(query, i) mydb.commit() except mysql.connector.Error as err: print("MySQL Error:", err) finally: cursor.close() mydb.close() async def receive_data(): uri = "ws://145.92.8.114/ws" try: async with websockets.connect(uri) as websocket: while True: data = await websocket.recv() print(f"Received data: {data}") processedData = json.loads(data) macAdress = processedData['node'] if processedData["Temp"]: type = 'sensor' else: type = 'enquete' await getNodeInfo('sensor') await getNodeInfo('enquete') if macAdress in sensorNodeArray: await processSensorNodeData(data) elif macAdress in enqueteNodeArray: await processEnqueteNodeData(data) else: await newNode(macAdress, type) except websockets.ConnectionClosedError as e: print("WebSocket connection closed:", e) async def processEnqueteNodeData(data): mydb = dbLogin() cursor = mydb.cursor() query = "INSERT INTO `Response` (NodeID, QuestionID, Response) VALUES (%s, %s, %s)" processedData = json.loads(data) async def main(): await receive_data() def dbLogin(): mydb = mysql.connector.connect( host="localhost", user="root", password="Dingleberries69!", database="NodeData" ) return mydb async def getNodeInfo(type): id = (type,) mydb = dbLogin() cursor = mydb.cursor() cursor.execute("""SELECT * FROM Node WHERE Type = %s""", id) nodeInfo = cursor.fetchall() print(nodeInfo) if nodeInfo != None: if type == 'sensor': sensorNodeArray.append(nodeInfo[]) elif type == 'enquete': enqueteNodeArray.append(nodeInfo) async def newNode(mac, type): id = (mac, type,) mydb = dbLogin() cursor = mydb.cursor() cursor.execute("INSERT INTO `Node` (MAC, Type) VALUES (%s, %s)", id) print("new node assigned") mydb.commit() asyncio.run(main())