Temperatur-Sensor DS1820 am Raspberry Pi mit Python

Veröffenticht am 07.10.2015    von     in der Kategorie Raspberry Pi, Sensoren, Temperatur WebApp     bisher 58 Reaktionen    Zuletzt überarbeitet am 13.09.2023


In diesem Beitrag und dem dazugehörigen Video zeige ich dir neben dem Anschluss und der Installation, wie du einen Temperatur-Sensor DS1820 am Raspberry Pi mit Python auslesen kannst.

 

 

Aktualisiert am 12.09.2023: Der ursprüngliche Beitrag stammt vom 07.10.2015 und wurde heute von mir aktualisiert. Neben einer Sensorbeschreibung und einer aktualisierten Hardwareübersicht habe ich den Code an Python 3 angepasst.

Informationen zum 1-Wire Bus, an dem der Sensor angeschlossen ist, findest du in meinem Beitrag “Mehrere DS1820 Sensoren am Raspberry Pi mit Python einlesen“. Dort stelle ich dir ein Programm mit Funktionen zur automatischen Einbindung der DS1820 Sensoren zur Verfügung.

 

Was ist der DS1820 Temperatursensor?

Der DS1820 ist ein digitaler Temperatursensor, der Temperaturen von -55°C bis +125°C mit einer Genauigkeit von ±0,5°C im Bereich von -10°C bis +85°C messen kann. Ein kleines, unscheinbares Bauteil, das uns jedoch detaillierte Informationen über die Umgebungstemperatur liefert.

Konfiguration des DS1820 mit dem Raspberry Pi

Bevor wir mit der Programmierung beginnen, müssen wir natürlich unseren DS1820 mit dem Raspberry Pi verbinden. Für die Verbindung benötigen wir

 

Der DS1820 hat drei Anschlüsse: VDD (Versorgungsspannung), DQ (Daten) und GND (Masse). Der Anschluss ist einfach:

Verbinde den VDD-Pin des DS1820 mit dem 3.3V-Pin des Raspberry Pi.
Der GND-Pin des DS1820 wird mit einem der Masse-Pins des Raspberry Pi verbunden.
Der DQ-Pin des DS1820 wird mit einem GPIO-Pin deiner Wahl am Raspberry Pi verbunden – ich nehme hier den Pin7 (GPIO4).
Zwischen VDD und DQ solltest du den 4,7k Ohm Pull-Up-Widerstand platzieren.

 

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

 

Installation des DS18B20

Nachdem nun alles angeschlossen ist, binden wir den Sensor in das Raspberry Pi OS ein und aktivieren den 1-Wire Bus.

Die folgenden Befehle werden über das Terminal eingegeben. Zuerst lasse ich mir die vom System geladenen Module anzeigen.

Danach kommt die Aktivierung des 1-Wire Buses mit folgenden Befehlen.

Als Nächstes erweitern wir die Dateien, die für die automatische Aktivierung des Busses und des Sensors nach einem Neustart notwendig sind. Ab Kernel-Version 3.8 ist die Erweiterung der Datei /etc/modules nicht mehr notwendig. Öffne dazu die Datei in deinem Texteditor mit dem Befehl

und füge die folgenden drei Zeilen ein.

Ab Kernel 3.8 ist die Datei config.txt für das Laden der Module zuständig. Diese öffnest du mit dem Befehl

und füge die folgenden zwei Zeilen hinzu, der Kommentar ist optional. Wichtig: Wenn du deine Sensordatenleitung an einen anderen GPIO-Pin angeschlossen hast, musst du anstelle der 4 den Pin angeben, den du verwendest.

Danach führst du einen Neustart des Raspberry Pi aus.

Nach dem Neustart kannst du mit dem Befehl

die korrekte Aktivierung des 1-Wire Bus überprüfen.


geladene Module ohne 1-Wire Aktivierung

geladene Module mit 1-Wire Aktivierung

 

Auslesen der Sensordaten

Das System schreibt den aktuellen Sensorwert immer in eine Datei. Diese Datei befindet sich in einem Verzeichnis, das durch die Sensor-ID bestimmt wird. Wechsle hierzu in das Busverzeichnis mit

und führe den Befehl zum Anzeigen des Inhaltsverzeichnisses aus.

Bei einem Sensor werden dir nun zwei Verzeichnisse angezeigt. Ein Verzeichnis ist “w1_bus_master1”, das für uns wichtige Verzeichnis ist das mit einer Code-Bezeichnung, in meinem Fall “28-0516848e26ff“.

Mit dem folgenden Befehl kann der Inhalt der Datei “w1_slave” mit dem Sensorwert bzw. der Temperatur angezeigt werden.

 

