Brauche Hilfe bei Abfrage einer HTML-Datei

  • Hallo Forenmitglieder.

    Ich benötige Hilfe bei einer Datenextraktion. Ich kenne mich mit meinen Arduinos ganz gut aus, aber mit dem Raspi habe ich noch massive Probleme.

    Für unseren Verein muss ich Daten von verschiedenen Funktionen abfragen und dann weiterverarbeiten. Ich habe alle Werte über einen ARDUINO erfasst und dann auf einer Homepage abgelegt. Hintergrund ist, das Raspi und Arduino weit auseinander verbaut sind, per LAN aber verbunden sind. Die Daten werden dann in ein Bild eingebunden und auf der Homepage des Vereins dargestellt. Das funktioniert auch soweit schon. Nur das auslesen der Daten aus der Datei und ablegen in Variablen stellt mich vor ein unlösbares Problem.

    Die Daten der Homepage rufe ich mit dem Raspi ab und lege diese in der Datei install.html auf dem Raspi ab.

    Inhalt der Datei:

    Spannung1 12,31

    Spannung2 13,01

    Temperatur 16

    Luftdruck 1024

    Raspi 1

    Power 1

    Jetzt zu meinem Problem:

    Ich muss die Zahlen (z.B. 13,01) Variablen zuweisen. Ich habe das bereits mit GREP oder AWK probiert. Da ich aber eher aus der Hardware komme, ist es für mich sehr schwer, hier die richtigen Ergebnisse (Syntax) zu erzielen. Kann mir jemand mit den passenden Befehlen weiterhelfen? :danke_ATDE:

    Die HTML-Seite kann ich jederzeit anpassen. Falls es da Probleme gibt. Notfalls auch nur Zahlen.

    Das Ergebnis sollte sein, das in sechs unterschiedlichen Variablen (z.B. SPA1) dann die Zahlenwerte (z.B 13,01) als String stehen.

    Die weitere Verarbeitung ist dann wieder kein Problem.

    Ich hoffe das das die richtige Stelle im Forum ist.

    Schon mal Danke im Voraus.

    Jürgen

  • Zur hilfreichsten Antwort springen
  • Du hast leider nicht geschrieben welche Programmiersprache Du nutzt ;(

    Auch waere es fuer Dich auch wegen des Lerneffekts besser Du wuerdest Deine Versuche mit grep/awk zeigen und wir finden raus was Du nicht ganz korrekt gemacht hast :)

  • Da Du von grep/awk sprichst nehme ich mal an Du nutzt bash:

  • Sorry, ist wenn ich das richtig sehe eine bash. Ich rufe die Datei unter branding.sh auf.

    Bezüglich des Lerneffekts: Habe meine Versuche alle wieder gelöscht, da ich immer nur Fehlermeldungen oder keine Antwort bekommen habe.

    Die Zahlenwerte sind variabel. Ich messe die Spannungen und anderen Werte und stelle sie aktuell auf der Seite zur Verfügung. Die Daten stehen dann in einer Datei mit dem Namen install.html.

  • Kannst du mir das kurz erklären?

    Alle Details erfaehrst Du mi man cut.

    Kurzfassung von mir:

    Funktion: Splitten von Textzeilen und Selektion von Elementen

    -d : Trennzeichen zwischen den zu splittenden Texten

    -f: Nummer(n) der gesplitteten Elemente die ausgegeben werden soll

    D.h. bei Dir sind die beiden Texte durch -d " " getrennt und mit -f 2 wird das zweite Element (die Zahl) ausgegeben

  • Aber eines verstehe ich trotzdem nicht:

    Die Daten kommen vom Arduino, liegen als Textdatei vor und sollen dann per HTML auf der Homepage dargestellt werden, richtig?

    Wenn ja, warum dann den Umweg über die bash?

    Das könnte man doch gleich z.B. per PHP erledigen?

    Ist zwar schon einige Jahre habe, das ich das gemacht habe, aber das wäre m.E. der bessere Weg. :conf:

    Gruss

  • Die HTML-Seite kann ich jederzeit anpassen. Falls es da Probleme gibt. Notfalls auch nur Zahlen.

    Warum ist das eine *.html-Datei, wenn diese doch kein HTML enthält oder ist der Inhalt der Datei im Beitrag #1 das was am Browser ausgegeben wird?

    Die Extension spielt zwar in der Bash keine Rolle, aber ich frage trotzdem besser mal nach.

  • Das Projekt verstehe ich nicht wirklich. Was soll es eigentlich geben?

    Ich glaube der TE moechte nicht im Detail erklaeren wieso und warum :shy: . Muss er fuer mich ehrlich gesagt auch nicht. Er sucht einfach nach einer einfachen Loesung. Deshalb habe ich auch die grep/cut Kombination praesentiert. Anyhow funktioneren unsere Vorschlaege natuerlich nicht so wenn hyle Recht hat und eine html Struktur vorliegt.

  • wenn ich das recht verstanden habe:

    arduino --daten[html]-->webseite--erfassen[html]<-->pi--verarbeiten[html]-->webseite-->bild

    wie, wo, wer, was ?

    warum nicht:

    pi<--daten[txt]--arduino

    |

    +-->python[array]-->verarbeiten-[html]-->webseite-->bild

    es muss nicht python sein

    viel erfolg!

    --- wer lesen kann, ist klar im Vorteil ---

    --- man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug ---

    --- der Fortschritt der Menschheit ist das Werk der Unzufriedenen ---

    --- Freude entsteht aus Mangel an Information ---

    --- Scheiße ist, wenn der Furz etwas wiegt ---

  • Besten Dank für die Hilfe.

    Mit Grep und cut klappt das ganz hervorragend. Das war genau das Stückchen, welches mir noch fehlte.

    Um hier mal etwas Klarheit reinzubringen, eine kurze Erklärung:

    Auf unserem Modellflugplatz gibt es keinen Strom, außer von zwei Solaranlagen 12V, und auch keinen Netzwerkanschluß. Wir haben einen Container, in dem die Batterien und Laderegler etc. verbaut sind, und einen Bauwagen für alles andere. Beide sind per LAN miteinander verbunden. Im Bauwagen hängt auch die Fritzbox, die per Mobilfunk unsere Anbindung ins WWW herstellt.

    Der ARDUINO ist im Container verbaut und übernimmt alle Messaufgaben und einige Steuerfunktionen. Der Raspi mit Kamera etc. ist am etwa zehn Meter entfernten Bauwagen verbaut. (Grund: besserer Aufnahmewinkel etc.)

    Der Arduino stellt eine einfache Datenseite mit unseren Meßdaten in unser lokales Netz. Damit kann sich jeder bei uns per WLAN vor Ort die Daten auf seinem Handy ansehen und Notfalls reagieren. Alternativ gibt es im Schaltschrank noch ein LCD-Display mit den Daten. Der Raspi liest ebenfalls diese Daten von der Seite und baut diese Daten dann in ein Bild ein, welches von der Kamera zyklisch aufgenommen wird und auf unserer Vereins hompage bei Stratoeingebunden ist. Somit können wir z.B. die Ladeanlage / Batterien / Wetterdaten auch aus der Ferne einsehen. Abends werden Raspi und Fritzbox helligkeitsabhängig automatisiert heruntergefahren um Strom zu sparen. Sobald es hell wird schaltet sich alles wieder ein.

    Soweit so gut. Warum auf diesem Weg? Weil es das ist was ich kann. Python beherrsche ich nicht, und will ich auch nicht mehr lernen. Mit weit über 60 Jahren reicht mir das was ich kann. Mit C++ und diverse andere Sprachen die ich in meinem Elektrotechnik Studium vor vielen Jahren mal gelernt habe, komme ich ganz gut klar. Die Raspies sind für mich absolutes Neuland. Und kurz vor der Rente stehend muß auch irgendwann mal gut sein! Bash allein war schon wieder was neues und Linux gehört auch nicht unbedingt zu meine Lieblingssystemen. Ich komme eigentlich aus der SPS-Programmierung und habe füher direkt in Assembler programmiert.

    Wenn das ganze System online geht stelle ich hier noch einen link zu unserer hompage ein. Dann wird es eventuell besser Verständlich.

    Nochmals Danke für die unkomplizierte Hilfe :danke_ATDE:

  • Habe doch noch ein Problem. Ich möchte den pi unter bestimmten Bedingungen herunterfahren und dann zeitverzögert die Spannung abschalten. Meine bash wird über den crontab alle 5 Minuten ausgeführt. Am Ende der bash steht:

    Test="0"

    if [["$POWER" == "$TEST]];

    then sudo shutdown -h now

    fi

    wenn ich die bash per console unter dem user pi ausführe funktioniert das.

    wird die bash über den cronjob aufgerufen leider nicht.

    wenn ich über ssh verbunden bin (ohne Monitor etc) habe ich auch keine Funktion.

    Der Rest der in der bash steht wird unter allen Bedingungen Fehlerfrei ausgeführt.

    Was mache ich falsch? :?::?::?:

    Gruß Jürgen

  • Die Standardshell für Cronjobs ist /bin/sh (dash). Die kennt [[ nicht, das ist ein bashism.

    Setze Bash als Shell für dein Script (Shebang), oder, besser, schreibe portable Scripte.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    2 Mal editiert, zuletzt von llutz (16. Mai 2022 um 21:42)

Jetzt mitmachen!

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