change format and start using gnupg
parent
eb08b7c141
commit
ac2a08ae6e
65
meas_data.py
65
meas_data.py
|
@ -1,45 +1,56 @@
|
|||
import socket,numpy,time,thread,json,requests
|
||||
import paho.mqtt.client as mqtt
|
||||
import paho.mqtt.publish as publish
|
||||
from uuid import getnode
|
||||
import zlib
|
||||
class meas_data:
|
||||
def __init__(self,var_name,ring_length=100,sigma=2,device=socket.gethostname(),sensor="CPU",i2c=0,store_file="/home/pi/data",mean_count=5,store_each_cycle=True,multiplicator=1,digits=5,check_last=0):
|
||||
def __init__(self,var_name,ring_length=100,sigma=2,device=socket.gethostname(),sensor="CPU",i2c=0,store_file="/home/pi/data",multiplicator=1,digits=5,check_last=0,mac=0,sql_min_wait=5):
|
||||
self.set_varname(var_name)
|
||||
self.value=[]
|
||||
self.mval=[]
|
||||
self.stat_val_mean=0
|
||||
self.stat_val_std=0
|
||||
self.set_ring_length(ring_length)
|
||||
self.set_mean_count(mean_count)
|
||||
self.sensebox=""
|
||||
self.senseid=""
|
||||
self.sense_url="https://ingress.opensensemap.org/"
|
||||
self.sense_intervall=300
|
||||
self.sense_last_time=0
|
||||
self.sql_min_wait=sql_min_wait
|
||||
self.sqlhost=""
|
||||
self.sqlport=0
|
||||
self.sql_last_transmit=0
|
||||
self.bsense=False
|
||||
self.bsql=False
|
||||
self.bchanged=False
|
||||
self.bfile=False
|
||||
self.store_file=store_file
|
||||
self.act_value=0
|
||||
self.act_std=0
|
||||
self.act_time=0
|
||||
self.stat_mean=0
|
||||
self.stat_std=0
|
||||
self.sigma=sigma
|
||||
self.set_device(device)
|
||||
self.set_sensor(sensor)
|
||||
self.set_digits(digits)
|
||||
self.set_check_last(check_last)
|
||||
self.i2c=i2c
|
||||
self.i2c=set_i2c(i2c)
|
||||
self.set_multiplicator(multiplicator)
|
||||
self.bstoreeach=store_each_cycle
|
||||
self.mqtt_broker=""
|
||||
self.mqtt_port=1883
|
||||
self.mqtt_topic=""
|
||||
self.mqtt_bool=False
|
||||
self.json_out={"device":self.device,"payload":{self.var_name:{"time":0,"sensor":self.sensor,"value":0,"i2c":self.i2c}}}
|
||||
self.hash=0
|
||||
self.set_id(self)
|
||||
self.json_out={"hash":self.hash,"signature":"","payload":{"device":self.device,"varname":self.var_name,,"i2c":self.i2c,"sensor":self.sensor,"mac":self.mac,"measures":{}}}
|
||||
def set_id(self):
|
||||
idstring=str(hex(getnode()))[2:-1]+device+str(self.i2c)+sensor+var_name
|
||||
self.hash=zlib.crc32(idstring) % (1<<32)
|
||||
def get_id(self):
|
||||
print(self.hash)
|
||||
def set_i2c(self,i2c):
|
||||
if (isinstance(i2c,(int,long,float)) and not isinstance(i2c,bool)):
|
||||
self.i2c=i2c
|
||||
else:
|
||||
self.i2c=0
|
||||
def set_mac(self,mac):
|
||||
if mac > 0:
|
||||
self.mac=mac
|
||||
else:
|
||||
self.mac=getnode()
|
||||
def set_varname(self,var_name):
|
||||
tvn=var_name.translate(None,"/:;\\{}(){]%&")
|
||||
if len(tvn)==0:
|
||||
|
@ -96,7 +107,7 @@ class meas_data:
|
|||
self.sqlhost=th
|
||||
self.sqlport=int(port)
|
||||
self.bsql=True
|
||||
def set_mqtt(self,broker="banana",port=1883,topic=""):
|
||||
def set_mqtt(self,broker="localhost",port=1883,topic=""):
|
||||
mt=topic
|
||||
if len(mt)==0:
|
||||
mt=self.device+"/"+self.sensor+"/"+self.var_name
|
||||
|
@ -182,8 +193,6 @@ class meas_data:
|
|||
self.act_value=int(self.mult*mmean)
|
||||
self.act_std=int(self.mult*numpy.std(self.mval))
|
||||
self.act_time=int(1000*time.time())
|
||||
# if self.bsql:
|
||||
# thread.start_new_thread(self.send_sql,(0,))
|
||||
if self.bfile:
|
||||
thread.start_new_thread(self.send_file,(0,))
|
||||
if self.bsense:
|
||||
|
@ -211,23 +220,25 @@ class meas_data:
|
|||
sv=self.value[-1]
|
||||
else:
|
||||
sv=self.value[-1]
|
||||
# self.json_out={"hash":self.hash,signature="","payload":{"device":self.device,"varname":self.var_name,,"i2c":self.i2c,"sensor":self.sensor,"mac":self.mac,"measures":{"time":0,"value":0}}}
|
||||
if sv >(-99):
|
||||
act_time=int(1000*time.time())
|
||||
# self.json_out['time']=act_time
|
||||
self.json_out['payload'][self.var_name]['time']=act_time
|
||||
self.json_out['payload'][self.var_name]['value']=int(sv*self.mult)
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
except:
|
||||
print("{}: could not connect to database".format(time.time()))
|
||||
else:
|
||||
self.json_out['payload']['measures'][act_time]=int(sv*self.mult)
|
||||
if ((act_time-self.sql_last_transmit)>(self.sql_min_wait*1000)):
|
||||
try:
|
||||
s.connect((self.sqlhost, self.sqlport))
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
except:
|
||||
print("{}: could not connect to database".format(time.time()))
|
||||
else:
|
||||
s.sendall(json.dumps(self.json_out))
|
||||
s.close()
|
||||
try:
|
||||
s.connect((self.sqlhost, self.sqlport))
|
||||
except:
|
||||
print("{}: could not connect to database".format(time.time()))
|
||||
s.close()
|
||||
else:
|
||||
signatur=int(sha3.sha3_224(json.dumps(self.json_out['payload'])).hexdigest(),16)
|
||||
s.sendall(json.dumps(self.json_out))
|
||||
s.close()
|
||||
def upload_osm(self,trigger=0):
|
||||
if (self.act_time-self.sense_last_time)>(self.sense_intervall*1000):
|
||||
r = requests.post(self.sense_url,json={'value': float(self.act_value)/self.mult})
|
||||
|
|
Loading…
Reference in New Issue