58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
import SocketServer as socketserver
|
|
import json
|
|
import time
|
|
import mysql.connector
|
|
|
|
class MyTCPHandler(socketserver.BaseRequestHandler):
|
|
"""
|
|
The request handler class for our server.
|
|
|
|
It is instantiated once per connection to the server, and must
|
|
override the handle() method to implement communication to the
|
|
client.
|
|
"""
|
|
|
|
def handle(self):
|
|
# self.request is the TCP socket connected to the client
|
|
self.data = self.request.recv(1024).strip()
|
|
print("{} wrote:".format(self.client_address[0]))
|
|
indata=self.data
|
|
print(indata)
|
|
test=json.loads(indata)
|
|
print(test)
|
|
if "payload" in test:
|
|
print(test['payload'])
|
|
datatime=int(1000*time.time())
|
|
if "time" in test:
|
|
datatime=int(test['time'])
|
|
print(datatime)
|
|
datasource=self.client_address[0]
|
|
if "device" in test:
|
|
datasource=test['device']
|
|
multi=1
|
|
if "mult" in test:
|
|
multi=test['mult']
|
|
mycursor=mydb.cursor()
|
|
payload=test['payload']
|
|
print(payload)
|
|
for x,y in payload.items():
|
|
mycursor.execute(sqlinsert.format(datatime,datasource,x,int(multi*y)))
|
|
mydb.commit()
|
|
# just send back the same data, but upper-cased
|
|
self.request.sendall("Done")
|
|
|
|
if __name__ == "__main__":
|
|
HOST, PORT = "", 24048
|
|
pwf = open("my.cnf","r")
|
|
pwj = json.loads(pwf.read())
|
|
print(pwj)
|
|
mydb=mysql.connector.connect(host="localhost",user=pwj['user'],passwd=pwj['password'],database=pwj['database'])
|
|
sqlinsert="insert into datain (time,device,var,value) values ({0:d},'{1:s}','{2:s}',{3:d})"
|
|
|
|
# Create the server, binding to localhost on port 9999
|
|
server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
|
|
|
|
# Activate the server; this will keep running until you
|
|
# interrupt the program with Ctrl-C
|
|
server.serve_forever()
|