Seite 1 von 1

Darstellung von Variablen-Werten auf einer Website

Verfasst: Dienstag 5. Dezember 2017, 22:42
von Faraday
Guten Tag,

ich suche derzeit für folgendes Problem eine Lösung. Ich würde gerne die Werte von Python-Variablen auf einer Website ausgeben. Es handelt sich im Wesentlichen um Zahlenwerte (Temperaturen), die online für Fernzugriff angezeigt werden müssen.
Ein Webserver mit index-html-Datei existiert auf der gleichen Maschine. Ich würde gerne auf eine Datenbank verzichten.

Die Frage ist also zusammengefasst: wie schreibe ich die Werte aus Python-Variablen am einfachsten in eine index.html Datei? Oder gibt es einen anderen, einfacheren Weg? Die Werte aktualisieren sich einmal pro Sekunde, also relativ häufig.

Ich bin um jeden Hinweis dankbar, da ich derzeit damit kaum weiter komme.. danke!

Faraday

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Dienstag 5. Dezember 2017, 23:07
von __deets__
Die schreibst du nicht in eine HTML Seite. Sondern du benutzt ein Rahmenwerk zur Webserver-Programmierung wie zB bottle, und erzeugst damit die Webseite auf Anforderung. Gefüttert mit den Temperaturrrn entweder bei bedarf, oder sammeln in einem Hintergrund-Thread.

Solltest du deine esoterische Ablehnung einer Datenbank überwinden können, kannst du stattdessen auch zb das RDD-Tool verwenden, welches gleich die Darstellung als Graph erlaubt. Das kommt dann mit deutlich weniger Programmierung aus.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Dienstag 5. Dezember 2017, 23:35
von snafu
Du könntest die Daten im JSON-Format ausliefern. Schau dir im Fall von Flask dazu am besten mal flask.jsonify() an.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Dienstag 5. Dezember 2017, 23:40
von Faraday
Danke für die Hinweise bis hierhin. Ich werde mir das definitiv ansehen! Meine "esoterische" Ablehnung basiert eigentlich nur darauf, dass ich fürchte, dass ich es ohnehin nicht beherrschen werde. Ich bin Starkstromtechniker von Beruf, und ich brauche die Werte eigentlich nur zu Überwachung eines experimentellen Aufbaus aus der Ferne (es sind auch nicht nur Temperaturen, sondern noch andere Werte).

Für mein Verständnis: bottle läuft als Teil des Webservers?
Danke für Eure Unterstützung, die ich sehr schätze.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 00:00
von __deets__
Nein, bottle ist selbst ein Webserver. Geschrieben in Python, nur eine Datei runter laden zur Installation, und wenige Zeilen Code.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 00:24
von snafu
@Faraday:
Liefer mal bitte ein Muster, damit man sehen kann, in welcher Form die Original-Daten vorliegen. Nutzt du eine Datei, serielle Schnittstelle oder ähnliches als Datenquelle? Muss der Empfänger nur den Ist-Zustand oder auch alle bisherigen Daten seit der letzten Abfrage sehen können?

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 09:08
von noisefloor
Hallo,

@Faraday: Webprogrammierung läuft unter Python so: du nutzt WSGI, das ist der de-facto Standard unter Python in Kombination mit einem WSGI-Rahmenwerk wie Bottle. Bei WSGI funktioniert so (vereinfacht gesagt): du bindest eine URL an eine Python-Funktion, die beim Aufruf der URL ausgeführt wird. In deinem Falle würde dann die HTML Seite mit Hilfe der Template Engine von Bottle dynamisch "on the fly" gebaut, inkl. deinem Sensor Wert. Bottle bringt einen eigenen Server mit, der reicht für dein Anliegen (erst mal).

Das mag vielleicht kompliziert klingen, ist es aber nicht. Wie __deets__ schon sagt, dass sind ~10 Zeilen Code plus der Code / das HTML für das Template. Hast du schon auf die Webseite von Bottle geschaut?

Gruß, noisefloor

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 17:52
von Faraday
Hallo. Hier zur Präzisierung meines Projekts:

