Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import traceback
- from channels.consumer import AsyncConsumer
- from asgiref.sync import sync_to_async
- from channels.exceptions import StopConsumer
- from iotsite.models import Device
- from random import randint
- from time import sleep
- """
- Upload Channel
- Used by clients to update sensor data
- """
- class UploadConsumer(AsyncConsumer):
- """
- Method called when websocket connects
- """
- async def websocket_connect(self,event):
- print("connected ", event)
- data = {
- "type": "websocket.accept",
- "text": "successfully connected client"
- }
- #sleep(1)
- try:
- await self.send(data)
- print("sent data")
- except Exception as e:
- print("didnt send data " + str(e))
- """
- Update sensor data
- """
- @sync_to_async
- def saveToObject(self, val_list):
- device = Device.objects.get(pk=val_list[0])
- device.machine.sensor_data_one = float(val_list[1])
- device.machine.sensor_data_one = float(val_list[2])
- device.machine.save()
- device.save()
- """
- Method called when server receives messsage from websocket
- """
- async def websocket_receive(self,event):
- print("received ", event)
- val_list = event['text'].split(",")
- sleep(1)
- print(val_list)
- await self.saveToObject(val_list)
- data = {
- "type": "websocket.accept",
- "text": "successfully added sensor data"
- }
- try:
- await self.send(data) #error here
- print("sent the data from recieved")
- sleep(1)
- except Exception as e:
- print("didnt send the data " + str(e))
- #print(traceback.format_exc())
- """
- Method called when websocket disconnected
- """
- async def websocket_disconnect(self, event):
- print("disconnected " + str(event) + "\n\n")
- """
- Working Example of Device Channel
- Clients can get device data thourgh this Channel
- """
- class DeviceConsumer(AsyncConsumer):
- """
- Method called when websocket connects
- """
- async def websocket_connect(self,event):
- print("connected ", event)
- data = {
- "type": "websocket.accept",
- }
- await self.send(data)
- """
- Helper method to get Device data
- """
- @sync_to_async
- def getDeviceData(self, dev_id):
- dev = Device.objects.get(pk=dev_id)
- self.sensor_data = dev.machine.sensor_data_one
- """
- Method called when server receives messsage from websocket
- Sends back current sensor data
- """
- async def websocket_receive(self,event):
- print("received ", event)
- await self.getDeviceData(event['text'])
- data = {
- "type": "websocket.send",
- "text": str(self.sensor_data)
- }
- await self.send(data)
- """
- Method called when websocket disconnected
- """
- async def websocket_disconnect(self, event):
- print("disconnected", event)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement