Raspi Zero WH - paho.mqtt

  • Hi,

    habe ein Problem mit dem Raspi Zero WH.

    Der Sketch verlangt den " Import paho.mqtt.client as mqtt "


    Ich habe vorab "pip3" installiert mit dem Befehl: sudo apt-get install python3.pip - (wurde vom Programm nur aktualisiert).

    Anschließend mit : pip install paho-mqtt - Paho erfolgreich installiert

    Nach dem Programmstart erscheint eine Fehlermeldung - Import Error: No module name paho.mqtt.client


    Kann mir jemand helfen das Problem zu lösen ?

  • Hallo,

    Danke für die prompten Antworten.


    Das war leider nur von teilweise von Erfolg gekrönt, denn jetzt erscheinen neue Fehlermeldungen:


    File "mqttrelay.py" , line 108 in <module> main()

    File "mqttrelay.py" , line 102 in main client.connect("192.168.x.xyz", 1883, 60)

    File " /usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 768, in connect return self.reconnect()

    File " /usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 895, in reconnect sock=socket.create_connection ((self._host, self._port),

    source_address=(self.bind_address, 0))

    File " /usr/local/lib/python2.7/socket.py", line 575, in create_connection raise err

    socket.error: [Errno 111] Connection refused


    Was kann man tun um diese Fehler zu beseitigen ?

  • /usr/local/lib/python2.7/

    Und wenn du mit pip3 installierst, musst du auch mit Python 3 ausführen. :shy:


    socket.error: [Errno 111] Connection refused

    Dann lauscht unter 192.168.x.xyz:1883 wohl kein Broker.

    192.168.x.xyz ist aber auch keine Gültige IP-Adresse. Entweder du hast das so da stehen, das kann nicht gehen. Oder du hast es für uns "zensiert", dass wäre Schwachsinn. IP-Adressen aus einem privaten Adressbereich zu anonymisieren erschwert höchstens die Möglichkeit, zu helfen; ohne Mehrwert: https://de.wikipedia.org/wiki/Private_IP-Adresse

  • Hm,

    wieso wird bei "pip3" nicht automatisch Python3 ausgeführt ?


    Die IP-Adresse hatte ich für das Forum "zensiert", konkret habe ich die IP vom MQTT-Broker für openhab2 (Raspberry3) 192.168.2.105 im Sketch eingetragen.

    Zur Info: Mein "Raspi Zero wh" ist neu und läuft unter der IP 192.168.2.111 - Sketche ohne MQTT laufen problemlos auf dem Pi-Zero.


    Der "Problem- Sketch" ist unter Github - https://github.com/IDontKnow-YouTube/MQTT-Pi-Relay.git - downloadbar.

    Die Ausführung des Sketches scheitert leider aus den genannten Gründen.



  • wieso wird bei "pip3" nicht automatisch Python3 ausgeführt

    Weil pip3 Module für python3 installiert. Wenn du ein Script mit python3 ausführen willst, musst du ihm das auch sagen. Entweder per korrekter Shebang oder durch starten mit dem richtigen Programm.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • wieso wird bei "pip3" nicht automatisch Python3 ausgeführt ?

    pip3 installiert für/mit Python 3, ausführen musst du es schon manuell (mit Python 3, wahrscheinlich python3). Ist jetzt einfach ausgedrückt, man kann nämlich auch mehrere Versionen von Python 2 oder 3 parallel installieren, Virtualenvs nutzen (empfehlenswert!), dort kann dann pip und pip3 das gleiche sein, etc etc.


    Merke dir einfach: Installation am besten mit pip3 install --user <paket>, Ausführen mit python3 /pfad/zu/script.py.


    Probier mal auf dem Pi (der mit der IP 192.168.2.105), auf dem der Broker läuft, folgendes und poste die Ausgabe als Code (</>-Button):

    Code
    1. netstat -tulpn | grep LISTEN


    Und von dem Pi (der mit der IP 192.168.2.111) aus, auf dem du dein Skript ausführen willst:

    Code
    1. nc -zv 192.168.2.105 1883


    PS: Sketch ist so ein Arduino-Ding ;)

    Skript oder einfach Programm ist auf dem Pi gängiger...

  • puh, ...das Hauptproblem ist gelöst.

    jetzt gibt es noch ein sketch spezielles Problem.


    Der Compiler akzeptiert kein "#"-Zeichen bei folgendem Befehl: client.subscribe("/home/test/#")

    Fehlermeldung lautet - TabError: inconsistent use of tabs and spaces in indentation.

  • Fehlermeldung lautet - TabError: inconsistent use of tabs and spaces in indentation.

    und du glaubst das das mit der Raute zu tun hat? Hast mal mal überlegt was das bedeuten könnte? Und bitte nenn es nicht Sketch.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Der Compiler akzeptiert kein "#"-Zeichen bei folgendem Befehl: client.subscribe("/home/test/#")

    Fehlermeldung lautet - TabError: inconsistent use of tabs and spaces in indentation.

    Du hast bestimmt einen Python-Interpreter installiert, vermutlich CPython. Python wird in der Regel interpretiert.


    Die Fehlermeldung hat nichts mit dem Doppelkreuz zu tun – es steht doch da, was du falsch gemacht hast!

    Zitat

    inconsistent use of tabs and spaces in indentation.

    In Python sind einrückungen essentiell, und die sollten immer mit 4 Leerzeichen pro Ebene geschehen!, nicht zwei, nicht unterschiedlich viele, keine Tabs, nicht tabs uns spaces mischen. Kannst du in jedem guten Editor einstellen, ein Druck auf die Tab-Taste macht dann vier Leerzeichen daraus.


    Kommst du zufällig aus der C-Ecke? ;)

  • Sache läuft nicht "rund", ich bekomme jetzt fast die gleiche Fehlermeldung wie am Anfang


    File "mqttreplay.py", line 4, in <module> import paho.mqtt.client as mqtt

    ImportError: No module named 'paho'

  • okay

    habe heute morgen den Pi-Zero ganz neu eingerichtet (mit mosquitto), dann das besagte Github-Programm - https://github.com/IDontKnow-YouTube/MQTT-Pi-Relay.git aufgeladen und gestartet (ohne pip3), es kam die Fehlermeldung das Paho-mqtt fehlt.

    Dann "pip3" geladen, anschließend mittels Befehl pip3 install paho-mqtt geladen - erfolgreich installiert wurde Version paho-mqtt-1.3.1.

    Die Fehlermeldung lautet jetzt - Import Error: No module named 'paho'

  • Nein, so wird das nichts. Fehlermeldungen kommen meistens aus dem Nichts, sondern sind Resultat einer Aktion – indeinem Fall: du hast etwas ausgeführt, nur WAS genau?


    Bitte lies dir folgendes durch: Wie Frage ich nach Hilfe?


    Dann postest du alle ausgeführten, das Problem betreffenden Befehle inklusive output als Code formatiert. Dann sehen wir weiter, anders kann in dem Fall man nicht helfen.