Variablen auf Website darstellen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    gerne möchte ich über einem Webserver Variablen darstellen können. Die Variablen/Daten kommen in meinem Fall von einem STM32 über eine virtuelle COM-Schnittstelle über USB.

    Meine Idee bisher ist es, mit einem Python Script die Daten des Controllers auszuwerten und anschließend irgendwie auf meiner Website darzustellen. Da hapert es leider etwas bei mir. Die Variablen sollten etwa sekündlich aktualisiert werden . Eventuell könnte ich das ganze über eine Datenbank und PHP machen.

    Hat jemand von euch vielleicht einen geeigneten Ansatz bevor ich mich in irgendwelchen umständlichen Sachen verstricke.

    Vielen Dank schonmal :)

    Gruß

  • Die Stichwoerter sind: flask fuer den Python-Server, AJAX fuer den Update der Seite (WebSockets wuerden natuerlich ebenfalls gehen)

    Hm... so gnaz sicher bin ich mir noch nicht wie ich das gestalten möchte. Meine aktuelle Website läuft auf einm nginx Server den ich gerne beibehalten würde. Die darauf laufende Seite würde ich gerne so erweitern, dass die Variablen angezeigt werden.

    Bisher macht es bei mir so den Eindruck als wenn node.js oder ein python server notwendig wären.

  • flask laeuft problemlos hinter dem nginx

    Ich habe flask jetzt auf dem Pi zum Austesten zum laufen bekommen. Allerdings noch one WSGI Server. Wenn ich jetzt meine index.html Datei öffne klappt das auch soweit, nur werden mir keine Grafiken und ein darin enthaltener Videostream angezeigt. Ich vermute, dass das verwendete Python Programm keine Rechte hat auf die Unterordner zuzugreifen?

    Hier ist die Fehlermeldung in der Konsole:

    * Serving Flask app "hello" (lazy loading)

    * Environment: production

    WARNING: This is a development server. Do not use it in a production deployment.

    Use a production WSGI server instead.

    * Debug mode: off

    * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)

    192.7.100.44 - - [11/Dec/2020 11:04:19] "GET / HTTP/1.1" 200 -

    192.7.100.44 - - [11/Dec/2020 11:04:19] "GET /img/Record_icon.png HTTP/1.1" 404 -

    192.7.100.44 - - [11/Dec/2020 11:04:19] "GET /img/M_icon.png HTTP/1.1" 404 -

    192.7.100.44 - - [11/Dec/2020 11:04:20] "GET /img/M_icon.png HTTP/1.1" 404 -

    192.7.100.44 - - [11/Dec/2020 11:04:20] "GET /hls/picam.m3u8 HTTP/1.1" 404 -

  • Hallo,

    ich glaube, du hast einen Gedankenfehler. Flask ist für die _dynamisch_ generierten Seiten da, die du im Falle von Flask üblicherweise mit der Jinja2 Template Engine, die Teil von Flask ist, baust.

    Die statischen Seiten bzw. statischen Content jeder Art liefert nach wie vor nginx aus. Und die URLs auf den statischen müssen natürlich stimmt. I.d.R. macht man das so, dass man auf dem Webserver `http://IP_DES_SERVERS/static` als Route anlegt und man darauf alles zieht.

    Sonst zeig' doch mal dein Template und beschreibe, wo welche Datei liegt.

    Gruß, noisefloor

  • Hallo,

    ich glaube, du hast einen Gedankenfehler. Flask ist für die _dynamisch_ generierten Seiten da, die du im Falle von Flask üblicherweise mit der Jinja2 Template Engine, die Teil von Flask ist, baust.

    Die statischen Seiten bzw. statischen Content jeder Art liefert nach wie vor nginx aus. Und die URLs auf den statischen müssen natürlich stimmt. I.d.R. macht man das so, dass man auf dem Webserver `http://IP_DES_SERVERS/static` als Route anlegt und man darauf alles zieht.

    Sonst zeig' doch mal dein Template und beschreibe, wo welche Datei liegt.

    Gruß, noisefloor

    Im wesentlichen soll die Website eigentlich nur aus einer Seite bestehen. In einem Livestream wird mit HLS die PiCam gestreamt. Das klappt auch soweit. Allerdings möchte ich jetzt gerne auch ein paar Variablen und Daten aus dem Pi auf der Website anzeigen. Zum Beispiel den Status von einigen GPIOs, die CPU Temperatur usw.

    Momentan befindet sich meine index.html im /var/www/html Verzeichnis. die Bilder liegen in einem Unterverzeichnis namens "img". Zum Testen hatte ich die index.html und den img Ordner in meinen Testordner kopiert -> /var/www/demoapp/templates

    Die index.html wird wie oben beschrieben geöffnet allerdings lassen sich die Bilder nicht öffnen.

    Hier eine beispielhafte Pfadangabe in der index.html:

                    <img src="img/Record_icon.png" alt="record icon" width="30" height="30">

  • Hallo,

    die Pfadangabe ist ja auch nicht richtig. Wenn nginx parallel aus Webserver läuft, dann wäre die URL `http://IP_VON_NGINX/img/bildname.png`.

    Flask liefert - wie alle Python Webframework - keinen statischen Content aus.

    Es gibt übrigens keine wirklichen Grund, dein Flask-App nach /var/www/ zu legen. Bzw. das ist unnötig umständlich wegen der Rechte.

    Dein Flask-App kann ruhig in z.B. einem Unterverzeichnis des Homeverzeichnisses liegt und mit Nutzerrechten laufen. Wenn du das am Ende produktiv nutzt, wird dein App sowie so von einen WSGI-Applikationsserver wie gunicorn ausgeliefert, vor dem nginx als Reverse-Proxy läuft.

    Gruß, noisefloor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!