[Tutorial] 1Wire Temperaturmessung mit Datenerfassung und Visualisierung

  • So Innen und außen Sensor laufen, vielen Dank für eure Hilfe.

    ps. fals euch auch aufgefallen, je länger das Kabel am Sensor, desto größer die Temp Differenz zu einem Ohne viel kabel :)

  • [Tutorial] 1Wire Temperaturmessung mit Datenerfassung und Visualisierung? Schau mal ob du hier fündig wirst!

  • Zitat von Steakschen pid=6584 dateline=1361807592


    ps. fals euch auch aufgefallen, je länger das Kabel am Sensor, desto größer die Temp Differenz zu einem Ohne viel kabel :)


    Das sollte nicht so sein, die Übertragung der Messwerte ist digital und damit unabhängig von der Leitung. Das hab ich bei meinen Sensoren auch nicht beobachtet.

  • Hallo,

    nutzte 1-wire zusammen mit owfs und habe meine sensoren mittels fuse eingebunden.

    Die Visualisierung meiner Ergebnisse und Speicherung mache ich mittels Serverstats (http://serverstats.berlios.de/)

    Serverstats ist eine kleine php Anwendung um rrdtool

    graph.php?graph=1

    Zum Auslesen der Temperaturen habe ich eines der dort vorhandenen Module umgeschrieben, damit ich mittels cat die eingebundenen Verzeichnisse mit der Temperatur auslesen kann.
    Das update-skript läuft dann mittels cron job alle 3min.

    Wenn daran Interesse besteht einfach melden.

    Gruß Daniel

  • Hallo,
    ich habe alles wie beschrieben aufgebaut und installiert. Die Sensoren (2 Stück) schreiben alle 5 Minuten die Temperaturen in die Datenbank. Leider bekomme ich einmal am Tag negative Temperaturen, die definitiv nicht sein können. -1250 wird in die Datenbank geschrieben, also -1,25 Grad. Der Bus ist ziemlich kurz ca. 20cm. Hatte schonmal jemand ähnliche Probleme?

  • Zitat von Heinz60 pid=6745 dateline=1362041444


    Hallo,
    ich habe alles wie beschrieben aufgebaut und installiert. Die Sensoren (2 Stück) schreiben alle 5 Minuten die Temperaturen in die Datenbank. Leider bekomme ich einmal am Tag negative Temperaturen, die definitiv nicht sein können. -1250 wird in die Datenbank geschrieben, also -1,25 Grad. Der Bus ist ziemlich kurz ca. 20cm. Hatte schonmal jemand ähnliche Probleme?

    Hallo,

    ich habe das gleiche Problem.
    Ich schreibe die Daten in eine rrd Datenbank. Auch bei mir kommen sporadisch die Werte -1,20... Grad vor. Mal alle paar Stunden, manchmal sind Tage dazwischen.
    Am Anfang hatte ich den Sensor direkt auf der Steckerleiste gesteckt, jetzt sind ca. 8m Kabel dazwischen - keine Verbesserung oder Verschlechterung.

    Keine Ahnung warum dass so ist.

    Bernhard

    Einmal editiert, zuletzt von b-r (1. März 2013 um 14:49)

  • Wo vermutest Du da den Fehler? Das liest nur die Messwerte des Systems aus und schreibt sie in eine Datenbank. Ich befürchte eher, daß das System ab und zu beim Messen durcheinander kommt weil es grad zu beschäftigt war.

  • also unter dem Linux Syslog unter /var/log liegt das syslog File. Dort ist um die Uhrzeit, bei der der Fehler auftritt folgendes zu finden:
    w1_slave_driver 10-000801a910d3: 18S20 doesn't respond to CONVERT_TEMP

    Und soweit ich sehe, erfolgt in der PHP Datei nur ein "preg_match" nach der Temperatur und nicht vorher eins, in dem geprüft wird ob der CRC überhaupt erfolgreich ist.

    Einmal editiert, zuletzt von Heinz60 (1. März 2013 um 20:35)

  • Stympt, die CRC-Prüfung macht der 1W-Treiber im System. Der Fehler sagt, daß der Sensor nicht auf den Befehl zum Auswerten der Messung reagiert. Dadurch wird danach ein falsche Messwert gelesen der sogar eine Korrekten CRC haben sollte.

  • Zitat von orb pid=6870 dateline=1362170239


    Stympt, die CRC-Prüfung macht der 1W-Treiber im System. Der Fehler sagt, daß der Sensor nicht auf den Befehl zum Auswerten der Messung reagiert. Dadurch wird danach ein falsche Messwert gelesen der sogar eine Korrekten CRC haben sollte.

    Heißt das wenn ich das File nach dem String "YES" durchsuche bringt mir das nichts?

    Wollte das eigentlich so abfangen:

    #/bin/bash

    temp=$(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-*/w1_slave | awk -F't=' '{print $2}')

    CRC=YES

    grep -qn $CRC /sys/bus/w1/devices/w1_bus_master1/10-*/w1_slave
    if [ $? -eq 0 ]; then
    echo "hurra, YES gefunden"
    echo $temp > alt_temp.txt
    else
    echo "mist, war nichts, nochmal"
    temp=$(grep 't=' /sys/bus/w1/devices/w1_bus_master1/10-*/w1_slave | awk -F't=' '{print $2}')
    CRC=YES
    grep -qn $CRC /sys/bus/w1/devices/w1_bus_master1/10-*/w1_slave
    if [ $? -eq 0 ]; then
    echo "hurra, YES gefunden"
    echo $temp > alt_temp.txt
    else
    echo "mist, war wieder nichts"
    temp=$(cat alt_temp.txt)
    fi
    fi


    # Gemessene Werte in RRDTool eintragen
    rrdtool update temp.rrd N:$temp

  • Mein oben aufgeführter Workaround scheint zu funktionieren.
    Hatte bisher zwei mal die Eintragung in syslog aber keine Auswirkung auf meine rrd Datenbank, auch keine doppelten Einträge.
    Mal weiter beobachten.

  • Guten Abend,
    was ist denn das genau für ein Temperatur-Sensor?
    Kann auf dem Bild v reichelt nicht wirklich erkennen für was man diesen verwenden könnte? Kann man den bspw. für den Sonntagsbraten im Ofen bzw. den Spanferkel aufm Grill verwenden? Wenn nein, welchen Sensor könnte man dafür verwenden / würde eine Messung in einer "Fleichart" realisierbar sein?
    Gruß

  • Super nützlich, dankeschön! :)


    Beim durchlesen der anderen Posts ist mir eine Idee gekommen:

    Man könnte mehrere Grafiken doch nutzen um sich Tagesüberblicke zu erstellen und diese nach Datum zu speichern?
    Die Grafik an sich könnte man ja evtl. etwas vergrößern, damit man z.B. alle 30min pro Tag messen kann (also 48 Messpunkte pro Grafik).

    Wäre sicher ne nützliche Sache oder liege ich damit falsch? :D

    Einmal editiert, zuletzt von vidarx (9. Mai 2013 um 04:01)

  • Hallo.

    Diesen Thread habe ich erst heute gelesen. Ich habe auch
    das Problem mit den fehlerhaften Messwerten.

    Ich habe ca. 12000 Messwerte, von diesen Messwerten
    sind 1,5% falsch. Die falschen Messwerte haben immer
    den Wert -0,062. Ich erfasse die Werte von 2 Sensoren
    an einem "Bus".

    Hat schon jemand etwas Genaures heraus bekommen?

    Als nächstes werde ich überprüfen ob der Wert der CRC
    auf "Yes" oder "No" gesetzt ist.

    Die Erfassung mache ich in Python und speichere die Werte
    in einer SQLite3 Datenbank. Die grafische Auswertung
    erfolgt mit gnuplot.

    Bis dann,
    Uwe

  • Woran das liegt weiß ich auch nicht ich habe es jedenfalls wie folgt "gelöst"
    if temperature > 0:
    dann speicher messwert

    Einmal editiert, zuletzt von abc (20. Mai 2013 um 22:32)

  • Hallo.

    Das Ergebnis, nach der erweiterten Log-Ausgabe, ist:

    Die Sensorantwort sieht im Fehlerfall so aus

    Code
    ff ff ff ff ff ff ff ff ff : crc=c9 NO
    19 01 4b 46 7f ff 07 10 eb t=-62

    und in der /var/log/syslog findet sich die passende Meldung

    Code
    w1_slave_driver 28-0000039a44fb: 18S20 doesn't respond to CONVERT_TEMP

    Daraus folgt - Auf "YES" und "NO" testen und ggfs. mehrfach versuchen den Wert zu lesen

    Bis dann,
    Uwe

  • cool, dann kann ich irgendwann meine SW vom NETIO zu raspi portieren, da ich stern und bus gemischt über mehrere Zimmer betreibe kommt das schon mal vor, deswegen mache ich bis zu 3 Leseversuche bis kein crc oder short error auftritt, mehr als 2 Leseversuche waren noch nie nötig.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (22. Mai 2013 um 14:36)

  • Hallo.

    Nach dem die Erfassung über einen Tag stabil läuft,
    hier der Code mit Fehlerauswertung:

    self.__FAILED_VALUE dient zur Fehlersignalisierung und hat einen Wert (9999.9) auserhalb des Messbereiches.

    Bis dann,
    Uwe

Jetzt mitmachen!

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