Ausgaben vom Shell - Script in Homepage Tabelle ausgeben

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hey Leute,

    ich habe folgendes Problem oder besser gesagt Frage:

    Ich haben ein Shell Script und dass gibt in einer Schleife alle Messwerte und Hardware IDs meiner Temperatursensoren (DS18B20) aus. Soweit kein Ding. Es wird pro Zeile eine ID und ein Messwert ausgegeben. (Format: ID: Temperatur °C)

    Nun möchte ich diese Ausgabe in einer Hompage verpacken. Diese sollen in einer Tabelle ausgegeben werden. Also Links die IDs und Rechts die Messwerte. Aktuallisieren soll sich die Homepage eigentlich nicht automatisch. Nur per Tastendruck. Aber ggf. gibt es ein Befehl, mit dem man die Homepage automatisch alle 5 Minuten oder so aufruft? Also um Messwerte zu aktuallisieren.

    Als Scriptsprache für die Homepage kann eine Kombination aus HTML und PHP genommen werden. Habe mit beidem schon bischen Erfahrungen gesammelt. Am tollsten wäre, wenn die Scripts in Arrays (Array 1 = ID; Array 2 = Wert) gepackt werden.

    Michael


    Danke schon mal vorab für eure Hilfe.

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

    Einmal editiert, zuletzt von RaspiDo (11. März 2013 um 18:07)

  • Ausgaben vom Shell - Script in Homepage Tabelle ausgeben? Schau mal ob du hier fündig wirst!

  • Also muss ich den "Umweg" über die Datenbank gehen? Also direkten weg geht also nicht?

    In dem Fall müsste ich das Shell Script (oder Python oder so) entweder per Crone Job oder als Dienst mit Sleepzeiten laufen lassen um die Werte in gewissen Zyklen in der Datenbank zu aktuallisieren?


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Hallo Michael,

    Zitat

    Also muss ich den "Umweg" über die Datenbank gehen? Also direkten weg geht also nicht?

    Du musst nicht den Umweg über die Datenbank gehen. Du kannst die Messwerte auch direkt in eine HTML-Datei schreiben. Allerdings wenn du mal eine grafische Auswertung machen willst oder nur einen zeitlichen Ausschnitt betrachten willst, dann ist der Umweg über eine Datenbank die bessere Lösung.

    Zitat

    In dem Fall müsste ich das Shell Script (oder Python oder so) entweder per Crone Job oder als Dienst mit Sleepzeiten laufen lassen um die Werte in gewissen Zyklen in der Datenbank zu aktuallisieren?

    Ein CronJob würde sich besser anbieten.
    Dein Skript wenn ich das richtig verstanden habe liest aber jetzt auch in einem bestimmten Intervall die Messwerte aus. Was dazu kommen soll ist nur die Ausgabe in eine Datei oder in eine Datenbank.

    Gruß Georg

  • Nein, bislang ist es nur ein einfaches Shell Script, welches Shellbefehle ausführt. Und dies wird bislang nur manuell ausgeführt, aber die Eintragung als CronJob wäre ja kein großer Aufwand mehr.

    Das tolle ist, dass man 1-Wire Bus Teilnehmer beim Raspberry Pi super einfach abfragen kann.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Zitat von RaspiDo pid=7580 dateline=1363021050


    ... Aber ggf. gibt es ein Befehl, mit dem man die Homepage automatisch alle 5 Minuten oder so aufruft? Also um Messwerte zu aktuallisieren...


    Wenn Du die folgende Zeile in Deine Webseite einbaust

    Code
    <META HTTP-EQUIV="refresh" CONTENT="300">


    refreshed die Seite z.B. alle 5 Minuten. Oder nur bei Click eines Buttons mit

    Code
    <FORM>
     <INPUT TYPE="button" onClick="history.go(0)" VALUE="Neuladen">
     </FORM>
  • Hallo,

    ich mache es einfach über einen cronjob um die Daten in die Datenbank zu schreiben, alle 10 Minuten.
    Eine weitere php um direkte Messwerte auf der hp direkt auszugeben, bei besuch.
    An einer dritten arbeite ich gerade, Möchte Werte per Datum und Uhrzeit ausgeben lassen,
    html5 hat coole neue tags <input type="date"> usw.
    Wenn das alles klappt werden die Daten noch in einem Graph ausgegeben.

    cu pfaelzer

  • Mir persönlich reichen Primär erstmal Daten in einer einfachen Tabelle.

    Ich werd mir erstmal angucken müssen, wie ich die Daten möglichst vll direkt per Shell in die Datenbank bekomme zum "Updaten".

    MySQL Als System wäre okay oder gibts ne bessere Alternative für den Raspberry Pi.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Folgende Befehlszeile erzeugt die Ausgabe. Die ID bekomme ich herausgelöst indem ich $i abfrage. Nur die Temperatur erhalte ich nicht. Bzw. ich bekomme die Temperatur nicht raus. Kann mir da jemand vielleicht helfen die Temperatur in die Variable zu bekommen?


    Code
    [b]for i in $(cat /sys/devices/w1_bus_master1/w1_master_slaves)[/b]
    [b]
    [/b]
    [b]do echo ${i}: $(echo "scale=3; $(grep 't=' /sys/bus/w1/devices/w1_bus_master1/${i}/w1_slave | awk -F 't=' '{print $2}') / 1000" | bc -l) °C[/b]
    [b]
    [/b]
    [b]done[/b]


    Ich habe es mit $2 versucht, nur da kam nix raus. Also ich möchte die Ausgabe aus der Zeile die mit do Beginnt in eine Variable ausgeben. Ich weiß nich ob ich da etwas zu blöde bin oder noch bischen was an wissen fehlt, aber ich hoffe mir kann man helfen.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Hallo hier meine Abfrage in php.

    Die benutze ich wenn jemand meine hp besucht.

  • Danke für die Idee,

    Das Script hat für mein Ding ein Problem, es passt sich nicht Dynamisch an, sobald Sensoren ausgetauscht werden bzw. neue Sensoren hinzu gefügt werden.

    Von daher werde ich wahrscheinlich eher die Lösung mit der Datenbank nehmen. Wie gesagt, ich müsste nur wissen bzw. raus bekommen wie ich die Temperatur nicht ausgebe sondern in eine Variable ausgebe. Den sobald ich die habe ist der rest relativ überschaubar.

    Also die Daten aus der Datenbank bekomme ich dann schon raus und in eine Tabelle ausgegeben.

    Aber als mögliche Alternativ Lösung werde ich es mir mal merken.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Meinst du bei meinem Script? Wenn ja, nein da das Script sich alle Fühler vorher sammelt und dann in einer Art Liste verpackt und nach einander abgefragt wird.

    Wenn das PHP Script meinst auch nicht? Weil in dem Fall werden die Fühler vorher angegeben. Also es werden alle vorkonfiguriert.

    Vorallem ein i++ bringt nichts. Die IDs sind vorgegebene Seriennummern der Bauteile. Die sind wie MAC Adressen in Netzwerkkarten eingebrannt und falls 2 IDs folgen ist es eher zufall.


    Aber mir fällt gerade was ein, wäre zwar nicht die Sauberste Art aber eine Art. Es gibt eine Möglichkeit, dass ich die IDs zu Beginn alle Abfrage und in die Datenbank Packe und dann in einer Schleife das PHP Script besser gesagt ein Teil davon von "pfaelzer" nehme und anstelle der Festeingefügten IDs (Seriennummern der Bauteile) gegen die Variable ersetze in welcher die Daten der Datenbank gespeichert werden. Ich hoffe jemand versteht mein Gedankengang in diesem Zusammenhang.

    Nur wenn jemand mir noch die Lösung ggf. verraten kann, wie ich die Temperatur in eine Variable statt der Ausgabe bekomme wäre super. Den dieser Weg wäre mein bevorzugter weg.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

    Einmal editiert, zuletzt von RaspiDo (11. März 2013 um 23:59)

  • Zitat von RaspiDo pid=7619 dateline=1363038877


    Folgende Befehlszeile erzeugt die Ausgabe. Die ID bekomme ich herausgelöst indem ich $i abfrage. Nur die Temperatur erhalte ich nicht. Bzw. ich bekomme die Temperatur nicht raus. Kann mir da jemand vielleicht helfen die Temperatur in die Variable zu bekommen?

    Poste mal die Ausgaben von

    Code
    /sys/bus/w1/devices/w1_bus_master1/${i}/w1_slave


    Dann kann ich Dir was zusammenbauen.

  • Der Befehl würde in dem Zusammenhang so lauten:

    Code
    cat /sys/devices/w1_bus_master1/10-000801e1799b/w1_slave

    Es würde folgendes ausgegeben werden:

    Code
    2d 00 4b 46 ff ff 02 10 19 : crc=19 YES
    2d 00 4b 46 ff ff 02 10 19 t=22625

    tas hinter dem t= wäre der unformatierte Temperaturwert. Also normal wird dieser dann durch 1000 geteilt, die Nachkommastellen auf gewünschte Zahl reduziert und ein Zeichen für die Einheit angefügt. Also in dem Fall "°C"


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Probier mal

    Code
    v=$(tail -1 /sys/devices/w1_bus_master1/10-000801e1799b/w1_slave | cut -d '=' -f 2); echo $v


    Da wird die letzte Zeile geholt (tail -1) und dann die Zeile zerlegt in Teile vor und nach dem = Zeichen. -f 2 wählt dann den 2ten Part aus

  • Danke für die Hilfe.

    Habe nun noch das mit den Nachkommazahl, geteilt durch 1000 um überhaupt Nachkommazahl zu haben und habe es um die Einheit erweitert.

    Danke. Jetzt gucke ich mir noch an, wie ich das in die MySQL Tabelle bekomme. Aber dies Versuch ich erstmal selber. Werde dafür das Thema erstmal noch offen lassen, wenns okay ist und keinen Stört?


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Zitat von RaspiDo pid=7685 dateline=1363118094


    Habe nun noch das mit den Nachkommazahl, geteilt durch 1000 um überhaupt Nachkommazahl zu haben und habe es um die Einheit erweitert.


    Du sollst ja auch noch was zu tun haben :shy:

  • So alles funktioniert wie gewollt. Ich habe noch eine Datumsausgabe in eine Datei hinzugefügt und nun führt das Script alle 10 Minuten eine neue Messung durch, führt ein Update der Daten in der Tabelle durch und wenn ich die Homepage aufrufe Zeigt er mir an, welchen Stand die Daten haben und eben die Daten werden ausgegeben.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

Jetzt mitmachen!

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