1-Wire Sensor mit Datenbank

  • Jetzt bin ich ein ganzes Stück weiter gekommen, jedoch passt die Zeitachse beim avr-highchart noch nicht. Könnt ihr mir dabei bitte helfen? Unten sieht man den korrekten Graph aus avr-google.php sowie den Graph aus avr-highstat.php mit der nicht korrekten Zeitachse:


    Warum werden die Werte in folgender Grafik von Highstat von Februar bis Juni gestreckt?

    Auszug der Datenbank:

    System:
    avr-highchart.php v0.3

    Einmal editiert, zuletzt von thdrummer (19. Februar 2014 um 22:55)

  • Zitat


    Hi Leutz,
    hat schonmal einer sowas programmiert, Temperaturverläuge Tagesweise über einen Kalender:


    Gruß
    Xander


    Ja, hab das bei mir mal alles etwas Abgeändert und kann nun nach Datum sortieren. Allerdings benutze ich noch die Google Charts. hab nun aber auch festgestellt das die Datenbankabfragen und übertragen zu google viel zu lange dauern.

    Ich habe mich vom ThomasH duch einige Ideen inspirieren lassen aber das System etwas anders aufgebaut.

    Das Python Skript überprüft bei mir welche Sensoren erkannt wurden und schriebt diese mit der Hardware ID direkt in die Datenbank. Hab mir dann noch einen keinen Admin Bereich gebastelt wo die Sensoren benannt, eine Einheit vergeben (ja, meistens ist es eh °C) wird und die Nachkommastellen definiert werden. Danach aktivieren und schon ist es im Frontend sichtbar.

    Muss noch etwas weiterbasteln und wenns fertig ist werd ich Euchs mal zum testen überlassen.

    Einmal editiert, zuletzt von Flori66 (27. Februar 2014 um 10:04)

  • Hallo!

    Wenn ich das richtig verfolge, wollt Ihr einfach die Messdaten darstellen! Ich habe dazu am Wochenende mir mal Domoticz auf den Raspi gespielt und bin begeistert. Ich will auch einfach meine ganzen Daten darstellen und dafür nicht den Weltfrieden herstellen... deswegen diesen Weg:

    Dem Domoticz kann man sehr gut die Daten unterschieben und die Visualisierung hat das Teil schon fertig im Bauch (Wiki alles super beschrieben). Um die Daten zu schicken, habe ich mir einen Linux Daemon geschrieben, der die Daten nach einem bestimmten Intervall vom Datenlogger holt und per HTTP Reqeuest ans Domoticz schickt (Ergebnis in den Bilder).

    Fazit: Super Darstellung, schneller Erfolg :) Wer doch selber etwas machen will, kann mit den Framework von HighChats (ich teste grade das HighStock) selber ein wenig "darstellen" ... Tests auch in einem Bild ...

    Gruß
    dpcFan

  • Hallo,

    nachdem mein Pi mit 7 Sensoren nun einige Monate absolut Fehlerfrei durchgelaufen sind hab ich seit Freitag ein Problem:
    Es werden nichtmehr alle Sensoren erkannt und oft auch unterschiedlich und mit absurden Tempreaturunterschiedenzwischen den Befehlen.... Siehe screenshot.

    Ich hatte einen längeren Stromausfall wodurch, nachdem die USV auch müde war, auch der Pi ausging.
    Reboot und länger aus lassen hat nix gebracht. Ansonsten läuft noch alles (Webserver, DB, etc). Spannungsspitze schließe ich aus wegen der USV.

    Für Tips bin ich dankbar.
    Vielen Dank

    Böhner :s

  • Hi,
    möchte mich als neuer PI-User als Start mit diesem Projekt beschäftigen. Danach dann etwas eigenes
    erstellen (brauche was für meine Heizung zum überwachen und resetten :)
    Habe mir jetzt den ganzen Beitrag von Anfang an mal angeschaut, finde aber nicht, wie die Sensoren physikalisch angeschlossen sind am Pi. Oder ich hab's übersehen?
    Kann mir bitte mal jemand schreiben, wie die angeschlossen sind?
    Direkt an den GPIOs und wenn an welchen?
    Danke im Voraus
    Gruß Pit

  • Hallo Jar,

    habe nun mal einen Aufbau erstellt und die Software getestet. Website, Grafiken etc. funktionieren soweit, Software ist also ok.
    Leider habe ich noch ein Problem mit dem DS1820, er zeigt mir immer 85°C an.

    Code
    avrio.py  - reading sensors ...   24.04.2014 - 18:10:28 Uhr
    Sensor ID       | Temperature
    -----------------------------
    10-0008012504c3 | 85.000 °C
    connect to host > localhost < and database > avrio <


    Leider steht auf dem DS1820 auch kein "S" oder "B" drauf. Kann an Hand der Ser.Nr. festgestellt werden welcher Typ das ist?
    Noch Tipps warum immer 85°C angezeigt werden?
    in /etc/modules steht folgendes:

    Code
    snd-bcm2835
    i2c-dev
    wire
    w1-gpio pullup=1
    w1-therm


    Habe beide Anschlußarten probiert, parasitär und mit extra Versorgungsspannung, auch mal mit Versorgungsspannung 5V und Pullupwiderstand von 10K nach 3,3V.
    Gruß Pit

  • SO,
    habe nun noch mal einen zweiten DS1820 genommen und den Widerstand auf 4,7K geändert statt 10K.
    Nun wird zumindest der neue DS1820 erkannt und misst korrekt, scheinbar hat der erste ne Macke.
    Der zeigt immer novh 85°C an.
    Werde mir noch mehr von den DS1820 besorgen und dann mal testen.

    Gruß Pit


  • SO,
    habe nun noch mal einen zweiten DS1820 genommen und den Widerstand auf 4,7K geändert statt 10K.
    Nun wird zumindest der neue DS1820 erkannt und misst korrekt, scheinbar hat der erste ne Macke.
    Der zeigt immer novh 85°C an.
    Werde mir noch mehr von den DS1820 besorgen und dann mal testen.

    Gruß Pit

    10k-4,7k ist zuviel an 3,3V sollte in Richtung 3,3k-820 gehen erst Recht bei langen Leitungen !

    Ich habe jetzt auf 820 Ohm umgebaut weil selbst mit 1,8k meine lange Strippen ca. 70m mit 7 Sensoren nicht getrieben werden können( der Atmel mit 5V schafft das mit 2,2k) das war der Kollege mit 90m

    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 (25. April 2014 um 13:27)

  • Die Anzeige von 85 Grad ist die Fehlermeldung des Sensors. Bedeutet i.d.R. das der Sensor in Ordnung ist, jedoch die Verbindung nicht gut oder fehlerhaft ist.

    Neben dem Widerstand kann auch das verwendete Kabel Ursache für Fehler sein. Ich hatte am Anfang einfache Litze genommen die bei kurzem Wege bestens funktioniert, jedoch bei längeren Verbindungen wohl störanfällig ist und die Sensoren dann den Fehlercode senden oder gar nicht mehr in der Liste auftauchen.
    Einfaches Telefonkabel schaffte bei mir Abhilfe und 13 Sensoren senden nun unermüdlich tagein tagaus ihre Daten. (Bei mir sind es auch ca 90 meter Kabel und ein 820 Ohm Widerstand, bei 3.3 V am Pi)

  • Hallo Jar, hallo Pfarrerbraun,
    danke für die Infos. Scheint tatsächlich am Widerstand zu liegen. Komischerweise wird bei 4,7K der Sensor am langen Catkabel (10m) erkannt, der direkt am Pi nicht. Werde mal mit dem Wert runter gehen.
    Hab mich schon gewundert, da er ja erkannt wird, wenn er defekt wäre, sollte das ja auch nicht möglich sein.
    10-000801256d0d | 85.000 °C direkt am Pi
    10-0008012504c3 | 25.437 °C über 10m Kabel

    Vielen Dank
    Gruß Pit


  • Die Anzeige von 85 Grad ist die Fehlermeldung des Sensors. Bedeutet i.d.R. das der Sensor in Ordnung ist, jedoch die Verbindung nicht gut oder fehlerhaft ist.

    so langsam glaube ich nicht mehr dran ! das ist das Timing der Abfrage

    Zitat


    The 85 degree reading is the power-up state of the DS18B20 & DS1822 sensors see datasheet page 7 http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf. This means that the temperature sensor has either not received an instruction to do a temperature conversion, or it has not had the time or the power to do a conversion.

    ich habe ja am Atmel parasitäre Speisung und mächtig am Sourcecode gedreht und es funktioniert !

    So auch nach dem 820 Ohm Umbau mit parasitärer Speisung bekomme ich fast nie vernünftige Werte !

    CRC zu 99% OK
    ROM Code OK

    Temperatur nur ein einziges Mal OK sonst 85°C

    dem geht bei parasitärer Speisung die Puste aus weil die Ruhezeiten der Abfrage nicht eingehalten werden ! davon bin ich nun fest überzeugt

    wie geht das bei dir,

    speist du konstant auf 3-Draht mit 3,3V an VCC ?
    oder parasitär über 820 Ohm zu Data und VCC auf GND ?

    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 (25. April 2014 um 15:28)

  • Guten Abend,

    Ich bin wirklick begeistert von dem Projekt, da es für mich als Laien möglich war das zu realisieren.

    Nun versuche ich das Programm von 8 auf 10 Sensoren umzubauen.
    Dazu habe ich die avrio.py wie unten gezeigt verändert.

    file_config.write("dbfield Solarthermie_Ruecklauf\n")
    file_config.write("dbfield Solarthermie_Vorlauf\n")
    file_config.write("dbfield Heizkreise_Vorlauf\n")
    file_config.write("dbfield Heizkreise_Ruecklauf\n")
    file_config.write("dbfield Speicher_Vorlauf\n")
    file_config.write("dbfield Speicher_Ruecklauf\n")
    file_config.write("dbfield Gaskessel_Vorlauf\n")
    file_config.write("dbfield Gaskessel_Ruecklauf\n")
    file_config.write("dbfield Trinkwasser_kalt\n")
    file_config.write("dbfield Trinkwasser_heiss\n")

    Dann die avrio.py --setup erneut gestartet und die alte Datenbank überschrieben?
    Aus irgendwelchen Gründen werden jedoch keine Temperaturen in die Datenbank geschrieben.

    Weiss jemand Rat?

    Gruß
    Oelkanne

  • Tolles Projekt !

    Habe mir zu Ostern einen PI besort und ein paar Sensoren mit eingebunden. Alles Top !
    Nun will ich aber zusätzlich die CPU-Temp mit in das Script einbinden und habe in der Config.txt eine dbfield mit dem Namen MessPC mit der Setuproutine angelegt.
    Hier bin ich am Codeschnippseln und komme mit dem Pythonsript nicht zurecht.
    Habe mehrere Code gefunden um mit Python die Temperatur auszulesen.

    Code:
    import commands

    def get_cpu_temp():
    tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
    cpu_temp = tempFile.read()
    tempFile.close()
    return float(cpu_temp)/1000
    # Uncomment the next line if you want the temp in Fahrenheit
    #return float(1.8*cpu_temp)+32

    def get_gpu_temp():
    gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( '\'C', '' )
    return float(gpu_temp)
    # Uncomment the next line if you want the temp in Fahrenheit
    # return float(1.8* gpu_temp)+32

    def main():
    print "CPU temp: ", str(get_cpu_temp())
    print "GPU temp: ", str(get_gpu_temp())

    if __name__ == '__main__':
    main()

    Nur wie passe ich das avrio.py Script an um den Wert in die Mysql Datenbank zu bekommen ?

    Wäre für jede Hilfe dankbar !

  • Hallo Jar, hallo Pfarrerbraun,

    bin auch am verzweifeln. Der Sensor am langen Draht zeigt korrekte Werte. Der direkt am Pi spinnt rum, obwohl nun einer neuer genommen wurde. Ich habe schon die verschiedenen Speisungen probiert. Im Moment habe ich die Sensoren mit + an 5V, Ground an Masse und die Datenleitung über 820 Ohm am Dateneingang.

    Code
    avrio.py  - reading sensors ...   05.05.2014 - 11:17:05 Uhr
    Sensor ID       | Temperature
    -----------------------------
    10-0008012504c3 | 17.062 �C
    Panic 127.937
    3rd try 85.0
    28-000005ae40d6 | 85.000 �C
    connect to host > localhost < and database > avrio <

    Kann das Problem evtl. auch an den verschiedenen Typen liegen, einmal ein DS1820 und der zweite ein DS18B20??
    Oder wirklich ein Timing Problem. Es sollten doch bis zu 10 Sensoren möglich sein?Noch Ideen?
    Gruß
    Pit

  • Hallo

    Probier mal im Code

    # Repeat following steps with each 1-wire slave
    for line in w1_slaves:
    w1_slave = line.split("\n")[0] # Extract 1-wire slave
    time.sleep(0.2)
    temperature = read_sensor( w1_slave) # call read function

    die Zeit von 0.2 höher zu stellen und schau was passiert.

    Ansonsten nimm dir die Zeit und installier mal http://www.domoticz.com/

    Hab keine Ahnung von Pyton und habe lange am Code rumgebastelt, finde aber das ganze Projekt super.
    Nur für Anfänger wie mich, ist sowas dann umzuschreiben und anzupassen nicht leicht.
    Hab dann mal das von domoticz installiert und ist laut Beschreibung easy einzurichten und ich war erstaunt was das Teil alles kann und was es alles unterstützt. Hatte vorher eine einene Mysql Datenbank aber mit dem domoticz hab ich alles wieder verworfen.

    Mein System besteht aus Sd.Card mit Berryboot http://www.berryterminal.com/doku.php/berryboot und da springe ich auf einen USB-Stick und den kann man mal kopieren und auf dem nächsten Raspberry einsetzen.

    Hier habe ich keine Probleme mit den vielen Schreibzyklen und die kosten fast nichts.
    Das ganze System ist auf dem USB-Stick und nun läuft alles über domoticz, echt ein Hammer. Hier kann man mit einem Klick auch die CPU-Temp des Raspi miteinbinden.

    Wenn dieses Programm auch falsche Werte von deinem Sensor liefert kannst du dich in Ruhe auf das Kabel-Sensorproblem wenden.

    Gruss und viel Erfolg beim testen ...

Jetzt mitmachen!

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