97 lines
2.5 KiB
Python
97 lines
2.5 KiB
Python
import asyncio
|
|
import websockets
|
|
import json
|
|
from class_SensorNode import SensorNode
|
|
from class_enqueteNode import EnqueteNode
|
|
from classes_data import dbLogin
|
|
|
|
sensorNodeArray = []
|
|
enqueteNodeArray = []
|
|
|
|
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}")
|
|
|
|
processedData = json.loads(data)
|
|
macAdress = processedData['node']
|
|
|
|
if "Temp" in processedData:
|
|
type = 'sensor'
|
|
else:
|
|
type = 'enquete'
|
|
|
|
await getNodeInfo('sensor')
|
|
await getNodeInfo('enquete')
|
|
|
|
|
|
if macAdress in sensorNodeArray:
|
|
nodeID = await getNodeID(macAdress)
|
|
await SensorNode.processSensorNodeData(data, nodeID)
|
|
elif macAdress in enqueteNodeArray:
|
|
nodeID = await getNodeID(macAdress)
|
|
await EnqueteNode.processEnqueteNodeData(data, nodeID)
|
|
else:
|
|
await newNode(macAdress, type)
|
|
except websockets.ConnectionClosedError as e:
|
|
print("WebSocket connection closed:", e)
|
|
|
|
async def main():
|
|
await receive_data()
|
|
|
|
async def getNodeInfo(type):
|
|
print("getNodeINfo")
|
|
global sensorNodeArray
|
|
global enqueteNodeArray
|
|
|
|
nodeInfoArray = []
|
|
|
|
id = (type,)
|
|
mydb = dbLogin()
|
|
cursor = mydb.cursor()
|
|
cursor.execute("""SELECT MAC FROM Node WHERE Type = %s""", id)
|
|
nodeInfo = cursor.fetchall()
|
|
|
|
for tuples in nodeInfo:
|
|
for item in tuples:
|
|
nodeInfoArray.append(item)
|
|
|
|
cursor.close()
|
|
mydb.close()
|
|
|
|
if type == 'sensor':
|
|
sensorNodeArray = nodeInfoArray
|
|
return sensorNodeArray
|
|
|
|
elif type == 'enquete':
|
|
enqueteNodeArray = nodeInfoArray
|
|
return enqueteNodeArray
|
|
|
|
|
|
async def getNodeID(macAdress):
|
|
id = (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:
|
|
nodeID = item
|
|
|
|
return nodeID
|
|
|
|
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()) |