From ba2660b3dd115802beb61f7a1feffaebd559e3bd Mon Sep 17 00:00:00 2001 From: ademant Date: Tue, 3 Sep 2019 18:54:38 +0200 Subject: [PATCH] start to use ids --- id.json | 10 ++++++++-- log_sds.py | 31 ++++++++++++++++++++++++------- meas_data.py | 17 ++++++++++++++++- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/id.json b/id.json index 2f38d3a..b48fcea 100644 --- a/id.json +++ b/id.json @@ -1,4 +1,4 @@ -"id":{ +{"id":{ "110":{"varname":"temperatur","sensor":"CPU","i2c":0}, "111":{"varname":"temperatur","sensor":"bme280","i2c":0}, "112":{"varname":"humidity","sensor":"bme280","i2c":0}, @@ -56,5 +56,11 @@ "1B4":{"varname":"stromherd","sensor":"manuell","i2c":0}, "1C1":{"varname":"km","sensor":"berlingo","i2c":0}, "1C2":{"varname":"diesel","sensor":"berlingo","i2c":0}, - "1C3":{"varname":"preis","sensor":"berlingo","i2c":0} + "1C3":{"varname":"preis","sensor":"berlingo","i2c":0}, + "1D0":{"varname":"temperatur","sensor":"w1therm","i2c":0}, + "1D1":{"varname":"temperatur","sensor":"w1therm","i2c":1}, + "1D2":{"varname":"temperatur","sensor":"w1therm","i2c":2}, + "1D3":{"varname":"temperatur","sensor":"w1therm","i2c":3}, + "1D4":{"varname":"temperatur","sensor":"w1therm","i2c":4} +} } diff --git a/log_sds.py b/log_sds.py index 0a08724..ac3931c 100644 --- a/log_sds.py +++ b/log_sds.py @@ -7,6 +7,8 @@ from serial import Serial import os, time,socket,sys,json,random,sds011 from meas_data import meas_data +sensor="sds011" + pathname = os.path.dirname(sys.argv[0]) abspath=os.path.abspath(pathname) @@ -18,6 +20,14 @@ except: log_conf=json.load(cf) cf.close() +idf=open(abspath+"/id.json","r") +idlist=json.load(idf)["id"] +sens_id={} +for ids in idlist: + if "sensor" in idlist[ids]: + if idlist[ids]["sensor"]==sensor: + sens_id[ids]=idlist[ids] +idf.close() parameter={"device":socket.gethostname(),"mean_count":2,"ring_length":30,"wait":0.1,"cycle":20,"check_last":2,"gpg_keyid":"","usbport":"/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0","meascount":5,"meassleep":30} for n in parameter: @@ -25,20 +35,27 @@ for n in parameter: parameter[n]=log_conf[n] bsds=False -if "sds011" in log_conf: +if sensor in log_conf: bsds=True for n in parameter: - if n in log_conf['sds011']: - parameter[n]=log_conf['sds011'][n] + if n in log_conf[sensor]: + parameter[n]=log_conf[sensor][n] try: sensor=sds011.SDS011(parameter['usbport'],use_query_mode=True) except: bsds=False else: - pm25=meas_data(var_name="pm25",ring_length=parameter['ring_length'],device=parameter['device'],sensor="SDS011",store_dir="/home/pi/log/",digits=3,check_last=parameter['check_last']) - pm25.set_sql(host="localhost",port=8080,min_wait=parameter['wait']) - pm10=meas_data(var_name="pm10",ring_length=parameter['ring_length'],device=parameter['device'],sensor="SDS011",store_dir="/home/pi/log/",digits=3,check_last=parameter['check_last']) - pm10.set_sql(host="localhost",port=8080,min_wait=parameter['wait']) + bpm25=False + bpm10=False + for ids in sens_id: + if sens_id[ids]['varname']=="pm25": + bpm25=True + pm25=meas_data(var_name="pm25",ring_length=parameter['ring_length'],device=parameter['device'],sensorid=sens_id[ids],store_dir="/home/pi/log/",digits=3,check_last=parameter['check_last']) + pm25.set_sql(host="localhost",port=8080,min_wait=parameter['wait']) + if sens_id[ids]['varname']=="pm10": + bpm10=True + pm10=meas_data(var_name="pm10",ring_length=parameter['ring_length'],device=parameter['device'],sensorid=sens_id[ids],store_dir="/home/pi/log/",digits=3,check_last=parameter['check_last']) + pm10.set_sql(host="localhost",port=8080,min_wait=parameter['wait']) bmqtt=False if "mqtt" in log_conf: diff --git a/meas_data.py b/meas_data.py index 776855b..cba7bed 100644 --- a/meas_data.py +++ b/meas_data.py @@ -12,7 +12,7 @@ gpg=gnupg.GPG() _STRINGREMOVE=str.maketrans(dict.fromkeys("/:;\\{}(){]%&")) class meas_data: - def __init__(self,var_name,ring_length=100,sigma=2,device=socket.gethostname(),sensor="CPU",i2c=0,store_dir="/home/pi/data",multiplicator=1,digits=5,check_last=0,mac=0,sql_min_wait=5,rsa_key="",check_last_shrinking=0.99,mean_count=5,store_each_cycle=False): + def __init__(self,var_name,ring_length=100,sigma=2,device=socket.gethostname(),sensor="CPU",i2c=0,store_dir="/home/pi/data",multiplicator=1,digits=5,check_last=0,mac=0,sql_min_wait=5,rsa_key="",check_last_shrinking=0.99,mean_count=5,store_each_cycle=False,sens_id={'varname':"",'sensor':"CPU",'i2c':0}): self.set_varname(var_name) self.value=[] self.act_value=0 @@ -45,6 +45,7 @@ class meas_data: self.set_check_last(check_last,check_last_shrinking) self.set_i2c(i2c) self.set_multiplicator(multiplicator) + self.set_sensid(sens_id) self.mqtt_broker="" self.mqtt_port=1883 self.mqtt_topic="" @@ -56,6 +57,15 @@ class meas_data: self.sql_out="" 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":{}}} self.set_file_log(store_dir) + def set_sensid(self,sens_id): + if "varname" in sens_id: + self.set_varname(sens_id["varname"]) + if "sensor" in sens_id: + self.set_sensor(sens_id["sensor"]) + if "i2c" in sens_id: + self.set_i2c(sens_id["i2c"]) + if "channel" in sens_id: + self.set_channel(sens_id["channel"]) def set_store_cycle(self,store_each_cycle): self.bstoreeach=False if isinstance(store_each_cycle,bool): @@ -91,6 +101,11 @@ class meas_data: self.i2c=i2c else: self.i2c=0 + def set_channel(self,channel): + if (isinstance(channel,(int,float)) and not isinstance(channel,bool)): + self.channel=channel + else: + self.channel=0 def set_varname(self,var_name): tvn=var_name.translate(_STRINGREMOVE) if len(tvn)==0: