MQTT Tasmota Sonoff POW

  • Okay, woher weiß ich denn welche Pfade ich ändern muss?

    Du musst keine ändern.

    Achso, der Service muss quasi erst erstellt werden? Hatte nach der installation einfach wie es in der Anleitung stand „enable“ mosquitto.service angegeben.

    Welche Anleitung schreibt enable mosquitto.service?


    Der Service muss nicht erstellt werden. Der Service ist nämlich mosquitto. Was möglicherweise erstellt werden muss, ist /etc/systemd/system/mosquitto.service. Diese Datei wird von systemd verwendet, und systemd dient dem Starten und Stoppen von Services (in diesem Fall mosquitto). Also: welche Anleitung?

  • Nach dieser hier: [Anleitung] Sonoff RF + Funkschalter in HomeKit


    Da steht aber nicht, dass ich mit nano was in die mosquitto.service schreiben sollte > so hatte ich die Antwort von Marco Schmidt verstanden.


    Also diese Datei habe ich gemäß Vorgehen der obigen Anleitung nicht erstellt. Habe lediglich systemctl mitgeteilt, diese Datei auszuführen. Was aber dann ja keinen Sinn macht ;)


    Code
    sudo update-rc.d mosquitto remove
    sudo git clone https://github.com/Dan-in-CA/mosquitto_unit_file.git
    sudo cp mosquitto_unit_file/mosquitto.service /etc/systemd/system/mosquitto.service
    sudo systemctl enable mosquitto.service
    sudo reboot
    check if mosquitto is running
    sudo mosquitto -v

    Gruß

    Maddin

    Einmal editiert, zuletzt von Maddin84 ()

  • Du hast vorher nicht mitgeteilt, dass du die service aus der von dir genannten Anleitung genommen hast. Die Frage, was sudo systemctl status mosquitto ausgibt, hast du auch nicht beantwortet. So können wir nicht helfen herauszufinden, warum der Mosquitto-Server nicht läuft.

  • Du hast vorher nicht mitgeteilt, dass du die service aus der von dir genannten Anleitung genommen hast. Die Frage, was sudo systemctl status mosquitto ausgibt, hast du auch nicht beantwortet. So können wir nicht helfen herauszufinden, warum der Mosquitto-Server nicht läuft.

    Sorry...

    Gebe dir recht dass diese Info hilfreich gewesen wäre.


    Sobald ich zu Hause bin und an den Rechner kann, schaue ich mal was sich tut :)

    Gruß

    Maddin

  • Also diese Datei habe ich gemäß Vorgehen der obigen Anleitung nicht erstellt.

    Klar hast du die erstellt. Die Anleitung beschreibt das ja:


    sudo cp mosquitto_unit_file/mosquitto.service /etc/systemd/system/mosquitto.service

    was soviel bedeutet wie: kopiere mit root-Rechten die Datei mosquitto.service nach /etc/systemd/system.


    Habe lediglich systemctl mitgeteilt, diese Datei auszuführen. Was aber dann ja keinen Sinn macht

    Doch, das macht absolut Sinn. Der Befehl sudo systemctl enable mosquitto (das .service am Ende kann man weglassen) sorgt dafür, dass der Mosquitto-Server beim Booten automatisch gestartet wird. Dieser Befehl muss nur einmal eingegeben werden.


    Der Befehl sudo systemctl start mosquitto startet den Server

    Der Befehl sudo systemctl stop mosquitto beendet den Server

    Der Befehl sudo systemctl restart mosquitto beendet den Server und startet ihn neu


    Ein Logfile habe ich mit sudo less /var/log/mosquitto/mosquitto.log anzeigen können.


    Da ich von dieser Anleitung keinen blassen Schimmer hatte, habe ich meinen Mosquitto einfach installiert und die Datei /etc/systemd/system/mosquitto.service selber ausgedacht.

  • Code
    pi@raspberrypi:~ $ sudo systemctl status mosquitto
    ● mosquitto.service - Mosquitto MQTT Broker daemon
       Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled; vendor pre   Active: activating (auto-restart) (Result: exit-code) since Fri 2020-05-29  Process: 32750 ExecStart=/usr/local/sbin/mosquitto -c /usr/local/etc/mosquilines 1-4/4 (END)

    Gruß

    Maddin

  • Und beim manuellen starten bekomme ich folgendes angezeigt:


    Aber der Server reagiert auf Befehle


    Das steht in der .service

    Code
    May 29 16:45:22 raspberrypi systemd[1]: Starting Mosquitto MQTT Broker daemon...
    May 29 16:45:22 raspberrypi systemd[735]: mosquitto.service: Failed to execute command: No such file or directory
    May 29 16:45:22 raspberrypi systemd[735]: mosquitto.service: Failed at step EXEC spawning /usr/local/sbin/mosquitto: No such file or directory
    May 29 16:45:22 raspberrypi systemd[1]: mosquitto.service: Control process exited, code=exited, status=203/EXEC
    May 29 16:45:22 raspberrypi systemd[1]: mosquitto.service: Failed with result 'exit-code'.
    May 29 16:45:22 raspberrypi systemd[1]: Failed to start Mosquitto MQTT Broker daemon.
    ~

    Gruß

    Maddin

    Einmal editiert, zuletzt von Maddin84 ()

  • /usr/local/sbin/mosquitto: No such file or directory

    Da steht's doch. Das soll gestartet werden und das gibt es nicht. Setze in /etc/systemd/system/mosquitto.service das ein, was du mit which mosquitto herausbekommst.


    Danach ein sudo systemctl daemon-reload

  • Hab alles so ausgeführt. Klappt leider nicht.


    Habe mir jetzt den Befehl „@reboot sudo mosquitto“ in die crontab -e geschrieben. So startet Mosquitto beim reboot. Läuft doch aufs gleiche raus, oder??


    Code
    pi@raspberrypi:~ $ systemctl status mosquitto
    ● mosquitto.service - Mosquitto MQTT Broker daemon
       Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
       Active: activating (auto-restart) (Result: exit-code) since Fri 2020-05-29 22:08:35 CEST; 1s ago
      Process: 887 ExecStart=/usr/sbin/mosquitto -c /usr/etc/mosquitto/mosquitto.conf -d (code=exited, status=3)

    Gruß

    Maddin

    Einmal editiert, zuletzt von Maddin84 ()

  • Du kannst natürlich machen was du willst, wirds halt Scheiße. Läuft eben nicht aufs gleiche raus. Weiß der Geier, welche Config der lädt. Startet auch nicht im insecure-Mode für Alexa. Andere Startparameter werden so auch nicht übertragen, weder -c, noch -d. Aber he, nicht mein Problem. Du weißt es offensichtlich besser, als wir.

  • Du kannst natürlich machen was du willst, wirds halt Scheiße. Läuft eben nicht aufs gleiche raus. Weiß der Geier, welche Config der lädt. Startet auch nicht im insecure-Mode für Alexa. Andere Startparameter werden so auch nicht übertragen, weder -c, noch -d. Aber he, nicht mein Problem. Du weißt es offensichtlich besser, als wir.

    Nein, das habe ich doch gar nicht gesagt.

    War eigentlich eher eine Frage, ob es aufs gleiche raus läuft?!


    Die Pfade in der .service hatte ich angepasst, wie ihr gesagt habt.

    Soll ich ggfs. Mosquitto noch mal neu aufsetzen oder was würdet ihr mir raten?


    Sorry, wollte wirklich nicht besserwisserisch rüber kommen. War eher als Anfängerfrage gemeint. Wollte keinem auf den Schlips treten von euch.

    Gruß

    Maddin

  • Habe mir jetzt den Befehl „@reboot sudo mosquitto“ in die crontab -e geschrieben. So startet Mosquitto beim reboot. Läuft doch aufs gleiche raus, oder??

    Ja, aber so wird's nun mal nicht gemacht ^^. Wenn's für dich so funktioniert, warum nicht. Ich wusste nicht einmal, dass man das so machen kann und ich wäre auch nie auf diese Idee gekommen. Und wenn, dann nicht mit sudo mosquitto. Das ist zwar alles ganz schön, aber es ist übles Gebastel, so wie den Reservereifen deines Autos auf die Windschutzscheibe zu kleben: man sieht zwar nix mehr, aber Hauptsache, der Reservereifen ist dabei.


    Dass du Mosquitto nicht mehr vernünftig stoppen kannst, scheint dir auch egal zu sein. Gut, da kann man sich dann auf mich berufen, der ständig behauptet: ich starte nicht irgendwas, um es wieder zu stoppen. Trotzdem ist deine Vorgehensweise gleichbedeutend mit Kontrollverlust.


    Läuft eben nicht aufs gleiche raus. Weiß der Geier, welche Config der lädt. Startet auch nicht im insecure-Mode für Alexa.

    Falsches Programm. Hier soll MQTT gestartet werden und das braucht keinen Insecure-Modus für Alexa, weil

    • MQTT nicht mit Alexa kommuniziert und
    • MQTT gar keinen Insecure-Modus kennt.


    Maddin84

    Du startest deinen Mosquitto mit /usr/sbin/mosquitto -c /usr/etc/mosquitto/mosquitto.conf

    Das weiß ich, weil ich das oben lesen kann. Und das funktioniert, wenn du das auf der Shell eingibst, vor allem, wo du nach Anleitung diese Datei ganz woanders angelegt hast? Das ich glaube nicht. Ich würde es mal versuchen mit


    /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf


    Noch was zum Lesen von Anleitungen:

    • Anleitungen sind nicht nur zum Lesen da, sondern auch zum Verstehen.
    • Beim Lesen von Anleitungen sollte der Blick nicht wahllos auf dem Bildschirm herumlungern.
    • Beim Lesen von Anleitungen sollte der einzige Gedanke im Kopf nicht "das raff ich doch sowieso nicht" sein.
    • Beim Lesen von Anleitungen sollte der einzige Gedanke im Kopf "Wie hängen diese Dinge zusammen?" sein.
    • Keep cool.

    Das ist alles nicht immer so einfach. Das kann ich gelegentlich sogar nachvollziehen. Komischerweise versteht jeder auf seinem Desktop und per Maus, wie man einen Ordner namens etc anlegen kann, und in diesem Ordner einen Unterordner namens mosquitto und darin eine Datei namens mosquitto.conf. Und jeder versteht, wie man mit der Maus in diesen Ordnern navigieren kann, und jeder versteht, dass das alles eine Struktur bildet. Kaum geht es um /etc/mosquitto/mosquitto.conf, machen viele den Kopp zu, obwohl es genau das gleiche ist, und ziehen sich darauf zurück, dass sie ja keine Experten sind.


    Jeder hier hat auf seinem PC oder auf seinem Mac schon mal ein Programm gestartet. Jeder hier hat schon mal Einstellungen in einem Programm gemacht. Beispielsweise habe ich mal Word gestartet und in den Einstellungen angegeben, wo der Standardordner zum Speichern von Worddateien ist. So etwas Ähnliches hat hier schon jeder gemacht. Dass solche Angaben irgendwo gespeichert werden müssen, ist vielleicht dem einem oder anderen nicht so klar, weil das mit diesem Computer alles irgendwie magic ist, und zwar much magic. Denjenigen, denen das logisch vorkommt, werden sicherlich auch begreifen, dass solche Einstellungen auch wieder geladen werden müssen.


    Wir haben hier auf unseren Raspis meist keine grafische Benutzeroberfläche oder eine Maus. Hier wird kein Programm per Doppelklick gestartet, sondern per Eingabe auf der Tastatur. Und irgendwo müssen auch die Einstellungen abgelegt werden, im vorliegenden Fall in die Datei mosquitto.conf. Und dann startet man das Programm mosquitto und das will wissen, wo denn diese Einstellungsdatei liegt. Und weil man sie zufälligerweise mit dem Befehl nano /etc/mosquitto/mosquitto.conf erstellt hat, liegt der Verdacht nahe, dass man Mosquitto mit dem Befehl mosquitto -c /etc/mosquitto/mosquitto.conf starten muss.


    Ja, du kriegst das jetzt ab, dabei sind viele gemeint. Dafür schulde ich dir jetzt mindestens ein Bier. Absolut einforderbar. Ich gebe auch zu, dass viele Anleitungen völlig beschissen geschrieben sind und natürlich gebe ich erst recht zu, dass ich schon oft gescheitert bin, die falschen Pfade angegeben habe, mein Blick auf dem Bildschirm herumlungerte.


    Macht euch die Mechanismen klar. Ein Programm, dass nicht auf der Shell gestartet werden kann, weil irgendwas nicht nicht stimmt, wird sich auch nicht automatisch starten lassen.

  • Ja, da muss ich jetzt durch.

    Aber das kann ich abhaben :D


    Hatte ich auch schon versucht, den Pfad zu ändern, aber auch da bekomme ich dem Exit Code.

    Code
     mosquitto.service - Mosquitto MQTT Broker
       Loaded: loaded (/etc/systemd/system/mosquitto.service; enabled; vendor preset: enabled)
       Active: activating (auto-restart) (Result: exit-code) since Sat 2020-05-30 11:50:28 CEST; 3s ago
         Docs: man:mosquitto(8)
               man:mosquitto.conf(5)
      Process: 15519 ExecStart=/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf (code=exited, status=3)
     Main PID: 15519 (code=exited, status=3)
    pi@raspberrypi:~ $ 

    Gruß

    Maddin

  • Also hier steht ja drin „loaded“. Kann ich das so verstehen, dass der Service auch geladen wurde?


    Nach dem Neustart ist leider der Service nicht aktiv. Das heißt, wenn ich meinen diffuser nach dem reboot aktivieren möchte, nimmt dieser keine Kommandos entgegen. Erst nachdem ich „Sudo mosquitto“ eingebe.


    Verstehe es irgendwie nicht so Ganz, wo der Fehler liegt.

    Gruß

    Maddin

  • Habs gelöst.
    Das Problem war die Anleitung, die ich aus dem internet hatte. In der Config sollte ein Parameter „bind_adress 192.xxx“ eingegeben werden. Dieser parameter war dem system aber fremd. Ich habe die datei leer gemacht. Und die log file hatte falsche rechte.
    mit dem Befehl mosquitto -c /etc/mosquitto/mosquitto.conf konnte ich den Fehler lokalisieren. Danke für eure hilfe und eure geduld

    Gruß

    Maddin

  • Hallo,

    ich habe versucht meine Sonoff S20 Steckdose mit Mqtt und dem Tasmota Mqqttthing Plugin in Homebridge einzubinden.

    Allerdings bisher noch nicht erfolgreich.

    Ich habe mosquitto auf dem raspi installiert und in mqttfx kann ich die Commandos auch sehen wenn ich den Sonoff direkt auf der UI schalte.

    Wahrscheinlich passt mal wieder meine Config nicht :(

    Ich finde den Fehler aber einfach nicht...


    Beim ersten mal funktioniert sowas wahrscheinlich nie. :D

    Hier ist meine Config:



    Sieht jemand vielleicht einen Fehler?



    Danke im Voraus

    Ich freue mich über jeden Tipp :)

    idna

  • Hast du mal als URL probiert:

    mqtt://192.xxx.xxx

    Gruß

    Maddin

  • Hmm, stimmen da die Links zu den Topics?


    Bei mir sieht das so aus:

    (Ist ja quasi auch eine URL)

    Code
     "getOn": "stat/tasmota/tuyasend4",
                    "setOn": "cmnd/tasmota/tuyasend4"

    Gruß

    Maddin