Protokollierung Heizungstemperaturen

  • Heizungstemperaturen plotten

    Ziel dieses Projekts sollte es sein, mittels eines Raspberry Pi Computers die wichtigsten Temperaturen an meiner Heizung vollautomatisch, autark und permanent zu erfassen, zu strukturieren und grafisch für jeden Tag aufzuarbeiten. Nach diversen Heizungsproblemen in der Vergangenheit, hatte sich gezeigt, dass Datenplotts bei der Funktionsbeurteilung und Fehlersuche ein große Hilfe sein können. Auch können die Handwerker hiermit gut auf eventuelle Probleme aufmerksam gemacht werden, wodurch eine wesentlich zielgerichtetere Vorgehensweise möglich wird.

    Was wird benötigt?

    • Raspberry Pi B mit SD-Karte und BS
    • USB WLAN-Stick
    Netzteil mit USB-Kabel
    • Temperatursensoren
    • Ein C-Programm zur Verarbeitung und Protokollierung der Sensordaten
    • Ein Bash-Skript zur Ansteuerung von Gnuplot

    Der Raspberry Pi

    Für dieses Projekt habe ich einen Raspberry Pi Typ B eingesetzt. Als Betriebssystem kommt Raspbian zum Einsatz.

    USB WLAN-Stick

    Hier hat mich diese Webseite inspiriert. Der Rapi hängt also mit einem EDIMAX EW-7811UN im lokalen WLAN.

    Die Temperatursensoren

    Nach meinem Arduinoprojekt habe ich mich wieder für die Maxim DS18B20 Temperatursensoren entschieden. Der Rapi und sein BS sind hierfür schon bestens aufgestellt. Es müssen nur noch die Module w1-gpio und w1-therm nachgeladen werden.

    Damit das nicht nach jedem Reboot fällig wird, habe ich sie in die modules Datei (/etc/modules) eintragen. Nun werden die Module bei jedem Reboot automatisch mit geladen.

    Eine große Hilfe war mir bei diesem Projekt das Tutorial hier in diesem Forum.

    Wie noch zu sehen sein wird, gibt es in diesem Projekt fünf Sensoren. Das ist einzig darauf zurück zu führen, dass ich bei ebay ein Angebot mit fünf Sensoren erstanden habe. Diese Sensoren hatten jeweils ein 3 Meter langes Anschlusskabel und einen fertig konfektionierten Stecker.

    Das C-Programm

    Das C-Programm sammelt kontinuierlich die Daten ein und schreibt diese in eine ASCII-Plotdatei.

    Fehlertoleranz

    Bei Auswertung der ersten Plotdaten musste ich leider feststellen, dass die Sensoren immer wieder Messfehler mit dem Wert -0,06 abliefern. Auch war mal ein Ausreißer nach oben ( > 200 Grad) dabei. Zunächst habe ich diese Fehler händisch mit einem Texteditor korrigiert. Das war natürlich keine Lösung. Ich habe daher das C-Programm um eine Fehlerabfangfunktion erweitert. Wenn ein Messwert kleiner 1 oder größer 100 ist, wird er verworfen und statt dessen der vorhergehende Wert erneut werwendet. Das funktioniert seit dem wunderbar und fällt bei einem Messraster von einer Minute auch überhaupt nicht auf.

    Das Bash-Skript

    Das folgende Bash-Skript übergibt die zu bearbeitenden Daten an Gnuplot und passt ein paar Einstellungen jeweils an. Bearbeitete Protokolldatendateien werden umbenannt um eine erneute Bearbeitung am Folgetag zu unterbinden. Über Cron wird dieses Skript einmal pro Tag aufgerufen.

    Ein Beispielplot

    Tageskurve 05-09-2013.pdf

    Einmal editiert, zuletzt von reisefoto (17. September 2013 um 20:47)

  • Hübsch

    Habe ich auch schon gemacht, vor etwa 120 Tagen, seitdem läuft es.
    Und ohne C, nur wahre Genies können in C programmieren, daher bin ich kein Genie.

    Ich habe mehr teure Hardware für die Fühler angeschlossen und bin ein großer Freund des Drahtnetzwerks. WLAN ist irgendwie ganz schön sensibel. Durch die USB-Hardware für die Fühler und das owfs habe ich im Prinzip nie Fehler bei der Temperaturerfassung. Meine größte Anlage hat 11 Fühler und etwa 40 m viel zu dünnes Kabel, aber läuft wie verrückt, alle Fühler haben aktive Stromversorgung. Die Überwachung versendet auch SMS über sipgate und natürlich Mails, sie ist per SSH aus der Ferne erreichbar.

    Wer hier nach Gewächshaus sucht bekommt was ähnliches zu sehen.

    Würde was dagegen sprechen, die Kurvenbezeichnungen auszuschreiben? Natürlich weiß der Ersteller was da gezeichnet wird, der Fachkundige kann es zumindest erraten. Meine Bezeichnungen stehen rechts oben, ich muss mal gelegentlich bei Gnuplot nach dem Parameter suchen, die Bezeichnungen nach links oben zu bekommen. Danke für die Anregung.

    Wer will kann sich auch noch mit UMTS-Sticks herumärgern, das ist meiner Ansicht nach Zeitverschwendung, es sei denn, man hat einen Ausnahmestick der sich nicht einfach mal so zwischendurch verabschiedet. Ich mache Datenfernübertragung dann doch lieber altdeutsch per SMS und auch nicht mit dem Raspberry.

    Viel Erfolg noch, der Heizungsmann kann übrigens in der Tat mit diesen Kurven was anfangen, ich vermute aber stark, dass es durchaus Grenzen der Aufgeschlossenheit gibt, was der Heizungsmann dann mit diesen Kurven macht. Der kann nur mit den Geräten arbeiten die vom Heizgeräte-Hersteller geliefert werden, viel Optimierung ist da nicht. Mir selbst z.B. ist das Geld meiner Kunden sehr egal, ich will nur, dass niemand plärrt, weil was zu kalt ist oder nicht geht, ich bin aber jederzeit bereit anzuerkennen wenn einer schlauer ist als ich.

    Dieser Beitrag war nun auch wieder nicht so wichtig, ich konnte aber nicht widerstehen. :)


  • Statt der Überprüfung ob die Temperatur zwischen 1 und 100°C liegt, kannst Du eventuell auch den CRC Wert aus der ersten Zeile prüfen. :)
    Wobei Werte außerhalb bei einer Heizung wohl (hoffentlich) nicht vorkommen sollten.. :D

    Stimmt!

    Ich hätte das auch nicht so pragmatisch lösen können. Aber der Mensch ist von Natur aus bequem und ich glaube auch dass dieser Vergleich schneller abgearbeitet wird.

    Eine elegantere Lösung hätte natürlich den Vorteil, dass auch die Fehler zwischen 1 und 100 Grad eliminiert würden.

    Trotzdem vielen Dank für den Hinweis, vielleicht wird's ja nochmal was.


    @ punk:

    Es spricht nichts dagegen, die Kurvenbezeichnungen auszuschreiben. Mir reicht das halt so und die Legende wird dann nicht so breit. Nach links wandert sie mit dem Gnuplot Befehl:

    Code
    # ========= Legende positionieren
    
    
    set key left

    Zur Unterstützung für den Heizungsfachmann werde ich die Kurven auch nur "in Begleitung" anwenden. Was das viel gelobte deutsche Handwerk angeht, habe ich hier im Bezug auf die Heizungsbauergilde leider schon so meine Erfahrungen machen müssen. Bei meiner Solaranlage wurden z. B. VL un RL vertauscht und auf den Ausfall meines Umschaltventils Heizung<->Brauchwasser musste ich den Heizungsbauer erst mittels meiner arduinobasierten Datenkurven hinweisen. Selber merken die so was offensichtlich nicht. Ein völlig wirkungsloses Ausdehnungsgefäß wurde erst gewechselt, nachdem ich den Heizungsbauer gewechselt hatte.

    Aber lassen wir das, das gehört hier wohl nicht hin.

    Vielen Dank auf jeden Fall für die Anregungen.

    Einmal editiert, zuletzt von reisefoto (18. September 2013 um 20:42)

  • Servus [font="Tahoma, Verdana, Arial, sans-serif"]reisefoto[/font],

    ich find deine Scripte recht interessant und da ich gerade an einem recht ähnlichem Projekt sitzte, dacht ich mir das probier ich mal aus. Leider wird bei mir keine .dat Datei erstellt ( bzw. falls doch wo sollte diese sein?). Ich hab den Quellcode natürlich an meine Sensoren angepasst, aber da ich kein Informatiker bin steh ich grad a bissl auf'm Schlauch... :s Würd mich freuen, wenn du mir weiterhelfen könntest.

    THX im Voraus


  • ...Leider wird bei mir keine .dat Datei erstellt ( bzw. falls doch wo sollte diese sein?). Ich hab den Quellcode natürlich an meine Sensoren angepasst, ...


    Hallo helgetnt,

    die .dat-Datei erzeugt das C-Programm, nicht das Bash-Skript. Das Bash-Skript greift auf diese Daten zu und übergibt sie zur Grafikerzeugung an Gnuplot.

    Wenn Du das C-Programm kompiliert hast z. B. mittels

    Code
    gcc -Wall -O3 -o Heiztemp tempsens_12.c


    landen die täglichen .dat-Dateien im selben Verzeichnis wie das lauffähige Programm selber. Bei der o. g. Befehlszeile heißt die Quelldatei tempsens_12.c und das fertige Programm hat dann den Namen Heiztemp. Kompilieren musst Du das Programm natürlich auf dem Rapi.
    Mein Programm rufe ich dann mit

    Code
    ./Heiztemp & disown


    auf. Es läuft dann unabhängig vom Terminal auch nach einer Abmeldung im Hintergrund unermüdlich weiter.

    Vielleicht kannst Du ja noch prüfen, ob es irgendwie Probleme mit den Schreibrechten gibt.

    Ich Hoffe, ich konnte ein wenig zur Klärung beitragen. Bei mir habe ich mittlerweile den ersten Monat (siehe Anhang) komplett durchgehend dokumentiert. Bis auf einen Ausfall des WLAN-Sticks habe ich keinerlei Probleme zu beklagen.

    mfG

  • Danke für die schnelle Antwort.

    Leider funktioniert das mit mit der .dat Datei immer noch nicht (hab schon mit Schreibrechten rumgedoktort...).
    Ich probier derzeit mein Vorhaben mit einem oder mehreren Pythonscripts umzusetzen.

    Aber trotzdem danke.

  • servus,

    hat a bissl gedauert, aber ich hab jetz mein Script( zumindest mit 3 Sensoren) soweit wie es in diesem Thread benötigt wird (mein Projekt geht aber noch a weng weiter...).

    + gleiche Funtionalität
    + seperate Config-Datei
    + GnuPlot mit oben genannten Bash-Script (leicht angepasst)

    > Fehlerkorrektur durch 10maliges Auslesen & definierbaren Temperaturbereich

    Das ist der Code für "temps.py"

    temps.py mit einem Bash-Script im gewünschten Intervall laufen lassen.
    z.B "temps.sh" -> Intervall 60s

    Code
    #! /bin/bash
    
    
    while true 
    do
      ./temps.py
      sleep 60 
    done


    ... und nicht zu vergessen die "config.py" (im gleichen Verzeichnis wie "temps.py" & "make_pdf.sh").

    Noch schnell das angepasste Bash-Script "make_pdf.sh"........

    MfG & Danke für die Inspiration

    Einmal editiert, zuletzt von helgetnt (18. Oktober 2013 um 21:27)

Jetzt mitmachen!

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