Dynamische Grafik mit PHP

  • Ahh ok, dachte ich mir schon ...

    Na das Thema ist ja erledigt.
    Ich hatte das damals für meinen Bruder gebastelt.
    Die S0-Schnittstelle stellt der Stromlieferant an seinem Zähler zur Verfügung. Daher hab' ich leider keine Ahnung, was da verbaut wurde. Ich habe seinerzeit nur die Info bekommen, dass die S0-Schnittstelle mit 1000 Ticks/kWh liefert und ich den Impuls bereits mundgerecht für den RPi ( spannungsmässig ) zur Verfügung gestellt bekomme.
    Über eine ISR am RPi generiere ich halt bei jedem Tick einen Unix-Timestamp und schreibe ihn in eine mysql-Datenbank.

    Die Auswertung bzw. Grafik mache ich dann am Ubuntu-Laptop.
    Klappt prima ;) ...

    cu,
    -ds-

  • Tach auch,

    ehrlich gesagt trau ich mich da jetzt nicht, eine definitive Aussage zu machen ...

    Wenn ich mir dieses Prinzipschaltbild anschaue, so hast Du es wohl von Haus aus mit CMOS-Pegeln zu tun ... ein Levelshifter kann da wohl nicht schaden.
    Vielleicht hilft Dir das ein wenig weiter, ansonsten suchst Du vielleicht mal nach DIN 43864 bzw. EN 62053-31.
    cheers,
    -ds-

  • Hi

    Nachedem ich nich unbedingt ein neuesy Thema aufmachen wollte, schreib ich hier herein.

    Im Grunde genommen baue ich gerade so etwas ähnliches. Ich habe ein Messobjekt, welches mir Messdaten auf den GPIO-Port liefert und diese gilt es dann in einem Diagramm darzustellen. Das Zeitintervall sind bei mir 10ms. Ein ganzer Messdurchlauf bringt dann auch so um die 1024 Messwerte zusammen.

    Meine Frage wäre nun: Wie bewerkstelligen?

    Ein Cronjob der die Gpio-Leitungen liest und in eine Variable schreibt?
    Wie übergebe ich dann die befüllte Variable an JavaScript, damit mir die das Diagramm zeichnet.

    MfG

  • Mit crontab kannst du nur minimal jede Minute etwas ausführen. Wenn es kürzere Intervalle sein sollen wäre es also besser ein Script zu nutzen welches im Hintergrund läuft, und durch sleep's der Intervall festgelegt wird.

    Es gibt viele verschiedene Möglichkeiten einen Graph zu erzeugen. Jenachdem wofür man sich entscheidet, spielt es eben eine extra Rolle wohin die Daten geschrieben werden, oder wie diese Ausgewertet werden.

    Die vermutlich am weitesten verbreitetste Möglichkeit wäre die Daten in eine sog. Round-Robin-Database abzulegen und einen Graphen erzeugen zu lassen -> http://de.wikipedia.org/wiki/RRDtool
    Munin wäre beispielsweise auch eine sehr mächtige Sammlung welche auch RRD verwendet.

    Ansonsten habe ich zum Beispiel auch >> hier << einen Graphen mithilfe von JPGraph erzeugt (Screenshot am Ende des Beitrags im Spoiler) - allerdings verwende ich da SQLite zum speichern der Messwerte was in deinem Fall unter Umständen nicht ganz so gut geeignet wäre, da mit einem Intervall von nur 10 millisekunden schon eine sehr große Menge an Daten zusammen käme. Statt SQLite würde ich dann eher auf eine schnellere Alternative wie PostgreSQL setzen..

    Es gibt aber wie gesagt unzählige Möglichkeiten über PHP eine Graphik erzeugen zu lassen, such am besten mal nach:
    PHP Graph
    PHP Chart
    PHP Grid

  • für php ist pchart.net auch ganz nett.

    Wenn man die Grafik aber nicht unbedingt braucht, würde ich die Werte in JS auf dem Client auswerten.
    Dafür kann man z.B. die Skripte von http://www.chartjs.org nutzen. (Ein weiterer Vorteil ist das man sich den genauen Wert per Mouseover anzeigen lassen kann, außerdem sieht es schicker aus als eine statische Grafik und ist skalierbar)

  • Also nach langer recherche habe ich mich entschieden einen websocket zu verwenden und die Messdaten dem Client zu schicken und dann natürlich den Client die grafische Aufbereitung machen lassen. Mit eben irgendeiner von den Bibliotheken die es so im Netz gibt (flot.js hab ich da zB schon gefunden und mit ein paar sponpanadln auch zum laufen gebracht).

    Bei mir happerts jetzt beim Websocket. Ich kenn mich mit dieser Technologie nicht all zu gut aus. PHP kann ich ein wenig, aber ich denke nicht ausreichend um damit die server.php schreiben zu können, die unbedingt notwendig wäre. natürlich habe ich bereits mit der Umsetzung begonnen indem ich mir ein fertiges Script gesucht habe und versucht habe, den Source-Code zu verstehen. Trotzdem sind mir da einige Dinge noch unklar.

    Also bevor ich zum Schritt gehe, die Hardware auszulesen, möchte ich in einem Text-Dokument irgendwelche X und y-Werte für das Diagramm schreiben und diese Auslesen. Wenn das hinhaut, wage ich mich weiter.

    Ich post mal den Source-Code von meiner server.php


    Der passende Client sieht dann folgendermaßen aus: index.html



    So: Sobald ich nun die index.html aufrufe, werde ich automatisch in die onerror function geworfen, die mir dann auch relativ ungut folgendes ausgibt: WebSocket Error [object Event]

    Mehr erhalte ich nicht. Jemand ne Ahnung was ich falsch mache oder wo mein Hund begraben ist?


    PS: Die Sache soll dann eher in das ausmessen von 4polen gehen, wo eine Start und Stop-Frequenz eingegeben werden und dann für die Dauer der Messung (Frequenzsweep) alle 10ms ein neuer Wert ausgelesen wird.

    Einmal editiert, zuletzt von Stunk70 (11. Oktober 2014 um 00:24)

Jetzt mitmachen!

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