die Daten werden von einem Sensor als serieller Datenstrom einmal pro Sekunde geliefert und über USB in einen Raspberry geschickt. Ich habe bereits geschafft, die Daten aus dem Datenstrom der Schnittstelle zu lesen und jeden Wert in einer Python-Variable abzulegen und auch am Bildschirm im Terminal auszugeben. Das funktioniert. Es läuft also ein Python-Programm, welches sekündlich die Daten liest und lokal im Terminal anzeigt. Alles was jetzt noch fehlt ist, diese Daten online auf einer Website anzuzeigen. :-)

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 17:58
von __deets__
"Alles" ist halt so ziemlich alles. Das bisschen serielle Schnittstelle lesen ist da leider der kleinste Teil.

Es kommt fuer das vorgehen darauf an, was fuer eine Darstellung du fuer die Daten willst. Da hast du trotz nachfrage nicht drauf geantwortet. Reicht dir eine Darstellung vom ist-wert? Bzw. von einer Reihe von Ist-werten? Dann ist das ganze mit bottle recht einfach zu machen.

Oder brauchst du auch den Verlauf, willst also eine Grafik mit einer Temperaturkurve? Dann wird es deutlich komplizierter, und es bietet sich eben so etwas wie das RDD-Tool.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 18:36
von Faraday
Dann war ich nicht präzise genug, bitte um Entschuldigung.
Ich möchte die Daten zur Fernüberwachung der Anlagenparameter nutzen, also eine reine Anzeige der aktuellen Werte. Jede Sekunde aktualisiert sich der Wert, aber es wird eben immer nur der aktuelle Wert angezeigt.
Keine Historie, keine Diagramme, nichts. Das KANN man irgendwann mal machen, wenn ich verstehe, was da überhaupt passiert. Im ersten Schritt genügt es mir, den Inhalt von zirka 5-10 Variablen online anzuzeigen. Mehr nicht.
Eine Selbst-Aktualisierung der Website wäre ein Traum, also so dass man immer automatisch den aktuellen Wert sieht, und nicht auf "aktualisieren" klicken muss.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 18:50
von snafu
Wie gut sind denn deine Kenntnisse in Sachen Webseitenprogrammierung? Traust du dir zu, die Daten selbst grafisch aufzubereiten? Weißt du wie man eine Seite automatisch neuladen kann? Dann müsstest du ja nur ein entsprechendes Template erstellen und die aktuellen Daten mittels Bottle oder Flask dort einfügen.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 19:03
von Faraday
Meine Kenntnisse sind sehr gering, deswegen frage ich hier ja so blöd. :-)
Ich habe das mit der Auto-Aktualisierung schonmal mit einer simplen Index-PHP Datei gemacht, das war ein Befehl im Verzeichnis soweit ich weiß. Das wäre nicht das Problem. Kann jemand mal ein super einfaches Beispiel geben wie so ein Code aussehen könnte, wenn man annimmt, dass z.B. eine Integer in Variable A liegt? In A liegt jetzt jede Sekunde ein neuer Integer-Wert. Wie bekomme ich den auf die Website wenn ich Bottle installiert habe?

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 19:08
von __deets__
So geht das mit bottle (abgewandelt vom offiziellen Tutorial https://bottlepy.org/docs/dev/tutorial. ... ello-world)

Code: Alles auswählen

from bottle import route, run

temperatur = 20.9

@route('/hello')
def hello():
    return "Temperatur: {}".format(temperatur)

run(host='localhost', port=8080, debug=True)
Danach kannst du auf "http://deincomputer:8080/hello" die Temperatur auslesen.

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 19:41
von Sirius3
Mit dynamischer Aktualisierung:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
import bottle
import time
import random

@bottle.route("/")
def slow():
    yield u"<html><div>Current temperature: <span id='tmp'></span>°C</div>\n"
    while True:
        current_temperature = random.random()*5+18
        yield "<script>document.getElementById('tmp').innerHTML='%.1f';</script>\n" % current_temperature
        time.sleep(1)

bottle.run()

Re: Darstellung von Variablen-Werten auf einer Website

Verfasst: Mittwoch 6. Dezember 2017, 20:09
von Faraday
Ich danke sehr herzlich und werde das so bald ich kann ausprobieren! Herzlichen Dank für alle Hinweise und Tipps!