Datalogger / Visualization

Es gibt 21 Antworten in diesem Thema, welches 22.645 mal aufgerufen wurde. Der letzte Beitrag () ist von Michl.

  • Hallo allerseits, ich betreibe eine Raspberry-ähnliche Kiste mit etwas mehr Power (Cubietruck) und lasse dort ein php script laufen das mir im Browser remote alle relevanten Daten vom ETA HEizkessel (LAN Interface) vüa RestAPI anzeigt......primitiv aber fürs Erste wars immer ganz hilfreich und vor allem schnell.


    Ich sehe mit freuden dass einige von euch mit Visualisierung/Datalogging bereits arbeiten, ich bin auch der Suche - wenn möglich fertige TEmplates oder Open Source Projekte die man nutzen kann, bin zwar kein Experte, aber würde vermuten dass ich die Daten per Cronjob alle 5min in eine DB schreibe und mir die Visualisierung dann die jeweiligen Kurven präsentiert....


    Wäre sehr dankbar, da ich schon einige Tage damit verbringe - einiges experimentiere - aber nicht sonderlich viel positives geschafft hab bis jetzt...


    Danke Norbert

  • Moin Norbert,
    leider bin ich noch nicht soweit das ich was Abfrage von meinem ETA, bzw. ich warte derzeit was ETA gerade zusammenbastelt mit Direktzugriff ohne meinETA.


    Aber ein erster Ansatz für dich könnte ja sein, dass du die Parameter die du mitloggen willst in einer Tabellarischen Form in einem .txt File auf deinem Pi abspeicherst.
    Also z.B:


    Datum / Uhrzeit / Abgastemp. / Vorl. / Rückl. / Puffer / usw.


    Dieses File kannst du dann zumindest mal rüberziehen und in Excel laden und dir mit ein paar klicks eine Tabelle zusammenstellen.


    Ist vermutlich nicht ganz das was du willst, aber du würdest schnell sehen ob die Visualisierung auf deinem PI stimmt oder nicht. Bzw. du könntest das File dann als Visualisierungshilfe auf dem PI nutzen.

  • Hallo Norbert,


    ich bin zwar mit meiner Heizungsanlage noch nicht so weit. Beschäftige mich aber schon mal mit der Visualisierung.


    Momentan mit 1wire Sensoren die ich mit einem Python Programm über crontab alle 10 min auslese und in einer MySQL DB speichere.


    Diese lese ich über PHP aus und visualisiere mit JPGraph in PHP die Daten der letzten 24h.


    Anbei noch ein Link wo sich jemand mit dem visualisieren einer Solaranlage beschäftigt hat.


    http://www.php.de/php-einsteig…-uhrzeit-auf-x-achse.html


    MbG


    Daniel

    15600l Puffer mit integrierten 300l VA WW-Boiler, gebrauchter Lopper Drummer 50

  • Hi Daniel, danke für die Rückmeldung....
    vermute mal dass der direkte Weg eh sein wird......MySQL schreiben via cronjob.....das dann auslesen via html/php graph.


    Bin leider ein absoluter Newby MySQL....könntest du mir bitte mal dein Ding schicken/posten....damit ich einen Startpunkt habe.
    Bei meinem ETA ist das Auslesen recht einfach via LAN Verbindung und http commands.....
    (frag mich halt immer obs da nicht noch einfachere fertige Umgebungen gibt die die verbindung DB und grafik bereits sehr schön gelöst und aufgebaut haben)


    Danke Norbert

  • Hallo Norbert,


    so wie sich das anhört, möchtest du mit PHP die Werte aus dem ETA auslesen und in eine Datenbank schreiben. Um danach mit PHP und JPGraph das Diagramm zu erzeugen.


    Da wird dir mein bisschen Code nicht sonderlich helfen. Da ich ja nur die Daten auslese aus der Datenbank.


    Anbei ein paar Codeschnipsel, wie man die Daten aus der MySQL DB ausliest und damit mit JPGraph ein Diagramm erzeugt.




    [code type=php]<?php
    $db = @mysqli_connect("localhost", "USER", "PASSWORT")
    or die("Verbindung zu MySQL gescheitert!");
    mysqli_set_charset($db, "utf8");
    @mysqli_select_db($db, "DATENBANK")
    or die("Datenbankzugriff gescheitert!");
    ?>


    <?php
    include ("src/jpgraph.php");
    include ("src/jpgraph_line.php");
    include ("src/jpgraph_date.php" );




    $graph = new Graph(1000,600,"auto");
    $graph->SetScale("datlin",-20,30);


    $sql = "SELECT * FROM TABELLE ORDER BY date DESC LIMIT 0,144"; // bei ->TABELLE<- den Tabellennamen von der DB, ->date<- ist der Spaltenname bei mir nach dem sortiert werden soll
    $result = mysqli_query($db, $sql);



    $ydata1 = array();
    $ydata2 = array();
    $ydata3 = array();
    // $xaxis = array();


    $n=0;


    while($row = mysqli_fetch_assoc($result))
    {
    $ydata1[$n] = $row[temp];
    $ydata2[$n] = $row[temp2];
    $ydata3[$n] = $row[temp3];
    // $xaxis[$n] = $row[date];
    $n++;
    }



    $graph->img->SetMargin(80,40,50,80);
    //$graph->title->SetTickLabels($xaxis);




    $graph->title->Set("Temperaturkurve");
    $graph->xaxis->title->Set("Aufzeichnung der letzten 24h");
    $graph->xaxis->SetLabelAngle(90);
    // $graph->xgrid->SetLineStyle("dotted");
    $graph->yaxis->title->Set("Temperatur [°C]");
    // $graph->xaxis->scale->SetDateFormat('H:i'); //Zeitformat der x-Achse
    $graph->xaxis->SetPos('min'); // x-Achse immer ganz unten
    $graph->xaxis->SetTitlemargin(45); //Abstand (in Pixel) Achsentitel zu Achse




    // Setup margin color
    $graph->SetMarginColor('lightblue@0.5');
    $graph->title->SetFont(FF_FONT1,FS_BOLD);
    $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
    $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);


    // Die Y Linien generieren
    $lineplot1=new LinePlot($ydata1);
    $lineplot2=new LinePlot($ydata2);
    $lineplot3=new LinePlot($ydata3);



    $lineplot1->SetLegend("Außentemperatur");
    $lineplot2->SetLegend("Innentemperatur 1");
    $lineplot3->SetLegend("Innentemperatur 2");


    // Die Linien zu der Grafik hinzufügen
    $graph->Add($lineplot1);
    $graph->Add($lineplot2);
    $graph->Add($lineplot3);


    $lineplot1->SetColor("blue");
    $lineplot2->SetColor("red");
    $lineplot3->SetColor("black");


    $graph->SetShadow();


    // Grafik anzeigen
    $graph->Stroke();



    ?>
    [/code]


    Ein bisschen habe ich noch auskommentiert weil ich noch am testen bin.


    MySQL installieren:


    http://www.raspberrypi-tutoria…erry-pi-installieren.html


    Die Datenbank über phpMyAdmin erstellen und konfigurieren.


    Bei PHP darauf achten das auch die GD Bibliothek mit installiert wird. Ist zwingend nötig für JPGraph.


    JPGraph Einführung:


    http://www.binnendijk.net/jpgraph/index.php?page=startseite


    Falls du nach dem Kauderwelsch noch Fragen hast. :D Immer raus damit. Bin selbst auf dem Gebiet aber ein Noob.


    MbG


    Daniel

    15600l Puffer mit integrierten 300l VA WW-Boiler, gebrauchter Lopper Drummer 50

  • Danke Daniel....
    geht hier vermutlich zu weit, aber meine erste Frage ist womit man überhaupt per command line/cronjob die sache angeht.......weil aktuell lese ich werte in PHP aus....das is vermutlich nicht grad standard command line, oder geht das auch sogar, glaub fast.....sonst wären alternativen vermutlich python, perl.....


    myphpadmin rennt schon und die DB kann gebacken werden, brauch wohl am WE mal etwas Ruhe um so was anzulegen und mir zu überlegen welche werte ich überhaupt ablegen will....


    Wird sicher ein Spass wenn ich dann im Minutentakt alle DAten abgelegt haben werde.....


    MElde mich dazu noch, lg Norbert

  • kurz der hinweis, im minuten takt werte sammeln ist zwar ok, wird aber mit der zeit dazu führen das es bei der ausgabe langsam wird.


    beim design der datenbank hatte ich damals pro sensor je eine eigene tabelle genommen.


    ist zwar beim schreiben und lesen etwas aufwendiger, lässt später aber einfachere änderungen zu.


    php scripte lassen sich ebenso wie python und perl von der shell ausführen.


    ihr solltet die werte vor dem speichern prüfen, falls ein sensor defekt ist etc.
    bei mir gibt es teilweise probleme mit 1wire - widerstand passt nicht zur länge der leitung bzw. abfrage timing stimmt nicht 100%ig. so zeigt ein sensor stehts 85° an, auch wenns nicht sein kann (sitzt am puffer unten).

  • Hallo Norbert,


    wie Mattes schon richtig erwähnt hat, kann man mit der shell/command line auch PHP ausführen.


    Dazu benötigst du die Erweiterung PHP5-cli.


    Bei mir sieht die Datei für die Temperaturmessung, über Python, mit crontab so aus.





    Diese liegt im Verzeichnis /etc/cron.d/


    Bei mir wird alle 10min der Code ausgeführt.


    http://wiki.ubuntuusers.de/Cron?highlight=crontab


    @Mattes


    ich lese 1wire Sensoren über einen USB9097 bus-master aus damit ich mich nicht um Widerstände kümmern muss. Geht seit ein paar Monaten ganz gut und besser als über GPIO.


    Wie würdest du die Werte überprüfen?
    Überprüfen ob es Ausreißer gibt, anhand der letzten 10 Werte?


    Das mit dem nachträglichen ändern der DB ist wirklich nicht so fein. :unsure:




    MbG


    Daniel

    15600l Puffer mit integrierten 300l VA WW-Boiler, gebrauchter Lopper Drummer 50

  • Hallo,
    ich logge die Abbrände mit der UVR und dem Datalogger/ raspberry.
    Sieht so aus wie im Anhang. Grafiken erzeuge ich mit einen php script und google charts
    Php Script kann ich zur verfügung stellen. Ist aber für die Datenbankabfrage einiges an
    Anpassung nötig.



    Meinolf

    Dateien

    HVS40LC
    große Brennkammer /bessere Turbos (Sven)
    14 Lochdüse
    2400l Puffer ( Tichelmann verschaltet )
    UVR1611 /CMI / Datalogger mit Raspberry
    10qm Solar Vaillant Flachkollektor
    Eigenbau Frischwassersttion

  • Hallo Meinolf,


    würde mich auch interessieren.
    Die Frage ist... Wo greifst du die Daten zur Darstellung ab? Direkt vom BL-Net?
    Oder leisst du das aus dem Onlineschema aus?


    Gib mal etwas mehr Details.


    Danke und Gruß
    Yves

  • hallo Eves,
    an der uvr habe ich die messwerte brennraumtemp, o2 und agt.
    desweiteren einen volumenstromsensor hinter dem HV und WMZ in der UVR
    ich habe den datalogger von bertram winter am laufen. https://github.com/berwinter/uvr1611
    Nur die Darstellung von Bertram war mir für meinen Zweck mit dem HV nicht Aussagekräftig genug
    Also habe ich mir ein php script geschrieben das mir die SQL Abfrage macht und das mit googlecharts
    visualisiert.
    Zugegeben , das ganze ist schon recht komplex MYSQL , googlecharts und scripte zum dateninport und export.
    Und warscheinlich auch nicht für jeden realisierbar.
    Ich hatte schonmal überlegt ob am das mit dem rrd-tool für den raspi realisieren. Wäre nicht so komplex wie MYSQL


    meinolf

    HVS40LC
    große Brennkammer /bessere Turbos (Sven)
    14 Lochdüse
    2400l Puffer ( Tichelmann verschaltet )
    UVR1611 /CMI / Datalogger mit Raspberry
    10qm Solar Vaillant Flachkollektor
    Eigenbau Frischwassersttion

  • Hallo Meinolf,


    ja... das Berwinter-Projekt hab ich mir auch mal angeschaut.


    Da ich bei mir schon sämtliche Daten logge und die Log-Daten automatsch vom BL-Net auf NAS speichere, bräuchte ich etwas was die Log-Daten (im WinSol-Format) in etwas besseren Charts darstellt.


    Die ganzen Daten nochmal parallel in einer MySQL zu speichern wäre "doppelt gemoppelt".
    Aber wahrscheinlich komme ich nicht daran vorbei, wenn ich das über ein Web-Interface visualisieren will.
    Aktuell sehe ich per VPN nur mein Online-Schema, aber keine Charts über die Zeit (das wäre mein Wunsch).


    Mal schauen... Momentan ist das Prio B, aber wenn mich der Hafer sticht greife ich das mit Berwinter-Scripten mal an...


    Gruß Yves

  • Hallo Yves,
    ja das MYSQL ist sehr mächtig und alles so zu realisieren ist nicht ohne.
    schau dir mal das rdd-tool an das ist eine recht einfache Datenbank und einfache Visualisierung.
    Ich habe das vor schon mal als Tempertur datenlogger eingesetzt.
    Ich müsste ich mich nochmal einlesen


    schau dir mal folgende beiden Links an. ich denke das ist nicht so mächtig wie MYSQL
    und mal kommt schneller zum Ziel
    http://www.messpc.de/rrdtool.php
    http://www.arbeitsplatzvernich…g.de/marty44/rrdtool.html



    wenn ich zwischen den Tagen mal Zeit habe setze ich mich mal hin


    Meinolf

    HVS40LC
    große Brennkammer /bessere Turbos (Sven)
    14 Lochdüse
    2400l Puffer ( Tichelmann verschaltet )
    UVR1611 /CMI / Datalogger mit Raspberry
    10qm Solar Vaillant Flachkollektor
    Eigenbau Frischwassersttion

  • Hallo Meinolf,


    das RRDTool ist ja echt interessant (kannte ich noch nicht, danke für den Link).


    Da auf meinem NAS aber eh schon eine MySQL-Datenbank läuft (Movie-Bibliothek für XBMC/KODI), wäre es sinnfrei eine weitere (unabhängige) Lösung aufzusetzen.


    Das heisst, ich werde wohl in den sauren Apfel beissen und mich mal in die Berwinter-Lösung einarbeiten müssen.
    Der einzige Nachteil ist, dass die wirklich umfangreich und mächtig ist und ich wahrscheinlich nur einen Teil davon nutze.
    Mal schauen... evtl. verwende ich die Basics von ihm in einer "abgespeckten" Variante :)


    Gruß Yves

  • Ich bin gerade dabei mir meine eigene Lösung zu basteln. Ich logge auch alle Daten auf dem Raspberry Pi in einer MySQL Datenbank. Im Moment bastle ich gerade ein Python Script, dass sich die Daten je nach Bedarf vom MySQL Server abholt und graphisch darstellt. Dazu verwende ich MatPlotLib. Der Graph ist dynamisch, d.h. sobald ein neuer Wert in der Datenbank vorhanden ist, wird er auch im Graphen dargestellt. Die Darstellung der Hauptwerte und der Puffer funktioniert schon zum großen Teil. Ich bin davon abgekommen, die Graphen auf dem Raspberry darstellen zu wollen. Dafür ist der kleine Raspy einfach zu schwachbrüstig. Auf dem Laptop läuft das Programm ohne Probleme. MySQL schafft der Raspi bei entsprechender Konfigurierung locker. Auch Google Graphs oder andere Online Lösungen haben sich bei dynamischen Plots als zu ressourcenhungrig erwiesen.
    Ich werde das Python Script mal hier posten, wenn nachdem ich es etwas aufgeräumt habe.


    VG
    Ralf


  • hallo Daniel, habe leider jetzt erst gesehen, das du mir da eine Frage gestellt hattest.


    Wie stellt man fest, ob ein Sensoren wert plausibel ist.


    1. gibt es bei 1 wire Sensoren folgende "unlogische" Werte.
    -127 bzw 0 bzw 85


    -127 die Ursache: es liegt in der regel am Masse Kabel, der Sensor ist also ausgefallen.


    0 und 85 hier liegt nicht selten der Fehler beim Datenkabel bzw. beim verbautem widerstand bzw. an der Verbindung VCC und Sensor.


    2.
    Wann ist ein Sensoren wert unplausibel, denn mindestens 0 und 85 sind doch normale Temperaturen?!
    Man überlegt, welche Temperatur wirklich unlogisch ist. 0 Grad aussen ist OK, aber am Puffer?!


    3.
    Wann sind 85 Grad am Puffer unlogisch?
    Dazu kann man entweder anderen Sensoren Werte vergleichen,
    z.B. sind im Puffer oben 40, Mitte 30 und unten 85 unlogisch.
    Sind aber oben 85, Mitte 40 und unten 30 OK?
    Nein, deshalb vergleicht man den aktuellen Sensor wert mit dem vorherigen. Ist die Abweichung zu groß, stimmt etwas nicht, das wäre der perfekte Moment, diesen Zustand zu dokumentieren. Einzelne Ausreißer sind dabei nicht so wichtig, aber wenn von 10 Messungen 4 nicht stimmen, sollte das system dies melden.


    Außerdem sollte man sich Gedanken machen, was passiert, wenn ein Sensor ausfällt?!
    Ich habe sowohl die rla als auch den heizkreismischer zu regeln.


    Fällt z.b. der Kessel RL Sensor aus, greift eine andere Strategie (VL bzw. Kessel Temperatur)um zu gewährleisten, dass der RL nicht zu kalt wird.


    Ähnlich funktioniert das mit dem heizkreismischer.


    Warum fallen Sensoren aus?!
    Bei mir liegt es an den benutzten Kabeln.
    Netzwerkkabel ist für Verbindungen mit Schraubklemmen ungeeignet, vor allem wenn da regelmäßig Holz draufgeschmissen wird.


    Leider bin ich noch immer nicht soweit, das ganze wie geplant auf dem raspberry laufen zu lassen, da fehlt mir momentan die notwendige Ruhe und Zeit.


    Ich hoffe ich konnte helfen.


    Grüße
    Mattes

  • Hallo,


    ich bin begeistert, was Ihr alles an Eure Heizungen schraubt.
    Vielleicht kann ich einen Beitrag zur graphsichen Darstellung von mysql-Zeitreihen-Daten leisten.


    Ich habe vor Jahren mal für ein anderes Projekt ein CGI-Skript "sqlplot" in PERL geschrieben.
    Damit kann man in die URL des http-Aufrufes die SQL-Abfrage rein schreiben.
    Das skript fragt dann die Datenbank ab, bereitet die Daten auf, ruft gnuplot auf, produziert ein Bild und schickt das an den Browser.


    Ich hatte das vor einigen Jahren für eine Wetterdatenbank ausgegraben, habe aber aktuell keine Datenbank mir brauchbarem Inhalt zur Demo laufen.


    Mit etwas SQL-Übung kann man die Abfrage dann direkt in den Browser eingeben, wie in diesem Beispiel:


    Code
    http://mein.server.ip/cgi-bin/sqlplot.cgi?context=wetter&query=SELECT+ZEIT,T_F,T_W+FROM+logger+WHERE+ZEIT>2011-12-01


    erhält man dann solche Bilder aus den Werten in der Datenbank.



    [xattach=15131]Zip mit Script[/xattach]


    Das reicht im Direktaufruf für einfache, gelegentliche Abfragen sogar aus, aber auch für ganz spezielle Selektionskriterien, die man vielleicht nur einmal testweise anwenden möchte.


    Auch wenn man die URL anders erstellt (PHP, festes HTML, oder was immer man gerne mag) braucht man sich nicht um die "nuts and bolts" von Datenbankanbmeldung, Abfrage, Datenformatierung, Graphische Aufbereitung etc kümmern.
    Man kann, wenn einem das Design nicht gefällt, gnuplot-Optionen mit übergeben und damit dessen komplette Funktionalität ausnutzen.


    ------------------------------------------------


    Ich überlege mir, mit einem Raspberry eine Pufferladung zu steuern und Daten zu erfassen.
    Ursprünglich hatte ich auch gedacht, eine UVR zur Steuerung zu nehmen und dann die Daten mit dem RasPI auszulesen.
    Aber warum sollte ich UVR lernen, wenn ich PERL kann?? Warum kompliziert, wenns auch einfach geht?


    Habt Ihr Erfahrungen mit Raspi in der Steuerung?
    Wie sieht das mit der Lanzeitstabilität aus?


    Ich hätte v.a. etwas Bedenken, eine Datenbank auf der SD-Karte zu betreiben, wegen des Brown-Out-Risikos.
    Besser wäre imho entwder ein eigener USB-Stick oä. oder auf einen "großen" Server zugreifen wenn ein solcher zur Verfügung steht.

  • Hallo,


    die SD-Karte unserer CMI ist nach mehr als einem Jahr noch gut, pro Tag sind das gerade mal 36kB (5 min Abtastrate) bzw. 166 kB (1 min Abtastrate) - laut CMI--Statusmeldung sind momwntan gerade mal 0,35 % der SD-Karte belegt. Über ein Brown-Out-Risiko mache ich mir da noch keine Gedanken...


    Beste Grüße
    Ralf


    PS: Danke für die geniale Idee mit Gnuplot, die werde ich mal bei Gelegenheit aufgreifen :)
    PPS: Interessante Ideen in Sachen Datenlogger gibt es inzwischen zuhauf, siehe z. B. hier


  • PPS: Interessante Ideen in Sachen Datenlogger gibt es inzwischen zuhauf, siehe z. B. hier

    Ich bin immer noch auf der Suche nach etwas kleinem echtzeitfähigem in Hochsprache.
    Zur Zeit versuch' ich mich, in die nodeMCU-Plattform NodeMCUeinzuarbeiten.
    Modulpreis << 10 €, Programmierung in LUA, eine serielle USB-Konsole zum Testen / debuggen / firmware flashen ist bei den meisten Modulen schon dabei, WLAN sowieso.
    Aber das Ganze ist noch sehr ausbaufähig :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!