[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!

  • Quote from 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?

  • Quote from 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

    Edited once, last by b-r (March 1, 2013 at 2:49 PM).

  • 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.

    Edited once, last by Heinz60 (March 1, 2013 at 8:35 PM).

  • Quote from 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

    Edited once, last by vidarx (May 9, 2013 at 4:01 AM).

  • 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

    Edited once, last by abc (May 20, 2013 at 10:32 PM).

  • 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)

    Edited once, last by jar (May 22, 2013 at 2:36 PM).

  • 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

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!