From 8b64d3e12059be1754813b4b32330c82d4df7f2f Mon Sep 17 00:00:00 2001 From: ademant Date: Thu, 27 Jun 2019 04:50:20 +0200 Subject: [PATCH] add ve direct as sensor --- log_vedirect.py | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ vedirect.py | 1 + 2 files changed, 82 insertions(+) create mode 100644 log_vedirect.py diff --git a/log_vedirect.py b/log_vedirect.py new file mode 100644 index 0000000..deb444f --- /dev/null +++ b/log_vedirect.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python + +import numpy as np +import os, serial,time,socket,sys,json,logging,requests,getopt +from meas_data import meas_data +# import the server implementation +# import ADC +#import vedirect +#import upload_osm + +configfile="config.json" +cf=open(configfile,"r") +log_conf=json.load(cf) +cf.close() + +channel_names=[] +channel_info={} + +parameter={"device":socket.gethostname(),"mean_count":5,"ring_length":10,"wait":0.5,"sigma":2} +for n in parameter: + if n in log_conf: + parameter[n]=log_conf[n] + +if "sqlserver" in log_conf: + hostname="banana" + if "host" in log_conf['sqlserver']: + hostname=log_conf['sqlserver']['host'] + port=24048 + if "port" in log_conf['sqlserver']: + port=int(log_conf['sqlserver']['port']) + +# declare ve mppt +bve=False +if "vedirect" in log_conf: + from vedirect import vedirect + bve=True + if "enable" in log_conf['vedirect']: + if log_conf['vedirect']['enable'] == 0: + bve=False + if "port" in log_conf['vedirect']: + bve_port=log_conf['vedirect']['port'] + else: + bve_port='/dev/serial/by-id/usb-VictronEnergy_BV_VE_Direct_cable_VE1SSBVT-if00-port0' + print(bve_port) + try: + ve=vedirect(bve_port,60) + except: + bve=False + else: + tsl_sigma=parameter['sigma'] + if "sigma" in log_conf['vedirect']: + tsl_sigma=int(log_conf['vedirect']['sigma']) + if tsl_sigma < 1: + tsl_sigma=1 + varnames={"volt_bat_ve":"V","volt_arr_ve":"VPV","amp_ve":"I","watt_ve":"PPV","days_ve":"HSDS"} + for i in varnames: + channel_info[i]={"meas_data": meas_data(var_name=i,ring_length=parameter['ring_length'],device=parameter['device'],sensor="VEdirect",i2c=0,store_file="/home/pi/log/data_ve",sigma=tsl_sigma)} + if "sqlserver" in log_conf: + channel_info[i]['meas_data'].set_sql(host=hostname,port=port) + + +if badc: + while True: + + try: + vedata=ve.read_data_single() + except: + print("could not read VE") + else: + for i in varnames: + cn=varnames[i] + if cn in vedata: + channel_info[i]['meas_data'].append(int(vedata[cn])) + + time.sleep(parameter['wait']) + + +# close the client +print("done") + + diff --git a/vedirect.py b/vedirect.py index e807e57..e9f7457 100644 --- a/vedirect.py +++ b/vedirect.py @@ -80,6 +80,7 @@ class vedirect: callbackFunction(packet) else: break + def print_data_callback(data): print data # end import vedirect