lorawan/receiver/swisscom-receiver.py

59 lines
1.6 KiB
Python
Raw Normal View History

2016-10-09 11:40:08 +00:00
#!/usr/bin/env python3
import urllib
import psycopg2
import websocket
from http.server import BaseHTTPRequestHandler, HTTPServer
import re
2016-10-09 19:16:21 +00:00
import json
import pprint
2016-11-02 16:10:07 +00:00
import lorautil
2016-10-09 11:40:08 +00:00
# HTTPRequestHandler class
class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
length = int(self.headers['Content-Length'])
post_data = self.rfile.read(length).decode('utf-8')
2016-11-02 09:02:15 +00:00
try:
payload = self.dataToString(post_data)
except UnicodeDecodeError:
payload = ""
try:
deveui = self.dataToDevEUI(post_data)
except UnicodeDecodeError:
deveui = ""
print("deveui/payload: {}:{}".format(deveui, payload))
2016-10-09 11:40:08 +00:00
# And insert into the db
2016-11-02 16:10:07 +00:00
lorautil.db_insert_json("swisscom", post_data, payload, deveui)
lorautil.db_notify("swisscom", payload, deveui)
2016-10-09 11:40:08 +00:00
2016-10-09 19:16:21 +00:00
def dictToPayload(self, thedict):
return thedict['DevEUI_uplink']['payload_hex']
def hexToString(self, myhex):
return bytes.fromhex(myhex).decode('utf-8')
def dataToString(self, data):
2016-11-02 16:42:39 +00:00
mydict = lorautil.jsonToDict(data)
2016-10-09 19:16:21 +00:00
payload = self.dictToPayload(mydict)
return self.hexToString(payload)
2016-10-10 13:17:26 +00:00
def dataToDevEUI(self, data):
2016-11-02 16:42:39 +00:00
mydict = lorautil.jsonToDict(data)
2016-10-10 13:17:26 +00:00
eui = mydict['DevEUI_uplink']['DevEUI']
return eui
2016-10-09 11:40:08 +00:00
def payload(self, data):
myhex = self.payload_hex(data)
return bytes.fromhex(myhex).decode('utf-8')
if __name__ == '__main__':
server_address = ('0.0.0.0', 8000)
httpd = HTTPServer(server_address, testHTTPServer_RequestHandler)
print('running server...')
httpd.serve_forever()