Temperatursensor Graphen auswertung

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo com,

    Anhand diesem Tutorial habe ich mir den Temperatursensor gebaut : https://learn.adafruit.com/downloads/pdf/…ure-sensing.pdf

    Das hat auch alles geklappt, wenn ich das Python skript starte , gibt es mir die Temperaturen an.

    Jedoch möchte ich die auswertung in einen Graphen setzten. Ich habe gesehen dass man das mit dem RRDTool wunderbar realisieren kann.
    Mein problem ist, dass ich nicht weis wie man ein Graphen mit dem Skript verbindet. Ich habe berreits schon gegooglet - das hat mich aber auch nicht weiter gebracht da ich mit der Syntax nicht sehr viel anfangen konnte.

    Meine frage ist also wie ich einen Graphen erstellen kann, der sich mit jeder ausgabe des Skriptes aktualisiert.

  • Ach du schande - was für eine schreckliche Anleitung :X

    Du hast einen normalen 1-Wire Sensor und möchtest nun dessen Werte in einen Graphen bzw Chart anzeigen.

    Dann benutz am besten folgendes: Suche Programmierer. Datenbank auslesen und visualisieren per Highcharts.

    :angel:

    Alternative ginge das auch mit SQLite und bedarf nur minimalen Anpassungen..

  • Hallo,

    Zitat

    Mein problem ist, dass ich nicht weis wie man ein Graphen mit dem Skript verbindet.


    Vom Prinzip ganz einfach: schreib' den Messwert in die RRD-Datenbank und lässt dir dann den Graphen generieren. Wobei - wenn ich mich nicht irre - kann rrdtool auch keine "Live-Graphen", sondern generiert "nur" ein Bild des vorgegebenen Datensatzes.

    Und für statische Bilder ist es in diesem Fall IMHO einfacher, die Daten in eine CSV-Datei zu schreiben und dir dann mit LibreOffice Calc oder Excel eine Graphen zu zeichnen.

    Gruß, noisefloor

  • Zitat

    ....eine CSV-Datei zu schreiben und dir dann mit LibreOffice Calc oder Excel eine Graphen zu zeichnen.

    Wenn man Gnuplott nimmt, braucht man kein 'Monster' LibreOffice.
    Also wen die Ausgabe dauerhaft udn ohne Benutzereinwirkung laufen soll.
    Soll sie nur auf einer Webseite angezeigt werden, kann man das sogar rein mit CSS machen.....
    http://www.mediaevent.de/tutorial/svg-cheat-sheet.html


    Jetzt musst du nur noch das ganze dynamisch mit Daten füllen ;)

    Computer ..... grrrrrr

  • Ich brauche keinen "Live-Graphen" , ich will später nur das Bild auf einer Internetseite posten, daher is das statische Bild für meine zwecke völlig ok.

    Deswegen will ich ein Bild erstellen wenn der nächste wert abgerufen wird. Wie bereits gesagt, ich hab lediglich ein problem mit der erstellen des Bildes in Python :D
    Automatisch zusammengefügt:


    Hallo,


    Vom Prinzip ganz einfach: schreib' den Messwert in die RRD-Datenbank und lässt dir dann den Graphen generieren. Wobei - wenn ich mich nicht irre - kann rrdtool auch keine "Live-Graphen", sondern generiert "nur" ein Bild des vorgegebenen Datensatzes.

    Und für statische Bilder ist es in diesem Fall IMHO einfacher, die Daten in eine CSV-Datei zu schreiben und dir dann mit LibreOffice Calc oder Excel eine Graphen zu zeichnen.

    Gruß, noisefloor

    Wenn man Gnuplott nimmt, braucht man kein 'Monster' LibreOffice.
    Also wen die Ausgabe dauerhaft udn ohne Benutzereinwirkung laufen soll.
    Soll sie nur auf einer Webseite angezeigt werden, kann man das sogar rein mit CSS machen.....
    http://www.mediaevent.de/tutorial/svg-cheat-sheet.html


    Jetzt musst du nur noch das ganze dynamisch mit Daten füllen ;)

    Hört sich auch nicht schlecht an - mir würde aber jeglicher ansatz fehlen ;)

    Einmal editiert, zuletzt von DonKannallie (26. Oktober 2015 um 13:21)

    • Offizieller Beitrag

    An was scheitert es den genau? Das du nicht weisst wie du die Daten in die rrd Datenbank kriegst? Klick Hier hast du ein Beispiel mit 2 Werten (metric1 und metric2) Wenn du anstelle von metric1 deinen Messwert nimmst und metric 2 weglässt, solltest du schonmal ein stück weiter kommen. Ich pers. finde rrdtool abstossend und würde eher den klassischen python - datenbank - highcharts weg gehen.


  • Ich brauche keinen "Live-Graphen" , ich will später nur das Bild auf einer Internetseite posten

    Auf was für einer Webseite? Läuft die auch über deinen PI, oder ist das eine externe also von einem Webhoster im Internet? Wenn letzteres: Hast du da vielleicht auch eine Datenbank? Wenn ja könntest du die Werte direkt dort in die Datenbank rein schreiben und dort dann auch den Graph erstellen lassen - das wäre IMHO am besten ;)

  • Ich habe zwei Scripte, die die arbeit für mich erledigem.
    #abfrage.py

    und
    # kopieren.py

    Python
    #!/usr/bin/python
    import os
    import sys
    import time
    from time import *
    datum = strftime("%Y%m%d")
    #print(datum + "\n")
    os.system("cp /home/pi/daten/temperatur.jpg /var/www/data/" + datum + "_temperatur.jpg")
    sys.exit(0)

    Das erste liest die 1wire-Sensoren, schreibt die Werte in eine Datei und erstellt die Grafik, das zweite schieb das in das Verzeichnis des Webservers auf dem PI (lighttpd)
    Von dem wird das dann per Script passend dargestellt:


    Die Datei für Gnuplot sie so aus:
    #temp.plt

    Die Datei für die Temperaturen eines Sensors z.B. so:

    Code
    pi@raspi:~/daten$ cat 20150205_28-000005dbbc93.txt
    05.02.2015,00:00:03   8.4
    05.02.2015,00:03:03   8.2
    05.02.2015,00:06:03   8.2
    05.02.2015,00:09:03   8.3
    ....

    ----------------
    Sch* skripte-kopieren.

    Wenn man das aus eine "cat <Skriptname>" raus kopiert gehen die Einrückungen flöten.

    ==
    Ja, das Kopieren kann man im ersten Skript mit machen, oder in der Gnuplot-Definitons-Datei gleich als Ziel den Richtigen Pfad für das Bild angeben.

    Computer ..... grrrrrr

    Einmal editiert, zuletzt von Rasp-Berlin (26. Oktober 2015 um 21:46)

  • Rasp-Berlin: Das erste Script wird so wie du es gepostet hast nicht wie vorgesehen funktionieren da die Einrückungen nach "for line in w1_slaves:" fehlen - das ist bei Python extrem wichtig.
    Desweiteren kann es bei 1wire Sensoren vorkommen das diese zwar erkannt wurden aber nicht Ready sind. Man sollte also auf "YES" prüfen, sonst kann beim Ermitteln schnell Murks fabriziert werden.
    Und für jeden ausgelesenen Sensor noch mal extra eine Textdatei in /home/pi/daten/ zu erzeugen ist auch unschön, belastet die SD unnötig - ebenso wie das kopieren...
    Aber ohne Erklärung zur temp.plt wird der TE damit auch nichts anfangen können :fies:

  • Hallo,

    Rasp-Berlin - ein paar Anmerkung zum Skript:

    - *-Importe möchte man eigentlich vermeiden
    - `open` ist schöner und besser mit dem `with` Context-Manager
    - Kommentare sinnvoll einsetzen! Man muss nicht jede Zeile kommentieren bei der offensichtlich ist, was gemacht wird.
    - Der Code ist auch besser (für dritte) lesbar, wenn man aussagekräftige Variablenname benutzt. `stringvalue` ist z.B. keiner.

    - Pfade setzt man besser mit `os.path.join()` zusammen
    - das `subprocess` Modul ist die modernere und empfohlene Variante, nicht `os.system`
    - statt `os.system('cp ...)` könntest du das`shutil`. Man man ein Python-Modul nutzen kann, sollte man das machen statt ein externe Programm aufzurufen.
    - `sys.exit(0)` am Ende ist überflüssig

    Gruß, noisefloor

Jetzt mitmachen!

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