import time
import socket
from threading import Timer
HOST = '192.168.128.147'
PORT = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
request = "10, 1, light"
s.send(request.encode())
t = request.split(",")[0].strip()
extra_wait = 5
time.sleep(t + extra_wait) # wait for sever to collect data
light_sensor_data = s.recv(1024).decode() # receive data back
light_sensor_data.split(',') # data in list
light_sensor_data = []
result = s.recv(1024) # receive data back
while len(result) > 0:
light_sensor_data.append(s.recv(1024))
light_sensor_data_decode = list(map(lambda x: x.decode(), light_sensor_data)
this goes into server.py
to run it, just run python server.py
import socket
import mraa
import time
def collect_from_sensor(req):
req_split = list(map(lambda x: x.split(), req.split(',')))
t, dt, sensortype = req_split
print("Time = %s, dt = %s, Sensor Type = %s" % (t, dt, sensortype))
t = int(t[0].strip())
dt = int(dt[0].strip())
sensortype = sensortype[0].strip()
sensor_data = list()
if sensortype == 'light':
try:
n_samples = int(t/dt)
data_point = mraa.Aio(3)
for _ in range(t/dt):
sensor_data.append(data_point.readFloat())
time.sleep(dt)
print("%.5f" % data_point.readFloat())
except:
print('No sensor connected')
return sensor_data
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.128.147"
port = 8000
serversocket.bind((host,port))
serversocket.listen(5)
print ('server started and listening')
while 1:
(clientsocket, address) = serversocket.accept()
print("connection found!")
request = clientsocket.recv(1024).decode()
sensor_data = collect_from_sensor(str(request))
if sensor_data:
r = ','.join(map(str,sensor_data))
clientsocket.send(r.encode())