Werte auf WebPage dynamisch aktualisieren

  • Hallo zusammen,


    in meinem Projekt verwende ich FLASK als WebServer.

    Auf meiner Page stelle ich z. B. Temperaturwerte dar, die zur Zeit alle 10 Sekunden aktualisiert werden

    => Sprich: Alle 10 s läd die Page neu


    Meine Frage: Gibt es eine einfache Möglichkeit nicht die ganze Page neu zu laden sondern lediglich meine Werte zu refreshen?


    Grüße

    Stefan

  • Hallo nochmals zu diesem Thema ...

    Hier komme ich nicht weiter bzw. habe zwar schon Anleitungen gefunden und gelesen, jedoch nicht wirklich nutzen können.


    Ich habe:

    - Python3 Skript welches via Flask auch eine WebSeite erzeugt

    - einen Temperatursensor, der z. B. alle 5 Sekunden vom Webserver aufgefordert wird einen Wert zu liefern


    Um nicht immer die Webseite neu zu laden gibt es wohl AJAX oder auch andere Methoden.


    Habt ihr eine Schritt für Schritt Anleitung welche erklärt was ich in welcher Reihenfolge zu tun habe?

    Habe es hiermit versucht, jedoch hängen geblieben.

    http://blog.heimetli.ch/ajax-e…che-cgi-raspberry-pi.html


    Bash
    #!/bin/bash
    echo -en "Content-Type: text/plain\r\n\r\n"
    echo -en "$(date '+%d.%m.%Y %H:%M:%S')"

    Z. B. hier. Was für eine Datei und mit welcher Endung ist das hier?



    Code
    http://192.168.1.20/cgi-bin/gettime

    Diese Aufruf, natürlich angepasst an meine ID hat schon mal nicht funktioniert.


    Grüße

    Stefan

  • Jetzt gibt es eine ganz einfache Version mit flask: https://blog.heimetli.ch/sensehat-ajax-flask.html


    - - - - - - -


    Zu den Fragen:


    > Was für eine Datei und mit welcher Endung ist das hier?

    Das ist ein bash-Script und muss unter dem Namen gettime (ohne Endung) im Directory /usr/lib/cgi-bin abgelegt sein (Voraussetztung: ein Apache-Server)


    Das kann durch eine flask-Route ersetzt werden die Datum und Zeit als Plain Text in dieser Art zurueckgibt: 25.07.2019 21:55:58

    Edited once, last by Tell ().

    • Official Post

    (das ist nur was für Windows User

    so nicht ganz richtig. Dateiendungen haben schon Ihren Sinn - man kann vornab erkennen was drin ist. 95% alle Bashscripte werden als .sh abgespeichert, für python (.py) gilt das gleiche. Und das machen nicht nur die Windowsuser so :shy:

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Ich denke, bei der Aussage bezüglich der extension unter Linux ging es mehr um die Relevanz aus Sicht des OS. Theoretisch kann man auch 'banane' hinten anhängen. Ist die Datei ausführbar ($ chmod +x file) und befindet sich das entsprechende shebang in der ersten Zeile, ist es egal. Die Erweiterung dient dem User dann nur zur Übersicht bei einem ls im fileSystem. Persönlich nutze ich auch PHP scripte wie bashscripte ohne Erweiterung.


    Was die Ausgangsfrage angeht...


    Erst einmal kann man zwischen pull und push unterscheiden. Das heisst:


    Soll/muss der Browser periodisch ein pull ausführen um jedes Mal einen webservice anzufragen?

    Erst einmal egal, ob per async oder nicht.


    Oder verbindet man sich mit einem websocket, welcher bei Veränderung ein push zu dem Browser des users ausführt?


    Prominentes Beispiel für eine websocket Anwendung ist sicherlich der chat.


    Beim ersten Beispiel ist interessant, wieviel User gleichzeitig die App verwenden und in welchen Intervallen der webservice angefragt wird.

    Stelle Dir vor, es ist eine webapp die für jedermann verfügbar ist und bei dem der Service alle 2s angefragt wird... Bist Du der einzige User, ist es irrelevant.


    AJAX wurde bereits angesprochen....


    Bei einem pull setze ich persönlich gern auf jQuery. Der webservice ist dann meistens ein lokales 'proxyscript'. Oben wurde auf ein bashscript eingegangen. Persönlich verwende ich PHP. Idealerweise baut man sich einen REST Service. Der kann dann noch mit entsprechenden Features ausgestattet sein. Und lässt sich erweitern. Kommt halt darauf an, was man noch vor hat bzw. wer das nutzen soll/wird...

    Gruss, Jürgen


    "Wer Fehler findet, kann sie behalten."
    "Wenn ich blöd frage, hat die Suche bisher nichts gebracht."