From a1ceb2d2c1b29044d6dbe52690d92ebf67b35982 Mon Sep 17 00:00:00 2001 From: Bram Barbieri Date: Tue, 2 Apr 2024 11:22:44 +0200 Subject: [PATCH] copying classes python to document --- server/data.py | 73 ++++------------------------------ server/databaseGeneralClass.py | 26 ++++++++++++ server/enqueteNodeClass.py | 35 ++++++++++++++++ server/sensorNodeClass.py | 41 +++++++++++++++++++ 4 files changed, 110 insertions(+), 65 deletions(-) create mode 100644 server/databaseGeneralClass.py create mode 100644 server/enqueteNodeClass.py create mode 100644 server/sensorNodeClass.py diff --git a/server/data.py b/server/data.py index 3157c8a..d5865f9 100644 --- a/server/data.py +++ b/server/data.py @@ -1,64 +1,19 @@ import asyncio import websockets -import mysql.connector import json +from class_SensorNode import SensorNode +from class_enqueteNode import EnqueteNode +from classes_data import dbLogin sensorNodeArray = [] enqueteNodeArray = [] -async def processSensorNodeData(data, nodeID): - try: - mydb = dbLogin() - cursor = mydb.cursor() - - 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']) - - pushingDataArray = [(nodeID, "Temp", processedTemp), (nodeID, "Humi", processedHumi), (nodeID, "eCO2", processedeCO2), (nodeID, "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 processEnqueteNodeData(data, nodeID): - try: - mydb = dbLogin() - cursor = mydb.cursor() - - query = "INSERT INTO `Reply` (Result, Node_NodeID, Question_QuestionID) VALUES (%s, %s, %s)" - processedData = json.loads(data) - - processedQuestionID = (processedData['QuestionID']) - processedResponse = (processedData['Response']) - - pushingDataArray = [(processedResponse, nodeID, processedQuestionID)] - - for i in pushingDataArray: - 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: + print("true") data = await websocket.recv() print(f"Received data: {data}") @@ -73,14 +28,13 @@ async def receive_data(): await getNodeInfo('sensor') await getNodeInfo('enquete') - print(sensorNodeArray) if macAdress in sensorNodeArray: nodeID = await getNodeID(macAdress) - await processSensorNodeData(data, nodeID) + await SensorNode.processSensorNodeData(data, nodeID) elif macAdress in enqueteNodeArray: nodeID = await getNodeID(macAdress) - await processEnqueteNodeData(data, nodeID) + await EnqueteNode.processEnqueteNodeData(data, nodeID) else: await newNode(macAdress, type) except websockets.ConnectionClosedError as e: @@ -89,17 +43,8 @@ async def receive_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): + print("getNodeINfo") global sensorNodeArray global enqueteNodeArray @@ -114,14 +59,12 @@ async def getNodeInfo(type): for tuples in nodeInfo: for item in tuples: nodeInfoArray.append(item) - print(nodeInfoArray) cursor.close() mydb.close() if type == 'sensor': sensorNodeArray = nodeInfoArray - print(sensorNodeArray) return sensorNodeArray elif type == 'enquete': @@ -143,7 +86,7 @@ async def getNodeID(macAdress): return nodeID async def newNode(mac, type): - id = (mac, type,) + id = (mac, type) mydb = dbLogin() cursor = mydb.cursor() diff --git a/server/databaseGeneralClass.py b/server/databaseGeneralClass.py new file mode 100644 index 0000000..e3c6407 --- /dev/null +++ b/server/databaseGeneralClass.py @@ -0,0 +1,26 @@ +import mysql.connector + +def dbLogin(): + mydb = mysql.connector.connect( + host="localhost", + user="root", + password="Dingleberries69!", + database="NodeData" + ) + return mydb + +class Node(): + def __init__(self, macAdress): + self.macAdress = macAdress + self.id = None + + def getNodeId(self): + id = (self.macAdress,) + mydb = dbLogin() + cursor = mydb.cursor() + cursor.execute("""SELECT nodeID FROM Node WHERE MAC = %s""", id) + data = cursor.fetchall() + + for tuples in data: + for item in tuples: + self.id = item \ No newline at end of file diff --git a/server/enqueteNodeClass.py b/server/enqueteNodeClass.py new file mode 100644 index 0000000..f1243bf --- /dev/null +++ b/server/enqueteNodeClass.py @@ -0,0 +1,35 @@ +import mysql.connector +import json + +from classes_data import Node +from classes_data import dbLogin + +class EnqueteNode(Node): + query = "INSERT INTO `Reply` (Result, Node_NodeID, Question_QuestionID) VALUES (%s, %s, %s)" + + def __init__(self, macAdress, response, questionID): + super().__init__(macAdress) + self.response = response + self.questionID = questionID + + async def processEnqueteNodeData(data, nodeID): + try: + mydb = dbLogin() + cursor = mydb.cursor() + + processedData = json.loads(data) + + EnqueteNode.questionID = (processedData['QuestionID']) + EnqueteNode.response = (processedData['Response']) + + pushingDataArray = [(EnqueteNode.questionID, nodeID, EnqueteNode.response)] + + for i in pushingDataArray: + print(EnqueteNode.query, i) + cursor.execute(EnqueteNode.query, i) + mydb.commit() + except mysql.connector.Error as err: + print("MySQL Error:", err) + finally: + cursor.close() + mydb.close() \ No newline at end of file diff --git a/server/sensorNodeClass.py b/server/sensorNodeClass.py new file mode 100644 index 0000000..c3cb90d --- /dev/null +++ b/server/sensorNodeClass.py @@ -0,0 +1,41 @@ +import mysql.connector +import json + +from classes_data import Node +from classes_data import dbLogin + +class SensorNode(Node): + query = "INSERT INTO `Measurement` (NodeID, Type, Value) VALUES (%s, %s, %s)" + + def __init__(self, macAdress, temp, humi, eCO2, TVOC): + super().__init__(macAdress) + self.temperature = temp + self.humidity = humi + self.eCO2 = eCO2 + self.TVOC = TVOC + + async def processSensorNodeData(data, nodeID): + try: + mydb = dbLogin() + cursor = mydb.cursor() + + processedData = json.loads(data) + + SensorNode.temperature = (processedData['Temp']) + SensorNode.humidity = (processedData['Humi']) + SensorNode.eCO2 = (processedData['eCO2']) + SensorNode.TVOC = (processedData['TVOC']) + + + + pushingDataArray = [(nodeID, "Temp", SensorNode.temperature), (nodeID, "Humi", SensorNode.humidity), (nodeID, "eCO2", SensorNode.eCO2), (nodeID, "TVOC", SensorNode.TVOC)] + for i in pushingDataArray: + cursor.execute(SensorNode.query, i) + mydb.commit() + + + except mysql.connector.Error as err: + print("MySQL Error:", err) + finally: + cursor.close() + mydb.close() \ No newline at end of file