#!/usr/bin/env python from flask import Flask, flash, redirect, render_template_string from flask import render_template, request, session, abort import os app = Flask(__name__) def button_widget(topic, label, pub_value): def f(): template = '''
''' return render_template_string( template, topic=topic, label=label, pub_value=pub_value) return f def label_widget(topic, label, unit=''): def f(): template = '''
-{{unit}}
{{label}}
''' return render_template_string( template, topic=topic, label=label, unit=unit) return f def log_widget(topic, label): def f(): template = '''
{{label}}
''' return render_template_string(template, topic=topic, label=label) return f def row_layout(title, *elems): def f(): template = '''
{{title}}
{% for w in elems %} {{w()|safe}} {% endfor %}
''' return render_template_string(template, title=title, elems=elems) return f @app.route('/') def home(): return render_template( 'base.html', widgets=[ label_widget("test", "test value", "%"), row_layout( "Temperature", label_widget("home/sensors/livingroom/temperature", "livingroom", "°C"), label_widget("home/sensors/office/temperature", "office", "°C"), label_widget("home/sensors/bedroom/temperature", "bedroom", "°C")), row_layout("Device logs", log_widget("test", "test log"), log_widget("test2", "test log 2")), button_widget("test", "set to 1", 1), button_widget("test", "set to foo", 'foo') ]) if __name__ == "__main__": app.secret_key = os.urandom(12) app.run(debug=True, host='0.0.0.0', port=4000)