Eine Übersicht über wichtige und häufig verwendete Befehle stelle ich dir auf einem kleinen Spickzettel für Raspberry Pi OS Befehle zur Verfügung.

Das Python-Programm

Als Erweiterung zum folgenden Programmcode stelle ich in meinem Beitrag “Mehrere DS1820 Sensoren am Raspberry Pi mit Python einlesen” ein Programm mit Funktionen zur automatischen Einbindung der DS1820 Sensoren zur Verfügung.

Denke daran, dass der Befehl file = open(‘/sys/bus/w1/devices/28-0516848e26ff/w1_slave’) die Sensorbezeichnung deines Sensors enthalten muss.

 

 

Anmerkung:

Grundlage für meinen Beitrag bzw. die Umsetzung des Temperatursensors auf meinem Raspberry Pi ist der Beitrag “Raspberry Pi – Temperaturmessung mit DS18B20 1-Wire Sensor” von Marcus Hottenrott und der nicht mehr verfügbare Beitrag “Raspberry Pi: 1-Wire Temperatursensor DS1820” von Prof. Jürgen Plate.

 

Fazit

Der DS1820 Temperatursensor ist ein beeindruckendes kleines Bauteil, das uns präzise Temperaturdaten liefert. In Kombination mit dem Raspberry Pi und Python lässt er sich leicht in jedes Projekt integrieren. Egal ob du ein intelligentes Heimthermostat, eine automatische Lüftersteuerung oder einfach nur ein digitales Raumthermometer bauen möchtest, der DS1820 ist dein zuverlässiger Partner.

 

Bereitgestellte Dateien und Links

Die Fritzing Projektdatei steht auch auf meiner Fritzing Projektseite auf diesem Blog zum Download zur Verfügung.

Wenn du dir das Abtippen oder Kopieren des Codes sparen möchtest, steht dir der Code als Textdatei zum Download bereit.

Gib im Terminal folgenden Befehl ein, dieser lädt die Textdatei herunter und speichert diese als Python-Datei ab.

 

Eine Projektübersicht zu diesem Beitrag habe ich als Video auf YouTube hochgeladen.

 


Transparenz-Hinweis:

Die auf dieser Seite verwendeten Produktlinks sind sogenannte Affiliate-Links zu einem Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten, ich erhalte durch deinen Kauf über den Link eine kleine Provision.


Wolfgang Raab – Betreiber von webnist.de

Mein Name ist Wolfgang, ich beschäftige mich nun schon seit 1985 mit der EDV und im Besonderen mit der Software- und Webentwicklung.

Auf diesem Blog schreibe ich über Dinge, die mich begeistern, beschäftigen und ich der Meinung bin, es könnte für andere interessant und hilfreich sein.

Als großer Fan des Raspberry Pi finde ich es spannend, wie man den kleinen Computer in Verbindung mit dem IoT und Smart Home nutzen kann. Deshalb behandeln viele Beiträge auch genau dieses Thema.

Ich bin ein leidenschaftlicher Leser und Fotograf. Wenn ich nicht gerade in einem spannenden Roman versinke, bin ich oft unterwegs, um die Schönheit der Welt mit meiner Kamera einzufangen und zu teilen.

Weitere Infos und Fotos findest du auf einem der folgenden Plattformen.






Mehr erfahren?

Besuche die "About"-Seite meines Blogs und finde heraus, wie du mit mir in den Bereichen Web- und Mobile-Programmierung und Raspberry Pi zusammenarbeiten kannst. Hier beginnt deine digitale Reise.


Unterstützen

