1Wire Bus mit 4x DS1820 bringt 2-3 mal am Tag falschen Wert

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    Mein 1wire Bus mit 4 DS1820 Sensoren bringt in unregelmäßigen Abständen und immer auf einem anderen Sensor eine Temperatur von -1,25°
    Die Sensoren hängen im Wintergarten und der hat im Moment Temperaturen von 16° - 25° je nach Sonneneinstrahlung.

    Augefallen ist mir dies erst, nachdem ich einen Graph mit gdlib erstellt habe.
    Die Daten werden per php und cronjob alle 10 Minuten in die Datenbank übergeben.

    Angeschlossen sind die Sensoren über ein JystY 2x2x0.8mm. ein Sensor ist direkt am Raspi die anderen sind im Abstand von ca. 2m in Reihe (nacheinander) installiert.

    hat jemand eine Idee


    cu Pfaelzer

  • 1Wire Bus mit 4x DS1820 bringt 2-3 mal am Tag falschen Wert? Schau mal ob du hier fündig wirst!

  • Meine "Lösung" im oben genannten Link funktioniert nicht zu 100%.
    Habe bis jetzt noch zweimal in ein paar Tagen falsche Werte gehabt.
    Anscheinend wird auch bei CRC=YES ein falscher Wert geliefert.
    Besser, aber nicht gut!

  • Hallo,

    hier mein Code:

    #/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

    Vorher hatte ich jeden Tag 2-3 mal Fehlmessungen, jetzt hatte ich seit über einer Woche an einem Tag zweimal einen Falschwert, sonst immer korrekt. Bringt also schon was, aber irgendwie haben sich letzen Montag zwei Falschwerte eingeschlichen.

  • Hallo,
    ich habe heute einen Bericht gefunden in dem das gleiche Problem beschrieben ist.
    Es gab verschiedene Lösungsansätze.
    Leider kann ich den Bericht nicht mehr finden.

    Ein Lösungsansatz war, die Daten etwas Zeitversetzt auslesen, mit 2 sec Pause.
    Ich versuche es gerade um zu setzen.

    Ich hatte gestern nur einen Fehler Wert?!

    cu Pfaelzer

  • Du meinst vielleicht den php Code von Heinz60 - im Prinzip meinem Script sehr ähnlich - nur das ich statt 2Sekunden warte nach zwei Fehlversuchen einfach einen Altwert nutze. Ist ja auch recht zuverlässig da die Temperatur sich normalerweise nicht so schnell ändert.
    Aber am letzten Montag muss es wohl zweimal einen falschen Wert mit CRC=YES gegeben haben.

  • genau das ist die Lösung. Du musst nachdem du einen CRC Fehler festgestellt hast, 1-2 Sekunden warten mit der nächsten Messung. Der Wert der dann kommt stimmt dann wieder.

    Mann könnte auch noch eine 2te Datenbank anlegen und dort eintragen lassen, wann und von welchem Sensor ein CRC Fehler kommt. Falls dann öfters CRC Fehler auftreten kannst du gezielt die defekten Sensoren austauschen.

    Einmal editiert, zuletzt von Heinz60 (12. März 2013 um 17:59)

  • Heinz60

    Wie gesagt, seit letztem Montag keine falschen Werte mehr. Warum aber an diesem Tag doch zwei falsche Werte aufgezeichnet wurden trotz CRC=YES Abfrage weiß ich nicht. Bin aber ganz zufrieden, da ich sowieso nur die letzten Tage visualisieren möchte.

  • Hallo,

    ich habe heute einfach mal für jeden Sensor eine db erstellt und lasse jeden Sensor einzelnd in die db Schreiben.
    Da ich im cronjob nur Abstände von 1 Minute habe ist der Intervall 1 - 4 Minuten.
    3 Sensoren funktionieren.
    1 Sensor bringt nur -1,25° und 85°
    Da ich die Sensoren noch nicht beschriftet habe werde ich dies jetzt mal machen.
    evtl ist einer defekt.

    cu Pfaelzer

  • 85° klingt nach einem Sensorfehler, das ist der Wert den des Sensor als erstes nach einem Reset vor dem ersten Messzyklus schickt. Warum der Sensor einen Reset macht (Defekt, Stromversorgung ...) mußt Du jetzt rausfinden.

  • So,
    ich habe jetzt den defekten Sensor vom Bus genommen.
    Lasse jetzt das Datenloggen noch mal 2-3 Tage laufen.

    Ich habe das gefühl, das die Webseite jetzt schneller die Daten bringt?!

    Wir erden sehen.

    Pfaelzer

  • Hallo,
    hier mein Ansatz vielleicht hilft er dir weiter....

    Bei mir werden zwei Werte hintereinander gelesen diese durcheinander geteilt.
    Dabei kommt eine Prüfsumme heraus.
    Wenn diese Prüfsumme zwischen 0,97 und 1,027 liegt ist der Wert ok.
    Wenn der Wert über 0 Grad liegt ist er ok.
    Wenn der Wert unter 40 Grad ist er ok.

    Ist eine Abfrage nicht ok wird neu gelesen.
    Ist die Abfrage ok wird der Wert in die Datenbank übernommen.

    Hier der Python Code:



    Gruß
    v1553804

  • Hallo,

    wenn dein wert um die 1 liegt, müssen die Temperaturwerte aber in etwa gleich sein.
    Wird bei Innen und Aussentemperatur schon schwer. (-10° und +20° auf den ersten Wert habe ich in diesem Jahr keine Luste mehr :))
    Ich lasse jetzt alle Sensoren jeweils in eine Datenbank schreiben und das Zeitvesetzt.
    Durch abfragen habe ich herausbekommen, das nur der lertzte Sensor im Bus, ca. 8m Leitung dazwischen, keinen Sensorfehler bringt (85°)
    Alle Sensoren bringen auf jeden Fall -1.25° Falschwerte und die ersten 2 auch die 85° (einen habe ich entfernt da zuviele Fehler)

    Ich bin noch genauer am Auswerten, aber es sieht so aus, als wenn die Werte immer spinnen wenn mehrere Sensoren gleichzteitig angesprochen werden.

    Ich mache im Moment alles über php.
    Was ich versuchen möchte: In einem Script die Sensorabfrage je 2 Sekunden Zeitversetzt abfragen.

    Ich brauche eine Schleife die zwischen den Sensorabfragen 2 Sekunden wartet.
    Mit Sleep klappt es nicht, das verzögert nur die Werteausgabe, macht aber keine Pause im Script.

    Ich denke der Bus braucht einfach mehr Zeit und schafft nicht immer alle Werte auf einmal auszulesen ?!

    Wir werden sehen.

    cu pfaelzer

    Einmal editiert, zuletzt von pfaelzer (17. März 2013 um 10:06)

Jetzt mitmachen!

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