66 lines
2.6 KiB
Python
Executable File
66 lines
2.6 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import cherrypy
|
|
import time
|
|
import config
|
|
|
|
# Icons
|
|
tea_temp_icon = 'https://bastart.spoton.cz/static/img/temperature_icon.png'
|
|
tea_hum_icon = 'https://bastart.spoton.cz/static/img/humidity_icon.png'
|
|
tea_bat_icon = 'https://bastart.spoton.cz/static/img/temperature_icon.png'
|
|
|
|
|
|
class PuerhInfo(object):
|
|
@cherrypy.expose
|
|
def index(self):
|
|
header = config.read_html('header', config._templates)
|
|
menu_raw = config.read_html('top_menu', config._templates)
|
|
menu = menu_raw.format(energy = '', weather = '',
|
|
status = '', temphumi = 'active')
|
|
body = self.body()
|
|
footer = config.read_html('footer', config._templates)
|
|
result = header\
|
|
+ menu\
|
|
+ body\
|
|
+ footer
|
|
return result
|
|
|
|
def currentState(self):
|
|
self.influx_weather_client = config.Conf.influx_weather_client
|
|
query1 = "SELECT time, humidity, temperature, battery, type from usense"
|
|
tea_var = "WHERE type = 'Tea'"
|
|
query2 = "AND time < NOW() - 10m ORDER BY time DESC LIMIT 1"
|
|
tea_query = "{} {} {}".format(query1, tea_var, query2)
|
|
|
|
results = self.influx_weather_client.query(tea_query)
|
|
|
|
|
|
# returned is a list, in this case, we just need one value [0]
|
|
result_tea_temp = [temperature for temperature in results][0][0]
|
|
result_tea_hum = [humidity for humidity in results][0][0]
|
|
result_tea_bat = [battery for battery in results][0][0]
|
|
# Put the time to a human readable format, strip nanosecs
|
|
time_stamp = time.strptime(result_tea_temp['time'].split('.')[0],
|
|
"%Y-%m-%dT%H:%M:%S")
|
|
result = {}
|
|
|
|
result.update({"time": time_stamp})
|
|
result.update({'temperature': result_tea_temp['temperature']})
|
|
result.update({'humidity': result_tea_hum['humidity']})
|
|
result.update({'battery': result_tea_bat['battery']})
|
|
|
|
return result
|
|
|
|
def body(self):
|
|
admin_preformat = config.read_html('temphumi_admin', config._templates)
|
|
current_temphumi = self.currentState()
|
|
admin_html = admin_preformat.format(
|
|
timestamp = time.strftime("%d.%m.%Y %H:%M:%S",
|
|
current_temphumi['time']),
|
|
temp_value = current_temphumi['temperature'],
|
|
hum_value = current_temphumi['humidity'],
|
|
bat_value = round(current_temphumi['battery'] / 1023, 2),
|
|
tea_temp_icon = tea_temp_icon,
|
|
tea_hum_icon = tea_hum_icon,
|
|
tea_bat_icon = tea_bat_icon)
|
|
return admin_html
|