43 lines
1 KiB
Python
43 lines
1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import ssl
|
|
import websocket
|
|
import json
|
|
import os
|
|
import psycopg2
|
|
import lorautil
|
|
|
|
class Loriot():
|
|
def __init__(self):
|
|
ws = websocket.WebSocket()
|
|
|
|
def connect(self):
|
|
tokenurl = os.environ['LORIOT_URL']
|
|
self.ws = websocket.create_connection(tokenurl, sslopt={"cert_reqs": ssl.CERT_NONE})
|
|
|
|
def listen(self):
|
|
while True:
|
|
result = self.ws.recv()
|
|
print(result)
|
|
|
|
jdata = lorautil.jsonToDict(result)
|
|
eui = self.devEUI(jdata)
|
|
|
|
try:
|
|
payload = get_payload(jdata)
|
|
except Exception:
|
|
payload = ""
|
|
|
|
lorautil.db_insert_json("loriot", result, payload=payload, deveui=eui)
|
|
lorautil.db_notify("loriot", payload=payload, deveui=eui)
|
|
|
|
def devEUI(self, data):
|
|
return data['EUI']
|
|
|
|
def get_payload(self, data):
|
|
return bytes.fromhex(data['payload']).decode('utf-8')
|
|
|
|
if __name__ == '__main__':
|
|
l = Loriot()
|
|
l.connect()
|
|
l.listen()
|