Mini Webserver für Waage

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,

    ich habe vor eine Waage mit HX711 zu bauen und die gewogenen Daten in einer CSV pro Behälter zu speichern. Die Datenablage soll mittels WEB-Server koordiniert werden.

    Das "Problem" ist das ich die Gewichtsanzeige im Browser alle 2s aktualisieren will ohne das ggf. eingegebene Daten verloren gehen.


    Hier Der Programmplan:

    Teil 2


    Frage: Welches Tool empfehlt ihr mir als Webserver? Ich habe schon mit Flask ein wenig probiert, nur fehlt mir die Idee wie ich die Gewichtsanzeigenaktualisierung realisieren kann.(?)


    Danke in Voraus.

  • Hallo,


    Quote


    ich habe vor eine Waage mit HX711 zu bauen und die gewogenen Daten in einer CSV pro Behälter zu speichern. Die Datenablage soll mittels WEB-Server koordiniert werden.

    Das macht so eigentlich keine Sinn - ein Webserver ist ja "nur" dafür da, Content an den Client (=den Browser) zu liefern. D.h. das Speichern von Messwerten wohin auch immer ist nicht Sache des Servers. Oder willst du nur Speichern, wenn ein Button im Webinterface gedrückt wurde?


    Zum Speichern würde ich dir hier auch eine Datenbank empfehlen - dann kannst du später auch mal gezielt nach Werten suchen, ohne die CSV Datei komplett einlesen zu müssen und die Suche selber zu implementieren. Abgesehen davon ist das Schreiben einfacher, weil du nicht jedes mal die komplette CSV-Datei neu schreiben musst.


    Wenn die Webseite sich aktualisieren soll, muss die sich a) entweder im wieder neu Laden - macht man aber eigentlich nicht, besonders nicht, wenn das alle 2 Sekunden passieren soll - oder b) holt sich die Webseite mit Javascript und der fetch-API (oder AJAX) periodisch die Daten. Wenn du echte bidirektionale Kommunikation brauchst kannst du auch Websockets nehmen. Das ist aber nicht ganz trivial zum Implementieren, wenn du neu in die Webprogrammierung einsteigst.


    Gruß, noisefloor

  • Ich glaube, es wird sinnvoller, wenn du erklärst, was du eigentlich in der Sache erreichen willst. Dann lässt sich erkennen, ob dein Ansatz überhaupt geeignet ist. Jedenfalls denke ich spontan, dass ich hier keinen Webserver einsetzen würde. Warum willst du das tun?

    Ich verstehe nicht wirklich, was deine Waage eigentlich machen soll...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Hi,

    danke für eure Gedanken.


    Es wird eine LKW-Waage im Modellbaubereich. Dabei sollen sich die Fahrer per Handy in das vom Raspberry bereitgestellte WLAN einloggen können um die Daten zu ihren Fahrzeugen abzuspeichern.

    Um die Daten dann einfach versenden zu können dachte ich an eine CSV pro LKW.

    => alles soll ohne Internet funktionieren deshalb auch das WLAN vom PIZero.


    Geplant ist auch eine analoge Anzeige und noch ein paar andere Features wie Fahrzeugerkennung mittels QR-Code.


    Hallo,


    ... oder b) holt sich die Webseite mit Javascript und der fetch-API (oder AJAX) periodisch die Daten.


    Gruß, noisefloor


    Aus sich des Webserver gibt es:

    Output:

    Wert - Waage

    Namen CSV (max.50 eher 20)

    Wert LKW LEER

    Wert LADUNG (Wenn kein LKW angewählt ist das das Gesamtgewicht)

    Aktuell angewählter LKW


    Input

    Button -NEU

    Button -Bekannt

    Button -Leer

    Button -Voll

    x -"Auswahlbutton" entsprechend Anzahl angelegter LKW

    Namenseingabefeld


    Am Ende Soll das Leergewicht und das Ladungsgewicht in der Webseite angezeigt werden.


    Alternative Wege als über ein einfaches Webinterface sind mir nicht bekannt. Super wäre es natürlich wenn die Main.Html als Vorschalt-Webseite eingerichtet wäre, sodass sie direkt angezeigt wird wenn das Handy sich verbindet.


    Grüße

  • Was steht eigentlich in diesen CSVs?


    Die ersten paar Seiten koennte man zusammenfassen:


    * Anzeige der Waage

    * Auswahlbox fuer den Namen des CSV-Files

    * Eingabefeld fuer neue Namen


    Dem Webserver ist AJAX ganz egal. Er braucht einfach eine Route die nur den aktuellen Wert der Waage ausliefert. Den Rest erledigt JavaScript.

  • Also, ich hab immer noch nicht verstanden, was das Ganez soll.


    - Der Fahrer fährt seinen Laster auf die Waage.

    - Er ruft die Website auf und wählt sein Fahtzeug ( = CSV-Dateiname) aus.

    - Es wird das Leergewicht gemessen und angezeigt.

    - der Laster wird beladen und währenddessen wird das Gesamtgewicht und das Gewicht der Güter (= Differenz zum Leergewicht) angezeigt.

    - Die Anzeige wird alle 2 Sekunden aktualisiert, um bei Schüttgütern die Menge richtig zu laden.

    - Wenn die Ladung vollständig ist, werden die Daten irgendwo hin geschickt?


    Ist das so ungefähr gemeint?


    - Wohin und warum werden die Daten geschickt?

    - Welchen Zweck haben die CSV-Dateien?

    - Neu/unbekannt/leer/voll/zurück... hab ich überhaupt nicht verstanden.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!


  • Naja der Ablauf ist eher:

    - LKW1 fährt Leer auf die Waage

    - User Logt sich ein und erstellt Datensatz (CSV) und Speichert das Leergewicht

    - LKW1 fährt zum beladen

    - LKW 2 fährt leer auf die Waage

    - User Logt sich ein und erstellt 2.Datensatz (CSV) und Speichert das Leergewicht

    - LKW 1 fährt voll auf die Waage

    - User (ggf. noch mit aktiver Webseite) wählt LKW aus und speichert Beladen Gewicht

    ...


    In der CSV LKW1 steht dann:


    Datum; Leergewicht; Ladung; Gesamtgewicht

    23.02.2022 10:12:15;0.0;0.0;12,5

    23.02.2022 10:12:48;12.5;0.0;12.5

    23.02.2022 10:32:15;12.5;8,4;20.9

    23.02.2022 14:12:15;12.5;11.2;23.7



    Möchte ein Modellbauer seine Chronik Sene ich im die CS per Mail zu fertig.

    ggf. bau ich auch noch ein HTML mit dem letzten10 werten oder so, aber das ist nice to have...


    CSV - Siehe Oben

    Ja Du hast recht ich habe mal eben ein Layout gemacht:



    Somit brauch es nur eine HTML-Seite. Klasse Idee.

    -> ich schau mir mal ein AJAX Tut an ob -ich- damit die Gesamtgewichtsanzeige halbwegs aktuell halten kann.

  • Wozu die Seite alle 2 Sekunden das Gewicht updaten soll, hab ich nicht verstanden.


    Ansonsten ist das doch eher einfach.

    Die Daten würde ich in eine Datenbank schreiben.

    Wenn einer was wissen will, kann er sich mit Passwort direkt auf der Seite einloggen und seine Daten abrufen.


    Ich würde nicht mit einer einzigen Seite arbeiten. Das verwirrt nur.

    Eine Seite für die Anmeldung - da muss einer sein Fahrzeug auswählen. Evtl. mit Passwort einloggen, sonst kann ja jemand aufs falsche Fahrzeug wiegen...

    Dann die Seite, wo er nur angeben muss, ob er voll oder leer wiegen will. Wichtiger wäre allerdings, die Wägungen einem Vorgang zuzuordnen. Ich kenn das teils so, dass der leere LKW gewogen wird, dann der volle und dann der LKW mit Restware, wenn nicht alles abgeladen werden konnte. Kommt bei Brennstoffen öfter vor. Also sozusagen: leer - voll - restbefüllt - leer.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Hallo,


    Quote

    Die Daten würde ich in eine Datenbank schreiben.

    +1 - vergiß' die CSV-Datei, dass ist doch viel zu umständlich und unflexibel. Nimm' eine relationale Datenbank wie z.B. SQLite. Die kann lokal auf dem Raspi laufen und Python hat dafür alles an Bord. Wenn du eine netzwerkfähig DB brauchst, dann musst du halt PostgreSQL oder MariaDB nehmen. Ist hier aber vielleicht ein bisschen "too much".


    Gruß, noisefloor