Chttpd generalisation, external data expunge
This commit is contained in:
163
web/dynamic.py
163
web/dynamic.py
@@ -332,166 +332,3 @@ class DynamicData(object):
|
|||||||
except:
|
except:
|
||||||
disk_value = ''
|
disk_value = ''
|
||||||
yield "{},{},{},{}\n".format(tm, cpu_value, mem_value, disk_value)
|
yield "{},{},{},{}\n".format(tm, cpu_value, mem_value, disk_value)
|
||||||
|
|
||||||
|
|
||||||
@cherrypy.expose
|
|
||||||
def historical_values(self, **kwargs):
|
|
||||||
'''
|
|
||||||
Function to all historical readings from InfluxDB.
|
|
||||||
These parsed into a CSV? Dict?
|
|
||||||
|
|
||||||
returns: csv in raw, text format
|
|
||||||
time, V_solar, I_solar
|
|
||||||
|
|
||||||
select mean(I_solar) as I_solar from voltage where time > now() - 10m group by time(30s) order by time desc
|
|
||||||
'''
|
|
||||||
|
|
||||||
# GET variables now set, ready to reference them
|
|
||||||
|
|
||||||
measure_range = kwargs['range']
|
|
||||||
query1 = "SELECT mean(V_array) as Uarr, mean(I_consumption) as Icon, "
|
|
||||||
query2 = "mean(V_solar) as Usol, mean(I_solar) as Isol, "
|
|
||||||
query3 = "mean(V_unit1) as Us1, mean(V_unit2) as Us2, max(charging) as charge FROM voltage"
|
|
||||||
query4 = "WHERE time > NOW() - {} GROUP BY time(30s)".format(measure_range)
|
|
||||||
query5 = "ORDER BY time DESC"
|
|
||||||
query = "{} {} {} {} {}".format(query1, query2, query3, query4, query5)
|
|
||||||
measures = self.influx_client.query(query)
|
|
||||||
|
|
||||||
# Let's get the data from DB
|
|
||||||
result = []
|
|
||||||
for datapoint in measures["voltage"]:
|
|
||||||
tm = datapoint['time']
|
|
||||||
try:
|
|
||||||
array_voltage = round(float(datapoint["Uarr"]), 2)
|
|
||||||
current_consumed = round(float(datapoint["Icon"]) / array_voltage, 2)
|
|
||||||
|
|
||||||
solar_voltage = round(float(datapoint["Usol"]), 2)
|
|
||||||
solar_current = round(float(datapoint["Isol"]) / solar_voltage , 2)
|
|
||||||
|
|
||||||
Us1 = round(float(datapoint["Us1"]), 2)
|
|
||||||
Us2 = round(float(datapoint["Us2"]), 2)
|
|
||||||
except:
|
|
||||||
continue
|
|
||||||
|
|
||||||
charging = int(datapoint["charge"])
|
|
||||||
row = {"time": tm,
|
|
||||||
"V_array": array_voltage,
|
|
||||||
"I_consumption": current_consumed,
|
|
||||||
"V_solar": solar_voltage,
|
|
||||||
"I_solar": solar_current,
|
|
||||||
"V_unit1": Us1,
|
|
||||||
"V_unit2": Us2,
|
|
||||||
"charging": charging}
|
|
||||||
result.append(row)
|
|
||||||
return result
|
|
||||||
|
|
||||||
@cherrypy.expose
|
|
||||||
def stat_values(self, **kwargs):
|
|
||||||
'''
|
|
||||||
Function to all historical readings from InfluxDB.
|
|
||||||
These parsed into a CSV? Dict?
|
|
||||||
|
|
||||||
returns: csv in raw, text format
|
|
||||||
24Wh_consumed, 24Wh_solar
|
|
||||||
|
|
||||||
select mean(I_solar) as I_solar from voltage where time > now() - 10m group by time(30s) order by time desc
|
|
||||||
'''
|
|
||||||
|
|
||||||
# GET variables now set, ready to reference them
|
|
||||||
|
|
||||||
_days = kwargs['days']
|
|
||||||
d = datetime.datetime.now()
|
|
||||||
measures = []
|
|
||||||
result = []
|
|
||||||
|
|
||||||
for t_range in range(1, _days*24, 24):
|
|
||||||
day = (d - datetime.timedelta(hours = t_range)).strftime("%Y-%m-%d")
|
|
||||||
query1 = "SELECT mean(V_array) as Uarr, mean(I_consumption) as Icon, "
|
|
||||||
query2 = "mean(V_solar) as Usol, mean(I_solar) as Isol, "
|
|
||||||
query3 = "mean(V_unit1) as Us1, mean(V_unit2) as Us2, max(charging) as charge FROM voltage"
|
|
||||||
query4 = "WHERE time > '{} 00:00:00' AND time < '{} 23:59:59' GROUP BY time(1h) fill(0)".format(day, day)
|
|
||||||
query5 = "ORDER BY time DESC"
|
|
||||||
query = "{} {} {} {} {}".format(query1, query2, query3, query4, query5)
|
|
||||||
measure = self.influx_client.query(query)
|
|
||||||
|
|
||||||
# Let's get the data from DB
|
|
||||||
tm = []
|
|
||||||
Ubat = []
|
|
||||||
Icon = []
|
|
||||||
Usol = []
|
|
||||||
Isol = []
|
|
||||||
Uss1 = []
|
|
||||||
Uss2 = []
|
|
||||||
P_cons = []
|
|
||||||
P_sol = []
|
|
||||||
charging = 0
|
|
||||||
day_result = []
|
|
||||||
|
|
||||||
for datapoint in measure["voltage"]:
|
|
||||||
#print(datapoint)
|
|
||||||
|
|
||||||
tstamp = datapoint['time']
|
|
||||||
array_voltage = round(float(datapoint["Uarr"]), 2)
|
|
||||||
current_consumed = round(float(datapoint["Icon"]), 2)
|
|
||||||
solar_voltage = round(float(datapoint["Usol"]), 2)
|
|
||||||
solar_current = round(float(datapoint["Isol"]), 2)
|
|
||||||
Us1 = round(float(datapoint["Us1"]), 2)
|
|
||||||
Us2 = round(float(datapoint["Us2"]), 2)
|
|
||||||
charge = int(datapoint["charge"])
|
|
||||||
p_consumed = round(float(array_voltage / 1000.00 \
|
|
||||||
* current_consumed / 1000.00), 2)
|
|
||||||
p_solar = round(float(solar_voltage / 1000.00 \
|
|
||||||
* solar_current / 1000.00), 2)
|
|
||||||
|
|
||||||
tm.append(tstamp),
|
|
||||||
Ubat.append(array_voltage),
|
|
||||||
Icon.append(current_consumed),
|
|
||||||
Usol.append(solar_voltage),
|
|
||||||
Isol.append(solar_current),
|
|
||||||
Uss1.append(Us1),
|
|
||||||
Uss2.append(Us2),
|
|
||||||
charging = charging + charge
|
|
||||||
P_cons.append(p_consumed)
|
|
||||||
P_sol.append(p_solar)
|
|
||||||
|
|
||||||
row = {"time": tm,
|
|
||||||
"V_array": Ubat,
|
|
||||||
"I_consumption": Icon,
|
|
||||||
"V_solar": Usol,
|
|
||||||
"I_solar": Isol,
|
|
||||||
"V_unit1": Uss1,
|
|
||||||
"V_unit2": Uss2,
|
|
||||||
"charging": charging,
|
|
||||||
"P_cons": P_cons,
|
|
||||||
"P_sol": P_sol}
|
|
||||||
|
|
||||||
try:
|
|
||||||
day_result = [
|
|
||||||
row['time'][0][0:10],
|
|
||||||
round(min(row['V_array']) / 1000, 2),
|
|
||||||
round(sum(row['I_consumption']) / 1000, 2),
|
|
||||||
round(max(row['V_solar']) / 1000, 2),
|
|
||||||
round(sum(row['I_solar']) / 1000, 2),
|
|
||||||
round(min(row['V_unit1']) / 1000, 2),
|
|
||||||
round(min(row['V_unit2']) / 1000, 2),
|
|
||||||
row['charging'],
|
|
||||||
round(sum(row['P_cons']),2),
|
|
||||||
round(sum(row['P_sol']), 2)
|
|
||||||
]
|
|
||||||
except:
|
|
||||||
day_result = [
|
|
||||||
d.strftime("%Y-%m-%d"),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
# need to compute averages, mate...
|
|
||||||
print(day_result)
|
|
||||||
result.append(day_result)
|
|
||||||
return result
|
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ class WeatherInfo(object):
|
|||||||
wind_gust = influx_weather_client.query(wind_gust_q)
|
wind_gust = influx_weather_client.query(wind_gust_q)
|
||||||
hum_ext = influx_weather_client.query(hum_ext_q)
|
hum_ext = influx_weather_client.query(hum_ext_q)
|
||||||
hum_int = influx_weather_client.query(hum_int_q)
|
hum_int = influx_weather_client.query(hum_int_q)
|
||||||
press = influx_weather_client.query(press_q)
|
#press = influx_weather_client.query(press_q)
|
||||||
presr = influx_weather_client.query(presr_q)
|
#presr = influx_weather_client.query(presr_q)
|
||||||
t_ext = influx_weather_client.query(t_ext_q)
|
t_ext = influx_weather_client.query(t_ext_q)
|
||||||
t_int = influx_weather_client.query(t_int_q)
|
t_int = influx_weather_client.query(t_int_q)
|
||||||
|
|
||||||
@@ -150,10 +150,10 @@ class WeatherInfo(object):
|
|||||||
result_windspeed = [speed for speed in wind_speed][0][0]
|
result_windspeed = [speed for speed in wind_speed][0][0]
|
||||||
result_winddir = [direction for direction in wind_direction][0][0]
|
result_winddir = [direction for direction in wind_direction][0][0]
|
||||||
result_windgust = [gust for gust in wind_gust][0][0]
|
result_windgust = [gust for gust in wind_gust][0][0]
|
||||||
result_hum_int = [y for y in hum_int][0][0]
|
#result_hum_int = [y for y in hum_int][0][0]
|
||||||
result_t_int = [c for c in t_int][0][0]
|
#result_t_int = [c for c in t_int][0][0]
|
||||||
result_press = [z for z in press][0][0]
|
#result_press = [z for z in press][0][0]
|
||||||
result_presr = [a for a in presr][0][0]
|
#result_presr = [a for a in presr][0][0]
|
||||||
result_t_ext = [b for b in t_ext][0][0]
|
result_t_ext = [b for b in t_ext][0][0]
|
||||||
result_hum_ext = [x for x in hum_ext][0][0]
|
result_hum_ext = [x for x in hum_ext][0][0]
|
||||||
|
|
||||||
@@ -168,11 +168,11 @@ class WeatherInfo(object):
|
|||||||
result.update({"direction": round(result_winddir['value'], 1)})
|
result.update({"direction": round(result_winddir['value'], 1)})
|
||||||
result.update({"windgust": round(result_windgust['value'], 1)})
|
result.update({"windgust": round(result_windgust['value'], 1)})
|
||||||
result.update({"humidity_ext": round(result_hum_ext['humidity'], 1)})
|
result.update({"humidity_ext": round(result_hum_ext['humidity'], 1)})
|
||||||
result.update({"humidity_int": round(result_hum_int['humidity'], 1)})
|
#result.update({"humidity_int": round(result_hum_int['humidity'], 1)})
|
||||||
result.update({"pressure": round(result_press['pressure'], 1)})
|
#result.update({"pressure": round(result_press['pressure'], 1)})
|
||||||
result.update({"pressure_raw": round(result_presr['pressure'], 1)})
|
#result.update({"pressure_raw": round(result_presr['pressure'], 1)})
|
||||||
result.update({"temp_ext": round(result_t_ext['temperature'], 1)})
|
result.update({"temp_ext": round(result_t_ext['temperature'], 1)})
|
||||||
result.update({"temp_int": round(result_t_int['temperature'], 1)})
|
#result.update({"temp_int": round(result_t_int['temperature'], 1)})
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def body(self):
|
def body(self):
|
||||||
@@ -197,9 +197,9 @@ class WeatherInfo(object):
|
|||||||
out_temp_icon=fs_out_temperature_icon,
|
out_temp_icon=fs_out_temperature_icon,
|
||||||
out_temp=current_weather['temp_ext'],
|
out_temp=current_weather['temp_ext'],
|
||||||
in_temp_icon=fs_in_temperature_icon,
|
in_temp_icon=fs_in_temperature_icon,
|
||||||
in_temp=current_weather['temp_int'],
|
#in_temp=current_weather['temp_int'],
|
||||||
pressure_icon=fs_pressure_icon,
|
pressure_icon=fs_pressure_icon
|
||||||
pressure=current_weather['pressure'],
|
#pressure=current_weather['pressure'],
|
||||||
raw_pressure=current_weather['pressure_raw']
|
#raw_pressure=current_weather['pressure_raw']
|
||||||
)
|
)
|
||||||
return admin_html
|
return admin_html
|
||||||
|
|||||||
Reference in New Issue
Block a user