82 lines
3.1 KiB
Python
Executable File
82 lines
3.1 KiB
Python
Executable File
from datetime import datetime, timedelta
|
|
import redis
|
|
r = redis.StrictRedis(host='192.168.1.242', port=6379, db=1)
|
|
class BaseSensorPost(object):
|
|
def __init__(self, sq, sensor_type, table,**kwargs):
|
|
self.last_values = [None,None]
|
|
self.last_measurement = None
|
|
self.last_insert = datetime.utcnow()
|
|
self.sq = sq
|
|
self.heartbeat_interval = 15*60
|
|
self.sensor = sensor_type
|
|
self.table = table;
|
|
self.kwargs = kwargs
|
|
|
|
def insert_heartbeat(self, time_init):
|
|
return True
|
|
# ins = self.sq['t'][self.table].insert().values(
|
|
# when_timestamp = time_init, what = self.sensor)
|
|
# self.sq['s'].execute(ins)
|
|
|
|
|
|
class Temperature(BaseSensorPost):
|
|
|
|
def insert_temperature(self, time_init, temperature):
|
|
if time_init is not None and temperature is not None:
|
|
self.sq.executemany('INSERT INTO nuggets.temperature (when, temperature, where) values ',[{'when':time_init, 'temperature':temperature, 'where':self.kwargs['where']}])
|
|
|
|
# ins = self.sq['t'][self.table].insert().values(temperature = temperature, when_timestamp = time_init, where_id=self.kwargs['where'])
|
|
# self.sq['s'].execute(ins)
|
|
|
|
|
|
|
|
def parse(self, time_init,string):
|
|
string = string.strip(',');
|
|
string = string.split(':')[1];
|
|
curr_temp = float(string)
|
|
self.insert_temperature(time_init, curr_temp)
|
|
# self.insert_temperature(time_init,string)
|
|
|
|
# if (time_init - self.last_insert).seconds > self.heartbeat_interval:
|
|
# self.insert_heartbeat(time_init)
|
|
# self.last_insert = time_init
|
|
|
|
|
|
|
|
|
|
class Odometer(BaseSensorPost):
|
|
|
|
def insert_speeds(self, time_init, transittime = None, heartbeat = False):
|
|
|
|
if transittime is None or transittime < 0:
|
|
isclockwise = 0
|
|
else:
|
|
isclockwise = 1
|
|
if time_init is not None:
|
|
self.sq.executemany('INSERT INTO nuggets.odometer (when, who, speed, clockwise) values ',[{'when':time_init, 'who':self.kwargs['who'], 'speed':abs(transittime), 'clockwise':isclockwise}])
|
|
|
|
# ins = self.sq['t'][self.table].insert().values(
|
|
# when_timestamp = time_init, speed = abs(transittime), who_id = self.kwargs['who'],
|
|
# clockwise = isclockwise )
|
|
# self.sq['s'].execute(ins)
|
|
|
|
|
|
def parse(self, time_init,string):
|
|
string = string.strip(',');
|
|
string = string.split(':')[1];
|
|
string = string.split(',')
|
|
for speed, offset in zip(string[0::2],string[1::2]):
|
|
speed = int(speed)
|
|
if speed != 0:
|
|
time_actual = time_init + timedelta(milliseconds = int(offset))
|
|
self.insert_speeds(time_actual, transittime = speed)
|
|
r.incr('nugget_run_counts')
|
|
|
|
if (time_init - self.last_insert).seconds > self.heartbeat_interval:
|
|
self.insert_heartbeat(time_init )
|
|
self.last_insert = time_init
|
|
|
|
self.last_measurement = time_init
|
|
|
|
# %%
|