Dieser Beitrag hat dir gefallen und konnte dir bei deinem Projekt oder Problem behilflich sein? Dann würde ich mich sehr freuen, wenn du dich mit einer noch so kleinen Spende erkenntlich zeigen möchtest.




  • wilhelm schrieb am 29. Oktober 2023:

    Raab Wolfgang schrieb am 28. Oktober 2023:
    Hallo,
    also am Raspberry Pi 4 liegt es nicht, da ich den Code bzw. die letzte Aktualisierung mit einem solchen gemacht habe. Auch unter Raspberry Pi OS Bookworm habe ich es erfolgreich getestet. Der Widerstand muss nicht aktiviert werden. Auch ist ein Setzen des pullup nicht notwendig, aber auch nicht schädlich.

    Ist den der Sensor richtig verdrahtet bzw. liegen auch 3,3 V an und ist die Datenleitung auch wirklich am GPIO 4 angeschlossen?

    Danke für die antwort
    habe alles noch mal geprüft spannung config etc zusätzlich auf pi 11 versucht — gleiches Ergebnis. ich habe den Verdacht das der pi die Eingänge mit der Pin Kennung nicht auf empfang geschaltet hat so das die daten vom ds18b20 nict eingelesen werden können.
    lässt sich prüfen ob der Eingang auf empfang ist ? Deine Meinung dazu ?

    • Raab Wolfgang schrieb am 1. November 2023:

      Hallo,
      wenn alles so gemacht ist, wie in dem Beitrag beschrieben, weiß ich leider auch keinen Rat. Allerdings ist mir aufgefallen, es wird 00-1c0000000000
      00-5c0000000000 und 00-9c0000000000 angezeigt, obwohl nur ein Sensor angeschlossen ist. Kann es sein, dass der Sensor defekt ist?
      Viele Grüße
      Wolfgang

  • wilhelm schrieb am 28. Oktober 2023:

    Leider funktioniert das unter Raspi 4 nicht so einfach. Habe alles wie beschrieben mit 1 sensor getestet und die Config.txt so geändert
    dtoverlay=w1-gpio
    gpiopin=4
    pullup=1

    Muss nicht auch der Pullup widerstand aktiviert werden ?
    Bei mir wird kein code vom ds18b20 eingelesen ich kann also auch nicht die Datei w1_slave finden
    unter lsmod wird aber folgendes angezeigt
    w1_gpio 16384 0
    wire 45056 2 w1_gpio,w1_therm
    cn 16384 1 wire
    und auch
    /sys/bus/w1/devices$ ls
    00-1c0000000000
    00-5c0000000000
    00-9c0000000000
    w1_bus_master1
    unter den vorstehenden codes liegt kein W1_slave
    was mache ich falsch

    • Raab Wolfgang schrieb am 28. Oktober 2023:

      Hallo,
      also am Raspberry Pi 4 liegt es nicht, da ich den Code bzw. die letzte Aktualisierung mit einem solchen gemacht habe. Auch unter Raspberry Pi OS Bookworm habe ich es erfolgreich getestet. Der Widerstand muss nicht aktiviert werden. Auch ist ein Setzen des pullup nicht notwendig, aber auch nicht schädlich.

      Ist den der Sensor richtig verdrahtet bzw. liegen auch 3,3 V an und ist die Datenleitung auch wirklich am GPIO 4 angeschlossen?

  • Amadeus schrieb am 3. Juli 2023:

    Guten Tag Herr Raab,

    ich bin bei der Suche nach Einsteiger-Tutorials für DIY-IOT über Raspberry auf Ihrer Seite gelandet. Die Auswertung des Temperatursensors war schon sehr interessant, das kommt in meinen Plänen ebenfalls vor. Allerdings würde ich derartige Sensoren gerne über Funk abrufen. Ich stehe allerdings noch so ziemlich komplett am Anfang und habe nur äußerst geringe (SQL) bzw. keine Vorkenntnisse (Funktechnik/Konnektivität). Können Sie mir im Anbieter- und Lösungs-Dschungel eine grobe Orientierung geben, in welche Richtung meine Recherche gehen muss?

    Vielen Dank vorab!

  • Wolfgang schrieb am 26. März 2023:

    Hallo Wolfgang, ich habe Dein Beispiel in ein Programm übernommen und wollte damit eine Zweipunktregelung zum Beheitzen eines Whirl-Pools realisieren.
    Leider “hängt” sich der gemessene Temperaturwert des DS18B20 nach Erreichen des oberen Grenzwertes auf und wird im anschließend kälter werdenden Wasser leider nicht mehr aktuallisiert.
    Hast Du eine Ahnung, an was das liegen könnte?
    Vielen Dank für Deine Hilfe
    Wolfgang

    • Wolfgang schrieb am 27. März 2023:

      Hallo Wolfgang,
      das hört sich nach einem schönen Projekt an.
      Leider kann ich dir hierzu nichts sagen. Erstmal wäre zum Klären, ob der Fehler im Programmcode oder im System liegt. Wenn der Wert sich auch im Busverzeichnis nicht ändert, würde ich einmal einen anderen Sensor ausprobieren. Ändert sich dieser Wert allerdings, scheint es an einem Fehler im Programmcode sein. Um hier eine Hilfestellung geben zu können, müsste ich diesen einsehen. Hierzu kannst du in mir gerne mal per E-Mail zusenden.
      Viele Grüße
      Wolfgang

  • Carmelo schrieb am 14. November 2022:

    Hallo Wolfgang,
    ich bin recht neu auf dem gebiert aber bin guter dinge das ganze mit deiner Anleitung umsetzen zu können.

    Ich habe hier nur 5,1kOhm Wiederstände zur Hand.
    wie würden sich die 400 Ohm mehr auswirken?
    kann ich bedenkenlos 5,1kOhm verwenden?

    vielen dank
    Carmelo

    • Wolfgang schrieb am 19. November 2022:

      Hallo Carmelo,
      herzlich Willkommen unter den Makern 🙂
      Da es auch ein wenig auf die Länge und Art der Datenleitung ankommt, würde ich sagen, probiere es einfach mal aus. Im schlimmsten Fall liefert der Sensor keinen Wert.
      Liebe Grüße
      Wolfgang

  • Dominik Sust schrieb am 20. Dezember 2020:

    Hallo Wolfgang, vielen Dank für diesen tollen Beitrag, den ich bei der Suche nach meinem ersten Pi + GPIO Projekt gefunden habe.
    Eine Frage: laut Datenblatt benötigt der Sensor zwischen 1 – 1,5 mA
    Web ich allerdings die Stromstärke bei 3,3 V und 4,7 kOhm ausrechne, komme ich auf etwa 0,7 mA für die Datenleitung. Kann es da nicht zu Problemen wegen der zu geringen Stromstärke kommen?
    Wenn ich den 5 V Pin verwende, komme ich bei den gleichen Widerstand auf die richtige Stromstärke. Sollte ich dann nicht lieber diese verwenden?
    Danke und Gruß,
    Dominik

    • Wolfgang schrieb am 21. Dezember 2020:

      Hallo Dominik,
      vielen Dank für Dein Lob.
      Zu Problemen mit der geringen Stromstärke kommt es meiner Erfahrung nicht. Die Energieversorgung per 5 Volt ist möglich, allerdings musst du beachten, die GPIO-Ports vertragen nur 3,3 Volt. Eine gute Erklärung findest du auf folgende Seite: http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Onewire/index.html

      Viele Grüße
      Wolfgang

  • Markus schrieb am 29. Dezember 2018:

    Hallo Wolfgang,
    habe dein Projekt jetzt auch zum laufen gebracht:-)
    Kurze Frage:
    wie aknn ich jetzt die Messungen über 24 Stunden aufzeichen lassen bzw abspeichern?

    • Wolfgang schrieb am 31. Dezember 2018:

      Hallo Markus,
      herzlichen Glückwunsch zur Umsetzung und vielen Dank für Deinen Kommentar.
      In meiner Betragskategorie “Temperatur WebApp” findest Du entsprechende Anregungen zu Deiner Frage.
      Viele Grüße
      Wolfgang

  • Michael Schneider schrieb am 4. August 2018:

    Hallo Wolfgang
    Besteht auch die Möglichkeit an ein gpio Pin ein Windmesser wie den technoline TX 23 anzuschließen und damit Wind Messung zu machen ? Gruß Michael

    • Wolfgang schrieb am 4. August 2018:

      Hallo Michael,
      selbst kenne ich den TX 23 nicht. Eine kurze Google-Recherche hat mir aber verschiedene Ergebnisse gebracht. Anscheinend gibt es verschiedene Versionen, die eine bietet eine UART Schnittstelle, die andere eine 1-Wire Version. Beide könntest du am Raspberry an den entsprechenden Schnittstellen anschließen und auslesen. Zum Auslesen musst du evtl. das richtige Protokoll kennen, aber hierfür liefert Google mehrere Ansätze.
      Viele Grüße
      Wolfgang

  • Jürgen schrieb am 26. Juni 2018:

    Hallo!

    Erstmals danke für dieses tolle Einführung, wenn ich es für meinen Zweck hier adaptiert habe dann werde ich Sie gerne über den Donation Button Unterstützen, denn solche Beiträge sind für Anfänger auserordentlich wichtig!

    ich würde gerne die Programmwerte in einem File speichern und wenn der Wert einen bestimmten Wert unterschritten hat soll ein Email (mit Phyton Script? versendet werden.

    Den Schleifentimer habe ich erhöht damit nur alle 30 min die Temperatur gemessen wird, dafür würde ich gerne das das Programm endlos läuft. (Schleifenanzahl = 1.000.000.000)

    “nice to have” und vermutlich sehr aufwändig:
    Es wäre cool wenn man den aktuellen Wert in einem Extra Fenster ganz groß darstellen lässt, z.b grüne Werte für OK und rote Werte für einen Wert unter z.b Nullgrad.

    lg aus Österreich

    • Wolfgang schrieb am 26. Juni 2018:

      Hallo Jürgen,
      vielen Dank für Deine Nachricht.
      Damit dein Skript in einer Endlos-Schleife abläuft, würde ich es über eine Statusabfrage statt der von dir erwähnten Zählermethode realisieren. Umgesetzt habe ich dies u.a. in meinem Beitrag “Mehrere DS1820 Sensoren am…”. Bei der Speicherung der Temperaturwerte empfiehlt sich die Speicherung im SQLite3 Format, hierzu empfehle ich dir meinen Beitrag “SQLite 3 Datenbank mit Python erstellen und auslesen”. Zum Thema E-Mail Versand würde ich dir den Beitrag “E-Mails versenden mit Python” auf Coding World empfehlen.
      Wenn du den Raspberry Pi mit Monitor verwendest, solltest du dich mit dem Thema grafische Oberfläche beschäftigen. Siehe hierzu den Beitrag “9. Graphische Benutzeroberfläche” auf der Seite pythonbuch.com.
      Wenn dir zwei oder drei LED’s ausreichen, empfehle ich dir meinen Beitrag “Ansteuerung von 3 LEDs…“. Weitere Beiträge zu diesem Thema habe ich unter der Kategorie “Temperatur WebApp” zusammengefasst.
      Viele Grüße
      Wolfgang

  • Michael Schneider schrieb am 26. Mai 2018:

    Hallo Wolfgang
    Dein Video hat mir Sehr geffalen.
    Köntest du villeicht noch ein video wie dieses zum AM 2302 (DHT22) machen.
    Mit dem DHT22 bzw.AM2302 kann man ja Feuchtigkeit und Temperatur messen.
    Da muss aber dann auch ein Script geschrieben werden mitten s python.
    Gruß Michael

  • Michael Schneider schrieb am 3. April 2018:

    Danke für die schnelle Rückantwort auf meine Frage
    Das Problem St glaube ich das wenn das messprogramm 7 Tage Woche läuft die Daten Bank sprengen könnte. Was ich gerne noch umsetzen würde wäre Datum NDR Uhrzeit zur messspalte hinzu zufügen Gruß Michael. Das nächste ist das Projekt von dir mit der Web App und der Auswertung der messdatemessadapter. Gruß Michael

    • Wolfgang schrieb am 6. April 2018:

      Hallo Michael,
      gerne doch. Die Datenbankgröße ist natürlich von der Anzahl der Einträge abhängig, allerdings sind die Einträge doch sehr platzsparrend, sodass du dir am Anfang deines Projektes bei einer entsprechend großen SD-Karte keine Gedanken machen musst. Vielleicht verlegst du die Daten ja auch auf ein externes Datenmedium (NAS, Netzlaufwerk, USB-Medium usw.)
      Viele Grüße
      Wolfgang

  • Michael Schneider schrieb am 2. April 2018:

    Wie kann ich endlos Messwerte erfassen im bereich des Temperatursensor s?
    Wie heißt dieser Befehl ?
    Gruß Michael
    Ich würde mir gerne daraus eine Wetterstation bauen

    Ihre Videos sind sehr gut erklärt und machen es einem Anfänger wie mir recht einfach dies nachzuvollziehen

    • Wolfgang schrieb am 2. April 2018:

      Hallo Michael,
      einen direkten Befehl für die ununterbrochene Messwerterfassung gibt es nicht. Aber du kannst die in diesem Beispiel vorhandene while-Schleife abändern bzw. auf unendlich, setzten indem du den Zähler löschst bzw. auskommentierst.
      Auskommentierte Zeile 37: #schleifenZaehler = schleifenZaehler + 1
      Viele Grüße
      Wolfgang

  • Michael Schneider schrieb am 1. April 2018:

    Sehr tolles Portal die Erklärung der Programmierung von Python und auch das konfigurieren des wir eine sensor s an einem Py ist echt super verständlich erklärt worden . Bin auf das nächste Toturial das aufzeichnen und anzeigen von Messwerten des One wirke Sensors gespannt . Großes Lob an den Autor.

    • Wolfgang schrieb am 2. April 2018:

      Vielen Dank für die positive Rückmeldung. 🙂
      Viele Grüße
      Wolfgang

  • Dieter schrieb am 27. März 2018:

    Hallo, ich bin anfänger mit dem Pi finde deine seiten prima aber habe eine Frage zur GPIO Bezeichnung.
    Ich habe gelesen das die Bezeichnungen sehr unterschiedlich gehändelt werden und um Missverständnisse zu vermeiden es sinnvoll ist die GPIO bzw BCM bezeichnungen zu nutzen.z.B.
    GPIO.setmode(GPIO.BCM)
    Nun finde ich in deinem Programm aber nicht die zuweisung auf diese Kennzeichnung oder habe ich etwas übersehen?
    Lese ich den P-Code richtig das ein vorgesetztes # ein Kommentar ist ?

    Ich möchte mit zwei sensoren die Vor und Rücklauf Temperatur der Heizun an den Rohrleitungen bestimmen und dann in einer Datei ( stick ) speichern um diese als Grafik später auf dem Rechner z.B. über excel auzuwerten

    • Wolfgang schrieb am 29. März 2018:

      Hallo Dieter,
      deine Anmerkung zur GPIO Bezeichnung ist durchaus richtig. Ich selbst verwende diese Schreibweise auch, siehe hierzu zum Beispiel meinen Beitrag Ansteuerung von 3 LEDs am Raspberry Pi mit Python.
      Zur Auslesung der Temperatur-Sensoren benötigst du allerdings die 1-Wire Schnittstelle, welche nicht über die GPIO’s ausgelesen wird. Auch wenn sich diese Schnittstelle auf einem GPIO-Pin befindet. Daher findest du auch diese Kennzeichnung nicht in diesem Programm.
      Das vorgesetzte # liest du richtig, es handelt sich um einen Kommentar.
      Um die beiden Sensoren auszulesen, kannst du dir ja mal meinen Beitrag “Mehrere DS1820 Sensoren am Raspberry Pi mit Python einlesen” ansehen. Die von dir ausgelesenen Dateien kannst du in einer entsprechend formatierten Textdatei auf deinem Stick abspeichern und mit Excel zur Auswertung aufrufen.
      Viele Grüße
      Wolfgang

  • Wolfgang schrieb am 9. März 2018:

    Hallo Vincent,
    das Programm gibt es nicht als Datei. Du musst dir die Datei selbst anlegen und den angebotenen Quellcode kopieren.
    Wie du die Datei anlegst kommt darauf an, wie du mit dem Raspberry Pi arbeitest. Zum Beispiel kannst Du über das Terminal und den Befehl “sudo idle” die Python-Oberfläche öffnen. Dann legst du eine neue Datei an und kopierts den Quellcode hinein. Danach speicherst du die Datei und führst sie aus.
    Viele Grüße
    Wolfgang

  • Lea schrieb am 12. Mai 2017:

    Hallo,
    ich bin ein absoluter Python-Anfänger, dadurch war ich echt glücklich das deine Anleitung so detailliert ist.
    Die Installation und das Abschreiben vom Pythonprogramm ging auch gut. Wenn ich jetzt allerdings versuche das Programm zu starten,
    soll man es ja erst speichern und dann kommt folgende Meldung:
    I/O Warning
    Non-ASCII found, yet no encoding declared. Add in a line like “# -*- coding: utf-8 -*.” to your file
    Choose OK to save this file as utf-8
    Edit your generall options to silence this warning

    Wenn ich dann Ok drücke kommt:
    I/O Error
    [Errno 2] No such file or directory:
    ‘/var/www/messprogramm.py’

    Kann mir vielleicht jemand helfen?
    Danke im vorraus

    • Wolfgang schrieb am 12. Mai 2017:

      Hallo Lea,
      das Programm kannst du in jedem Verzeichnis abspeichern. Die Fehlermeldung bedeutet nur, der gewählte Pfad /var/www/ ist nicht vorhanden. Daher öffne deinen Editor nicht mit /var/www/messprogramm.py sondern nur mit z.B. messprogramm.py. Im Normalfall befindet sich die Datei dann im Verzeichnis /home/pi/.
      Viele Grüße
      Wolfgang

  • Felix schrieb am 8. Mai 2017:

    Servus Wolfgang!

    Ich habe folgendes Problem, und zwar wenn ich cat /sys/bus/w1/devices/ meine Bezeichnung /w1_slave eingebe kommt folgende Meldung:
    cat: meine Bezeichnung: Datei oder Verzeichnis nicht gefunden.
    Mir ist allerdings auch aufgefallen, dass ich eine sehr komische Bezeichnung für meinen Sensor habe: 00-400000000000 00-800000000000 00-c00000000000
    Ich hoffe du kannst mir weiterhelfen 🙂

    Liebe Grüße

    Felix

    • Wolfgang schrieb am 9. Mai 2017:

      Hallo Felix,
      die Sensoren müssen beim Booten des Systems angeschlossen sein. Die angegebenen Bezeichnungen lassen darauf schließen, dass dein Sensor nicht im System eingebunden wurde. Ein Neustart dürfte in solchen Fällen helfen.

      Viele Grüße
      Wolfgang

  • Jörn schrieb am 31. Januar 2017:

    Servus Wolfgang,

    bei der Suche nach einer Lösung um die Vor- und Rücklauftemperaturen unserer Heizung auszulesen, bin ich über Deine Seite “gestolpert” 🙂

    Vielleicht kannst Du mir einen Tipp geben.

    Das Script läuft soweit ohne Fehler durch – nachdem ich die Sensor-ID ersetzt und die Hinweis von Matthias mit den Prix befehlen in Klammern gesetzt habe. Allerdings bekomme ich keine Werte ausgegeben. Hast Du eine Idee, woran es liegen kann?

    Gruß
    Jörn

    • Wolfgang schrieb am 31. Januar 2017:

      Hallo Jörn,
      hast Du Dir zum Test den Messwert vor dem return am Ende der Funktion aktuelleTemperatur() mit einem print ausgeben lassen? Dies wäre mein erster Schritt um der Sache etwas näher zu kommen, wenn auch hier kein Wert ausgegeben wird, über das Terminal mal mit “cat /sys/bus/w1/devices/DEINE SENOSORBEZEICHUNG/w1_slave” den Wert auslesen, vielleicht liegt ja dort das Problem.

      Viele Grüße
      Wolfgang

      • Joern schrieb am 1. Februar 2017:

        Moin Wolfgang,

        vielen Dank fuer Deine schnelle Antwort!

        Ich weiss nicht, ob ich hier den ganzen Code posten kann. Ich hab nun zwischen der Zeile rueckgabewert = ‘%6.2f’ % temperature und return(rueckgabewert) ein print (aktuelleTemperatur) eingebaut.

        Als Ergebnis bekomme ich nun ausgegeben!?

        Frage ich den Sensor mit cat /sys/bus/w1/devices/28-0316556d5fff/w1_slave ab, erhalte ich die Temperatur.

        • Wolfgang schrieb am 1. Februar 2017:

          Hallo Jörn,
          das print soll den Wert von “rueckgabewert” ausgeben, daher musst Du den Befehl entsprechend angeben, also print rueckgabewert bzw. print (rueckgabewert).

          • Jörn schrieb am 1. Februar 2017:

            Kaum macht man es richtig 😉

            Die Temperatur wird nun ausgegeben.

            Aktuelle Temperatur :
            17.94

            Also liegt das Problem wohl im unteren Teil des Codes.

          • Wolfgang schrieb am 1. Februar 2017:

            Sehr schön 😉
            Wie lautet den Dein print Befehl im unteren Bereich?
            print “Aktuelle Temperatur : “, messdaten, “°C”, “in der “, schleifenZaehler, “. Messabfrage”
            bzw.
            print (“Aktuelle Temperatur : “), messdaten, (“°C”), (“in der “), schleifenZaehler, (“. Messabfrage”)

  • Matthias schrieb am 7. Dezember 2016:

    Hallo, ich bin Anfänger was Sachen Programmierung angeht. Der Temp Sensor ist angeschlossen und es geht auch soweit das ich ihn mir anzeigen lassen kann beim Befehl
    cat /sys/bus/w1/devices/ meine id eingetragen /w1_slave

    Wo es bei mir aufhört ist bei dem Pyton Programm . Habe mit sudo nano test.py aufgerufen und das Programm dort reinkopiert. Die Temp id natürlich abgeändert. und gespeichert. aber egal was ich versuche ich bekomms nicht zum laufen.
    Wer könnte mir da helfen?
    Vielen lieben dank schon mal im vorraus
    Gruß Matthias

    • Wolfgang schrieb am 7. Dezember 2016:

      Hallo Matthias,
      da es sich um ein Python-Programm handelt, kannst du das Programm direkt mit der IDLE schreiben und ausführen. Rufe hierzu dein Programm mit sudo idle test.py aus dem Terminal auf und führe es über den Menüpunkt “Run” oder mit der Funktionstaste F5 aus.
      Viele Grüße
      Wolfgang

      • Matthias schrieb am 8. Dezember 2016:

        Vielen lieben dank für die schnelle Antwort. Finde ich echt Klasse.
        Leider kommt diese Fehlermeldung dabei raus:

        Traceback (most recent call last):
        File “/usr/bin/idle”, line 5, in
        main()
        File “/usr/lib/python2.7/idlelib/PyShell.py”, line 1545, in main
        root = Tk(className=”Idle”)
        File “/usr/lib/python2.7/lib-tk/Tkinter.py”, line 1813, in __init__
        self.tk = _tkinter.create(screenName, baseName, className, interactive, want objects, useTk, sync, use)
        _tkinter.TclError: no display name and no $DISPLAY environment variable

        Bor , keine Ahnung was der von mir will, Grübel.

        Herzlichen Dank nochmal für deine Hilfe , hoffe du kannst mir hier auch weiterhelfen ?

        Gruß Matthias

        • Wolfgang schrieb am 8. Dezember 2016:

          Gerne doch…
          Wenn ich die Meldung richtig deute, verwendest du den Raspberry Pi nicht im Desktop-Modus. Die IDLE benötigt meines Wissens allerdings diese. Solltest Du ohne Desktop arbeiten wollen/müssen, dann musst du dich in dieser Richtung beschäftigen oder Python zum Beispiel über den Webserver aufrufen.
          Viele Grüße
          Wolfgang

          • Wolfgang schrieb am 8. Dezember 2016:

            Wie heißt es so schön, viele Wege führen zum Ziel … 😉
            Auf alle Fälle freut es mich, dass du es zum Laufen gebracht hast. 🙂
            Viele Grüße und viel Spaß mit deinem RasPi
            Wolfgang

          • Matthias schrieb am 8. Dezember 2016:

            So nach langer suche Problem gelöst. Als 1. Aufruf mit Python 2.7.9 dann die print Befehle in Klammern setzten.

            print(“Temperaturabfrage für “), schleifenAnzahl,
            print(” Messungen alle “), schleifenPause ,(” Sekunden gestartet”)

            Jetzt gehts.

            Danke für die Hilfe 🙂

          • Matthias schrieb am 8. Dezember 2016:

            So jetzt bin ich meinem Prob doch schon viel näher gekommen , dank dir 🙂
            Hast recht muss den Befehl über Desktop aufrufen ABER dann kam trotzdem eine Fehlermeldung und das Programm läuft jetzt erst wo ich die Zeile:

            print “Temperaturabfrage für “, schleifenAnzahl,
            ” Messungen alle “, schleifenPause ,” Sekunden gestartet”

            rausgelöscht habe.
            Jetzt bringt er mir alle sec die Aktuelle Temp in Schleife. Komisch oder ?

  • Stephan schrieb am 20. November 2016:

    Hallo,

    Ich verwende genau das Python Script was auf der Seite angegeben ist,
    aber leider führt der Raspi das Script nicht vollständig aus, und gibt die Meldung aus :
    Das die Zeile 33 nicht definiert ist .

    woran könnte das liegen ?

    Gruß Stephan

    • Wolfgang schrieb am 21. November 2016:

      Hallo Stephan,
      in der Zeile 33 mit “messdaten = aktuelleTemperatur()” wird der Rückgabewert der aufgerufenen Funktion aktuelleTemperatur() bestimmt. Stimmt den der Funktionsaufruf und in der Funktion der Name der Datei?
      Viele Grüße
      Wolfgang

  • Nick schrieb am 2. November 2016:

    Is there a way to wire the thermometer to a USB and then connect to the Pi via USB (instead of going through the board and pins)?

    • Wolfgang schrieb am 3. November 2016:

      Hello Nick,
      a 1 wire to USB possibility is not known to me. Perhaps such a solution would be realized via an Arduino or similar.
      Best wishes
      Wolfgang

  • Tom schrieb am 30. Juni 2016:

    Leider klappt es bei mir nicht, wenn ich den Code so übernehme. Ich bekomme folgenden Fehler:
    file = open(“/sys/bus/w1/devices/28-000005d2e508/w1_slave”)
    IOError: [Errno 2] No such file or directory: ‘/sys/bus/w1/devices/28-000005d2e508/w1_slave’

    Ich arbeite über Eclipse und einer SSH Verbindung zum Pi. Könnte es daran liegen? Hast Du vielleicht einen Lösungsansatz für mich?
    Vielen Dank!

    • Wolfgang Raab schrieb am 30. Juni 2016:

      Hallo Tom,
      an Eclipse liegt es nicht. Du musst das verwendeten Verzeichnis “28-000005d2e508” mit dem Sensor-Kennung bestimmten Verzeichnis auf Deinem Raspberry Pi ersetzen. Das Verzeichnis findest Du über die Terminaleingabe: cd /sys/bus/w1/devices
      Viele Grüße

  • Viktor schrieb am 11. Mai 2016:

    Hat alles geklappt.
    Schön wäre eine detailiertere Aufschlüsselung der einzelnen Anweisungen. z.B. die Definition der split-Anweisung.
    Aber dafür gibt es sicher was zum Nachlesen…
    Klasse Arbeit. Danke!

    • Wolfgang Raab schrieb am 11. Mai 2016:

      Hallo Viktor,
      vielen Dank für Deinen Kommentar.
      Viele Grüße
      Wolfgang


Schreibe einen Kommentar

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

 

Kleiner Hinweis, alle Kommentare werden moderiert.

Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.

Entdecke die Welt von Webnist.de

Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.

Aktuelles Video auf YouTube

Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.