Mehrere DS1820 Sensoren am Raspberry Pi mit Python einlesen

Veröffenticht am 08.10.2016    von     in der Kategorie Raspberry Pi, Sensoren     bisher 9 Reaktionen


Der in diesem Beitrag veröffentlichte Programm-Code soll die automatische Einbindung der am 1-Wire Bus des Raspberry Pi angeschlossenen DS1820 Sensoren ermöglichen. Dieses soll dir die Einbindung der Sensoren in das Python Programm vereinfachen bzw. soll das Programm auch nach einem Wechsel des Sensors weiter funktionieren.

Die notwendigen Schritte zur Einbindung der Sensoren in Raspbian findest du in meinem Beitrag “Temperatur-Sensor DS1820 am Raspberry Pi mit Python“, für welchen das folgende Programm als Erweiterung dienen soll.

Anschluss der DS1820 Sensoren

Wie folgendes Steckplatinen-Schaubild verdeutlichen soll, kannst du die DS1820 Temperatursensoren in Reihe an den 1-Wire-Port des Raspberry Pi schließen. Der Widerstand ist nur einmal notwendig.

Schaubild von mehreren DS1820 Sensoren am Raspberry Pi

Die fritzing Projektdatei habe ich für dich zum Download bereitgestellt.

Funktionsweise des Programmcodes

DS1820 Sensoren einlesen

Da jeder Sensor am 1-Wire Bus eine eigene ID hat, der DS18B20 Sensor hat die Kennung “28-xxx” und der DS18S20 Sensor die Kennung “10-xxxx”, wird in ds1820einlesen() das Verzeichnis der Sensoren am 1-Wire Bus ausgelesen.

Temperaturwerte auslesen

In ds1820auslesen() werden gem. der ermittelten Anzahl der vorhandenen Sensoren und deren einzelnen Bezeichnungen nun die dazugehörigen Werte ausgelesen.

 

 

 

Share on Facebook0Share on Google+0Tweet about this on Twitter0Pin on Pinterest0Share on LinkedIn0



Servus, ich bin Wolfgang.

Blogger – Maker – web & mobile Developer – Dobermann Besitzer.

Mit meinem über die Jahre gesammelten Wissen als Webworker möchte ich dir Hilfestellungen und Anregungen zur Nutzung der sich aus dem digital Lifestyle ergebenden Möglichkeiten und Notwendigkeiten geben.

Einen aktuellen Schwerpunkt auf meinem Blog bildet das Thema IoT im Zusammenspiel mit dem Raspberry Pi.


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Notwendige Felder sind mit * markiert.

9 Reaktionen (8 Kommentare)

  • Skipper schrieb am 27. Juli 2017:

    Hallo Wolfgang…

    Ich baue derzeit ein grafisches Interface (Tkinter) für eine Eigenbaumaschine, in dem unter anderem die Temperaturen von diversen Komponenten erfasst & angezeigt werden sollen..

    Wie kann ich nun aus deinem Programm eine “Klasse” bauen, die es mir ermöglicht in gewissem Zeitintervallen die Sensordaten der in der Maske verwendeten DS18B20 Sensoren anzuzeigen?

    Evtl Aufruf der Klasse mit Übergabe der SensorID

    […]
    messwert(28-xyz)
    […]

    Ich hoffe Du verstehst was ich meine… bin noch ziemlich am Anfang der Programmierung in Python…

    • Wolfgang schrieb am 27. Juli 2017:

      Hallo,

      Du kannst die Funktionen natürlich in Klassen einbinden, siehe hierzu folgendes Tutorial einbinden. Oder Du rufst die Funktion ds1820auslesen() mit der gewünschten Bezeichnung auf. Hierzu wäre vielleicht, da Du ja die einzelnen Bezeichnungen Deiner Sensoren für die Zuordnung weißt, die Funktion aus diesem Beitrag sinnvoller. In diesem Beispiel könntest Du abhängig Deiner an die Funktion übergebenen Bezeichnung, den Pfad zur 1-wire Slave Datei setzen.

      Viele Grüße
      Wolfgang

  • Wilfried schrieb am 17. Juli 2017:

    Hi Wolfgang,

    das ist bisher das beste Script, das ich zum Auslesen der 1-wire-slave-Dateien gefunden habe. Danke für deine Vorarbeit.

    • Wolfgang schrieb am 18. Juli 2017:

      Hallo Wilfried,
      vielen Dank für Deinen netten Kommentar.

      Viele Grüße
      Wolfgang

  • Dennis schrieb am 30. Dezember 2016:

    Wie kann ich jedem Sensor noch den Namen des Messortes zuordnen?

    • Wolfgang schrieb am 31. Dezember 2016:

      Hallo Dennis,

      eine Zuordnung einer eigenen Bezeichnung für einen Sensor habe ich per SQLite gelöst.

      Viele Grüße
      Wolfgang

  • Marcus schrieb am 20. Oktober 2016:

    Servus,
    interessanter Ansatz. Was ist wenn die Sensorbezeichnungen abweichend sind? Meine beginnen mit unterschiedlichen Zahlen (10 und 28).

    • Wolfgang Raab schrieb am 21. Oktober 2016:

      Hallo Marcus,
      den DS18S20 Temperatursensor (ID 10) habe ich ehrlich gesagt nicht bedacht. Vielen Dank für den Hinweis. 🙂
      Ich habe den Beitrag diesbezüglich ergänzt und die if Abfrage in ds1820einlesen() ergänzt.
      if (x.split(“-“)[0] == “28”) or (x.split(“-“)[0] == “10”):
      Nun werden die beiden Sensoren DS18B20 und DS18S20 Sensoren eingelesen, also 28 oder 10.
      Viele Grüße
      Wolfgang