Temperaturüberwachung mit dem BME280 Sensor: Programm schreiben für den Pi mit den installieren der benötigten Bibliotheken etc.

  • Hallo,

    ich habe vorher noch nie mit einem Pi oder Linux Betriebssystem gearbeitet und muss jetzt dazu ein Projekt bearbeiten.

    Das Projekt soll die Überwachung eines Raumes sein. Dies soll mit dem Raspberry Pi4 und dem Temperatursensor BME280 geschehen.

    Das Programm soll beim Überschreiten des Grenzwertes eine E-Mail über den Mailserver verschicken und eine LED Lampe zum leuchten bringen, die erstmal auch am Breadboard angeschlossen ist.

    Angeschlossen habe ich den Sensor mithilfe eines Breadboards am Pi schon.

    Weiterer Vorgehensschritte waren dann:

    - raspi-config noint do_i2c 0

    - sudo apt install -y python3-smbus i2c-tools

    - lsmod | grep i2c_ -> Module waren geladen

    - i2detect -y 1 -> Sensor wurde auf 76 angezeigt

    - sudo apt install python3-pip -y

    -sudo pip3 install --user adafruit-ciruitpython-bme280 -> Meldung: Warning: Retrying .... after connection broken by *NewConnectionError' ... Das Netzwerk ist nicht erreichbar.

    Danach wollte ich ein einfaches Skript Testen, welches mir nur die Temperatur anzeigt. Da gab es aber schon Probleme.

    Der Code:

    #!/usr/bin/python -> da liegt python auch und auch mit python3 probiert

    import smbus2

    import bme280

    address = 0x76

    bus_number = 1

    bus = smbus2.SMBus(bus_number)

    calibration_params = bme280.load_calibration_params(bus, address)

    bme280_sensor = bme280_sensor.get_temperature()

    print(f"Temperature:{temperature:.2f}°C")

    Ich führe das Programm mit dem Befehl sudo python temp-sensor.py aus.

    Meldung die erscheint:

    Traceback (most recent call last):

    File "/home/Monka/temp_sensor.py", line 2, in <module>

    import smbus2

    ModuleNotFoundError: No module named 'smbus'

    Das "Skript" liegt hier: /home/Monka/temp-sensor.py

    Nach Recherche kam ich drauf das die Zeile "#!/usr/bin/python" fehlt, aber auch mit der die gleiche Meldung.

    Da ich vom Pi und Linux keine Ahnung habe, komme ich da nicht weiter.

    Kann mir einer weiterhelfen und sagen was ich Falsch mache bzw anders machen muss oder noch installieren muss etc.

    Wenn noch andere Angaben fehlen oder wichtig sind, können diese gerne Erfragt werden.

    Falls dann noch Zeit übrig ist, auch mit dem richtigen Skript, welches ich dann benötige, aber das eine würde erstmal reichen.

    Danke im Vorraus.

  • Temperaturüberwachung mit dem BME280 Sensor: Programm schreiben für den Pi mit den installieren der benötigten Bibliotheken etc.? Schau mal ob du hier fündig wirst!

  • Das Modul smbus2 ist ein Ersatz für smbus-cffi. Damit du das nutzen kannst, musst du es erst mal installieren.

    Am besten nutzt du auch ein virtual environment für Python. Dann sind die installierten Pakete von der Standard-Python-Installation des Betriebssystem isoliert.

    Wenn du dann dein Programm lädst, musst du daran denken, das venv auch vorher zu aktivieren.

    Alternativ kann man auch den Pfad zum Python-Interpreter (ist ein Symlink) angeben, um das Programm zu starten.

    Dann verwendet Python das Verzeichnis MY_VENV als Ausgangspunkt.

    Code
    MY_VENV/bin/python mein_programm.py

    oder

    Code
    source MY_VENV/bin/activate
    
    python mein_programm.py
  • Danke für die Antwort.

    Habe den ersten Code jetzt Copy&Paste und dann ausführen lassen (Code ohne deactivate) da kommt Folgende Meldung:

    Traceback (most recent call last):

    File "<string>", line 2

    python3 -m venv MY_VENV

    ^^^^

    SyntaxError: invalid syntax

    Zur Ergänzung, egal welchen Code ich nehme bzw welchem Import Befehl, da kommt immer die gleiche Meldung, wie oben Beschrieben. (import time z.b. auch)

  • Diese Fehlermeldung kommt, wenn Du das innerhalb von Python ausführst.

    Es sind aber Kommandos, die in der Shell ausgeführt werden, also außerhalb von Python.

  • Diese Fehlermeldung kommt, wenn Du das innerhalb von Python ausführst.

    Es sind aber Kommandos, die in der Shell ausgeführt werden, also außerhalb von Python.

    Danke, und wie kann ich das dann umgehen?

    Könnte es auch einfach ein Berechtigungs Problem sein? Sprich das Skript bzw der Befehl kommt durch Mangel an Rechten erst gar nicht zu dem import Modul?

    Da ich nicht weiß wie Linux da funktioniert, wüsste ich auch nicht, wie ich das Problem grundsätzlich lösen könnte.

    Ist denn der Code Fehlerfrei und ich würde da die Temperatur angezeigt bekommen??

  • Was sind die Ausgaben von

    Code
    cat /etc/os-release

    und von

    Code
    python -V

    ?

    Bitte jeweils in einem Codeblock für mehrzeiligen Code!

    python -V:

    Code
    Python 3.9.2

    cat /etc/os-release:

    Code
    PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
    NAME="Debian GNU/Linux"
    VERSION_ID="11"
    VERSION="11 (bullseye)"
    VERSION_CODENAME=bullseye
    ID=debian
    HOME_URL="https://www.debian.org/"
    SUPPORT_URL="https://www.debian.org/support"
    BUG_REPORT_URL="https://bugs.debian.org/"
  • Ok, dann mal ein einfaches Skript

    Erstelle mal eine Datei namens test.py und kopiere obigen Inhalt dort hinen! Das rufst Du dann mit python /Pfad/zu/test.py (den Pfad natürlic anpassen) im Terminal auf.

    Was passiert? Abbrechen kannst Du das, soweit es funktioniert mit der Tastenkombination Strg + c.

  • ich habe vorher noch nie mit einem Pi oder Linux Betriebssystem gearbeitet und muss jetzt dazu ein Projekt bearbeiten.

    Monka : Vielleicht hilft es weiter, wenn Du uns wissen lässt

    • ob Du denn (etwas) Erfahrung mit Python hast
    • was Du genau tust/eintippst und welche Meldungen kommen
    • wie Dein aktuelles Python-Script aussieht => in einem Codeblock
    • ob Du @DeaD_EyE 's Vorschlag bezüglich virtualenv folgst bzw. folgen möchtest

    Sonst ist es für die Leser und möglichen Helfer nur "Stochern im Nebel"...

  • Ok, dann mal ein einfaches Skript

    Erstelle mal eine Datei namens test.py und kopiere obigen Inhalt dort hinen! Das rufst Du dann mit python /Pfad/zu/test.py (den Pfad natürlic anpassen) im Terminal auf.

    Was passiert? Abbrechen kannst Du das, soweit es funktioniert mit der Tastenkombination Strg + c.

    Er zählt hoch:

    test 0

    test 1

    usw.

  • Monka : Vielleicht hilft es weiter, wenn Du uns wissen lässt

    • ob Du denn (etwas) Erfahrung mit Python hast
    • was Du genau tust/eintippst und welche Meldungen kommen
    • wie Dein aktuelles Python-Script aussieht => in einem Codeblock
    • ob Du @DeaD_EyE 's Vorschlag bezüglich virtualenv folgst bzw. folgen möchtest

    Sonst ist es für die Leser und möglichen Helfer nur "Stochern im Nebel"...

    Auch dir danke für die Antwort.

    - mit Python auch keine Erfahrung

    - das versuche ich ja genau zu beschreiben!?

    -

    soll erstmal nur die aktuelle Gradzahl anzeigen, damit ich überhaupt weiß, ob es funktioniert.

    -Ich hatte das Probiert, habe seinen Code als neues Programm Copy&Pasted und bearbeitet, weil dieses deactivate konnte ich ja weg lassen, jedoch kam die obige Fehlermeldung, dementsprechend habe ich das nicht weiter verfolgt, da keine Ahnung was da genau zu tun ist.

  • wichtig für mich wäre es ja nur, dass ich den BME280 Sensor mit dem Pi ansteuern kann und die Temperatur auslesen könnte.

    Das wäre ja schon die halbe Miete, wenn da nicht die Fehlermeldungen kommen.

    Den Rest, dass dann eine E-Mail beim überschreiten des Grenzwertes über den Mailserver verschickt wird und eine LED Lampe angeht, die an einem Breadboard mit dem Pi verbunden ist, bekommt man natürlich erst hin, wenn der Sensor auch die Temperatur ausgibt.

  • Versuchs mal mit

    Code
    pip install smbus2

    und starte nach dieser Installation Dein Skript nochmals! Jetzt sollte eine andere Fehlermeldung kommen.

    kann leider nicht copy&pasten..

    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple

    ERROR: Exception:

    Traceback (most recent call last):

    File "/usr/share/python-wheels/http://resolvelib-0.5.4-py2.py3-none-any.whl/resolvelib/resolvers.py", line 171, in _merge_into_criterion

    crit = self.state.criteria[name]

    KeyError: 'smbus2'

    During handling of the above exception, another exception occured:

    Traceback (most recent call last):

    File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 223, in_main

    status = self.run(options, args)


    von dem zweiten Fehler folgen noch 11 weitere File Zeilen.

    Kannst du damit schon was anfangen?

  • Bei mir klappt es:

    Code
    simonz@pi6:~ $ pip install smbus2 bme280
    
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting smbus2
      Downloading https://www.piwheels.org/simple/smbus2/smbus2-0.4.2-py2.py3-none-any.whl (13 kB)
    Collecting bme280
      Downloading https://www.piwheels.org/simple/bme280/bme280-0.6-py2.py3-none-any.whl (6.1 kB)
    Installing collected packages: smbus2, bme280
    Successfully installed bme280-0.6 smbus2-0.4.2

    Vielleicht gab es bei Deinem Versuch beim pypi-Server ein technisches Problem.

    Probier' es einfach noch einmal...

  • Bei mir klappt es:

    Code
    simonz@pi6:~ $ pip install smbus2 bme280
    
    Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
    Collecting smbus2
      Downloading https://www.piwheels.org/simple/smbus2/smbus2-0.4.2-py2.py3-none-any.whl (13 kB)
    Collecting bme280
      Downloading https://www.piwheels.org/simple/bme280/bme280-0.6-py2.py3-none-any.whl (6.1 kB)
    Installing collected packages: smbus2, bme280
    Successfully installed bme280-0.6 smbus2-0.4.2

    Vielleicht gab es bei Deinem Versuch beim pypi-Server ein technisches Problem.

    Probier' es einfach noch einmal...

    Habe es jetzt noch 2 weitere Male Probiert. Immer die gleiche Meldung.

    Kann denn bei einer vorherigen Installation von python3 oder einer anderen BiB was schief gelaufen sein?

    Was ich auch noch mir Vorstellen könnte, dass es ein Berechtigungsproblem ist, da der Benutzer nicht nach /usr/bin/python darf!?

    Könnte sowas Möglich sein?

Jetzt mitmachen!

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