Hallo, ich suche Tipps und Tricks zum Darstellen von Stromverbrauchsdaten pro Stunde als dynamische Webseite.
Meine Verbrauchsdaten sind in einer mariadb per timestamp pro Umdrehung (Ferraris-Scheibe) gespeichert.
Jetzt sollen diese Daten dynamisch als Webseite im lokalen Netz auf dem Apache visualisiert werden.
Programmierkenntnisse habe ich in Python, jedoch nicht Java, html, php, ....
Nun habe ich unter Data Source Python Library eine für mich erstmal praktische Lösung gefunden, welche in einem Python-Programm eine HTML-Vorlage enthält mit Platzhaltern
für die Daten, welche in der main() - Funktion in die Variablen "description" und "data" aufbereitet werden.
Am Ende wird dann per print die Vorlage mit % und Varaiable ausgegeben. So mein Verständnis des Beispielprogramms.
Wenn das funktionieren würde, bräuchte ich nur mit meinen Python- und sql-Kenntnissen die listen "description" und "data" aufbereiten. Das wäre es dann ....
Allerdings bekomme ich es auf meinem raspi nicht zum Laufen.
Vielleicht kann sich ja mal ein Profi von Euch den nachfolgenden der Beispiel-Code von Google anschauen
Bei den print-Befehlen fehlten die öffnende und schließende Klammer sowie die Einrückung nach def ... : und if ... :
habe ich berichtigt. Thonny sagt, der Code sei in Ordnung
Nun noch eine, hoffentlich, letzte Frage:
Muss dieses Python-Programm dann im Verz. /var/www/html als prog_name.py abgespeichert werden oder als prog_name.html?
#!/usr/bin/python
import gviz_api
page_template = """
<html>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script>
google.charts.load('current', {packages:['table']});
google.charts.setOnLoadCallback(drawTable);
function drawTable() {
%(jscode)s
var jscode_table = new google.visualization.Table(document.getElementById('table_div_jscode'));
jscode_table.draw(jscode_data, {showRowNumber: true});
var json_table = new google.visualization.Table(document.getElementById('table_div_json'));
var json_data = new google.visualization.DataTable(%(json)s, 0.6);
json_table.draw(json_data, {showRowNumber: true});
}
</script>
<body>
<H1>Table created using ToJSCode</H1>
<div id="table_div_jscode"></div>
<H1>Table created using ToJSon</H1>
<div id="table_div_json"></div>
</body>
</html>
"""
def main():
# Creating the data
description = {"name": ("string", "Name"),
"salary": ("number", "Salary"),
"full_time": ("boolean", "Full Time Employee")}
data = [{"name": "Mike", "salary": (10000, "$10,000"), "full_time": True},
{"name": "Jim", "salary": (800, "$800"), "full_time": False},
{"name": "Alice", "salary": (12500, "$12,500"), "full_time": True},
{"name": "Bob", "salary": (7000, "$7,000"), "full_time": True}]
# Loading it into gviz_api.DataTable
data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
# Create a JavaScript code string.
jscode = data_table.ToJSCode("jscode_data",
columns_order=("name", "salary", "full_time"),
order_by="salary")
# Create a JSON string.
json = data_table.ToJSon(columns_order=("name", "salary", "full_time"),
order_by="salary")
# Put the JS code and JSON string into the template.
print ("Content-type: text/html")
print
print (page_template % vars())
if __name__ == '__main__':
main()
Display More