Webserver lighttpd: html Nachrichten auf Webseite ausgeben

  • Guten Abend,


    aktuell habe ich einen funktionierenden Webser auf meinem pi am laufen. Nun soll auf der Webseite die empfangen html Nachrichten angezeigt werden.

    Leider erscheint der empfangene Text nicht.

    Mit einem kleinen python Programm unter Windows 11 sollen die html Nachrichten gesendet werden:

  • Webserver lighttpd: html Nachrichten auf Webseite ausgeben? Schau mal ob du hier fündig wirst!

  • Raumsonde Die Ausnahmebehandlung in dem Python-Programm macht keinen Sinn. Wenn man nichts anderes macht als Informationen zu unterdrücken, die bei der Fehlersuche nützlich sind, sollte man eine Ausnahme einfach gar nicht behandeln.

    Das PHP-Skript ist ziemlich kaputt. Das sendet Daten vor dem eigentlichen Dokument, was angeblich XHTML ist, und damit dann ganz sicher kein XHTML mehr ist. lang="en" stimmt auch nicht. Das berücksichtigen Webbrowser mittlerweile, beispielsweise für automatische Silbentrennung. Aber auch nur das XHTML für sich ist kaputt. <div> kennt kein align-Attribut, und das eine <span> hat kein dazugehöriges Ende.

    Ich würde von manuell geschriebenen XHTML abraten. Da produziert man zu leicht Fehler und beim kleinsten Fehler ist es kein gültiges XML mehr und die Browser gehen in den ”Quirks”-Modus. HTML5 ist schon ziemlich lange der Nachfolger von XHTML.

    „All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman

  • Das php File ist kaputt? Naja die Temperatur ist soweit korrekt.

    Leider verstehe ich nicht ganz deinen Post. Es muss doch möglich sein via python ein html Nachricht zu senden.

    Auf der Gegenstelle soll diese Nachricht nur angezeigt werden.

    Mein eigentliches Ziel ist es, dass ich mehrer esp32 Controller am Laufen habe. Diese sollen zyklisch Sensordaten an den pi senden.

    Die Daten sollen dann per Webserver in meinem Heimnetz abrufbar sein.

  • RaumsondeWas genau verstehst Du denn nicht?

    Es ist möglich HTML per POST an eine Webanwenung zu senden. Aber die ”Gegenseite” kann nichts anzeigen. Das ist ja ein Webserver und kein Browser.

    Wenn die Sensoren Daten an den Server senden sollen, die dann später wieder abgefragt werden sollen, dann muss man die Daten speichern. In der Regel in irgendeiner Datenbank. Beispielsweise eine SQL-Datenbank, oder etwas das auf Zeitreihendaten spezialisiert ist.

    Musst Du das denn unbedingt selbst programmieren? Es gibt ja für solche Zwecke schon fertige Software. Grafana beispielsweise.

    „All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman

  • Ich würde auch eine andere Lösung vorziehen. Es gibt doch das Tool "Grafana Monitoring" für den pi.

    Allerdings habe ich bei mir nur den pi zero. Würde das Tool auch auf dem pi zero laufen? Für mich wäre nur eine Visualisierung von den aktuellen

    Sensordaten wichtig. Ich bräuchte eigentlich keine alten Werte irgendwie speichern oder ausgeben.

  • Die Daten sollen nur kurz gehalten werden.

    Ich habe nun grafana auf dem pi zero installiert. Allerdings habe ich von meinem Windows 11 Pc aus keinen Zugriff auf das Dashboard von grafana.

    http://<ip_pizero>:3000/login

    Muss ich eventuell in meiner fritzbox noch explizit den Port 3000 freischalten?

    Auf dem pizero habe ich mal den Status von grafana ausgelesen:

    > sudo systemctl status grafana-server
    Nov 12 11:32:57 raspberrypizero systemd[1]: grafana-server.service: Main process exited, code=killed, status=4/ILL
    Nov 12 11:32:57 raspberrypizero systemd[1]: grafana-server.service: Failed with result 'signal'.
    Nov 12 11:32:57 raspberrypizero systemd[1]: grafana-server.service: Scheduled restart job, restart counter is at 5.
    Nov 12 11:32:57 raspberrypizero systemd[1]: Stopped grafana-server.service - Grafana instance.
    Nov 12 11:32:57 raspberrypizero systemd[1]: grafana-server.service: Start request repeated too quickly.
    Nov 12 11:32:57 raspberrypizero systemd[1]: grafana-server.service: Failed with result 'signal'.
    Nov 12 11:32:57 raspberrypizero systemd[1]: Failed to start grafana-server.service - Grafana instance.

    Es scheint als ob der grafana-server nicht läuft.

    Edited once, last by Raumsonde (November 12, 2024 at 11:36 AM).

  • Ich habe nun grafana auf dem pi zero installiert.

    Gewagt.
    Der Zero hat nur 512 MB. (Egal ob Zero [CPU1] oder Zero2 [CPU4]). Die Datenbank braucht dann auch noch ein bischen was, und der Webserver und ...

    Grafana requires the minimum system resources:

    Minimum recommended memory: 512 MB
    Minimum recommended CPU: 1

    Some features might require more memory or CPUs, including:

    Server side rendering of images
    Alerting
    Data source proxy

    Wenns ner net G'wittern tun tut.

  • Welche alternativen habe ich noch?

    A: eine fertige Lösung suchen und mit Anpassungen implementieren

    B: eine lange Zeit mit lernen von HTML5, CSS, PHP, SQL für Datenentgegennahme, Speicherung und Ausgabe der Daten als HTML investieren. Je nachdem wie Du die Daten optisch visualisieren möchtest kommt dann noch SVG und/oder Bearbeitung von Pixelgrafiken mit der PHP-Grafikbibliothek dazu. Evtl. könnte Gnuplot noch mit herangezogen werden.
    Das bedeutet, Du mußt zwei Schienen beachten. Zum einen die Datenentgegennahme von den Sensoren. Sind die am RPi mit dem Webserver angeschlossen, schreibst Du die Daten in die (gut durchdacht entwickelte) Datenbank oder falls die über (W)Lan reinkommen mittels eines PHP-Scripts, welche die Daten per GET/POST entgegennimmt in die Datenbank.
    Die andere Schiene ist dann die Ausgabe der Daten als Webseite.
    Bleibt noch die Frage, wie es mit der grafischen Aufbereitung aussieht. Die kann man per der Datenabfrage aufbereiten, aber auch bei Dateneingang. Da muß man schauen, was besser performiert.

    C: das, was mir jetzt nicht einfällt bzw. von dem ich nicht weiß

    Wenns ner net G'wittern tun tut.

    Edited once, last by Bergwichtel: Fehlendes Wort eingefügt und ein bischen Typo/Grammatik. (November 12, 2024 at 3:04 PM).

  • und auf einem Webserver grafisch darstellen.

    Du hast da immer noch einen Denkfehler drin: der Webserver kann keine Daten darstellen, das kann nur der Client (hier: der Browser). Der Server kann nur Daten bereitstellen (z.B. in Form von HTML), die dann der Client darstellen kann.

    Wenn du serverseitig die Daten nicht zwischenspeichern willst / musst / kannst, dann besteht noch die Möglichkeit, dass der Server die Daten an den Client per Websockets an den Client sendet. Dann hast du quasi ein Live-Darstellung, aber keine Möglichkeit, ältere Daten abzufragen. Im Client brauchst du dafür dann ein bisschen JavaScript + HTML, serverseitige ein Programmiersprache, die mit Websockets umgehen kann. Was eigentlich die meisten Sprachen können, die für den serverseitigen Einsatz geeignet sind.

    Gruß, noisefloor

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!