def get_historical_BoM(site_pk, start_at): """ Get Historical Data from VRM to backfill any days """ i = Influx() count = 0 site = Sesh_Site.objects.get(pk=site_pk) site_id = site.vrm_site_id if not site_id: logger.info("skipping site %s has not vrm_site_id" % site) return 0 vh_client = VictronHistoricalAPI(site.vrm_account.vrm_user_id, site.vrm_account.vrm_password) #site_id is a tuple #print "getting data for siteid %s starting at %s"%(site.vrm_site_id,start_at) data = vh_client.get_data(site_id, start_at) logger.debug("Importing data for site:%s" % site) for row in data: try: parsed_date = datetime.strptime(row.get('Date Time'), '%Y-%m-%d %X') date = time_utils.localize(parsed_date, tz=site.time_zone) data_point = BoM_Data_Point( site=site, time=date, soc=row.get('Battery State of Charge (System)', 0), battery_voltage=row.get('Battery voltage', 0), AC_input=row.get('Input power 1', 0), AC_output=row.get('Output power 1', 0), AC_Load_in=row.get('Input current phase 1', 0), AC_Load_out=row.get('Output current phase 1', 0), inverter_state=row.get('VE.Bus Error', ''), pv_production=row.get('PV - AC-coupled on input L1', 0), # IF null need to put in 0 #TODO these need to be activated genset_state=0, relay_state=0, ) date = row.get('Date Time') with transaction.atomic(): data_point.save() send_to_influx(data_point, site, date, to_exclude=['time', 'inverter_state', 'id'], client=i, send_status=False) count = count + 1 if count % 100: logger.debug("imported %s points" % count) #print "saved %s BoM data points"%count except IntegrityError, e: logger.warning("data point already exist %s" % e) pass except ValueError, e: logger.warning("Invalid values in data point dropping %s" % (e)) pass
def get_historical_BoM(site_pk,start_at): """ Get Historical Data from VRM to backfill any days """ i = Influx() count = 0 site = Sesh_Site.objects.get(pk=site_pk) site_id = site.vrm_site_id if not site_id: logger.info("skipping site %s has not vrm_site_id"%site) return 0 vh_client = VictronHistoricalAPI(site.vrm_account.vrm_user_id,site.vrm_account.vrm_password) #site_id is a tuple #print "getting data for siteid %s starting at %s"%(site.vrm_site_id,start_at) data = vh_client.get_data(site_id,start_at) logger.debug("Importing data for site:%s"%site) for row in data: try: parsed_date = datetime.strptime(row.get('Date Time'),'%Y-%m-%d %X') date = time_utils.localize(parsed_date, tz=site.time_zone) data_point = BoM_Data_Point( site = site, time = date, soc = row.get('Battery State of Charge (System)', 0), battery_voltage = row.get('Battery voltage', 0), AC_input = row.get('Input power 1', 0), AC_output = row.get('Output power 1', 0), AC_Load_in = row.get('Input current phase 1', 0), AC_Load_out = row.get('Output current phase 1', 0), inverter_state = row.get('VE.Bus Error', ''), pv_production = row.get('PV - AC-coupled on input L1', 0), # IF null need to put in 0 #TODO these need to be activated genset_state = 0, relay_state = 0, ) date = row.get('Date Time') with transaction.atomic(): data_point.save() send_to_influx(data_point, site, date, to_exclude=['time','inverter_state','id'],client=i, send_status=False) count = count +1 if count % 100: logger.debug("imported %s points"%count) #print "saved %s BoM data points"%count except IntegrityError, e: logger.warning("data point already exist %s"%e) pass except ValueError,e: logger.warning("Invalid values in data point dropping %s"%(e)) pass
def get_historical_BoM(date_range=5): """ Get Historical Data from VRM to backfill any days """ datetime_now = datetime.now() datetime_start = datetime_now - timedelta(date_range) datetime_now_epoch = time_utils.get_epoch_from_datetime(datetime_now) datetime_start_epoch = time_utils.get_epoch_from_datetime(datetime_start) sites = Sesh_Site.objects.all() count = 0 for site in sites: v_client = VictronAPI(site.vrm_user_id,site.vrm_password) vh_client = VictronHistoricalAPI(site.vrm_user_id,site.vrm_password) site_id = site.vrm_site_id for site_id in v_client.SYSTEMS_IDS: #site_id is a tuple data = vh_client.get_data(site_id[0],datetime_start_epoch,datetime_now_epoch) for row in data: data_point = BoM_Data_Point( site = site, time = row['Date Time'], soc = row['Battery State of Charge (System)'], battery_voltage = row['Battery voltage'], AC_input = row['Input power 1'], AC_output = row['Output power 1'], AC_Load_in = row['Input current phase 1'], AC_Load_out = row['Output current phase 1'], inverter_state = row['VE.Bus Error'], #TODO these need to be activated genset_state = "off", relay_state = "off", ) data_point.save() count = count +1 print "saved %s BoM data points"%count