Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT Connection failed

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    MQTT Connection failed

    Hallo zusammen,

    ich versuche gerade eine Sonoff Steckdose mittels MQTT über OpenHAB zu steuern.

    Meine Umgebung:
    Auf einem RaspberryPi läuft jeweils im Docker der MQTT Broker Mosquitto und openHAB.
    Über MQTT.fx kann ich bereits mit der Steckdose kommunzieren.

    In openhab hatte ich zuerst den Fehler, dass ich das binding mqtt in addons.cfg eingetragen hatte. Nun steht dort mqtt1 und ich bin einen Schritt weiter und konnte kurzzeitig die Steckdose steuern. Aber nun geht nichts mehr.

    Im folgenden meine Einstellungen / Log-Dateien.
    In der LogDatei bin ich irritiert, dass dort versucht wird die connection "mosquitto", "broker" und "mqtt" aufzumachen. Hätte dort nur "mosquitto" erwartet - wie in der mqtt.cfg beschrieben. Die Meldung "Not authorized to connect" würde ich so interpretieren, dass die Zugangsdaten, welche in der mqtt.cfg stehen falsch sind - aber mit den gleichen Daten bekomme ich über MQTT.fx eine Verbindung.

    Vielleicht befindet sich irgendwo noch ein Fehler?!


    Auszug aus der addons.cfg
    Code:
    # A comma-separated list of bindings to install (e.g. "binding = sonos,knx,zwave")
    binding = ntp, astro, yahooweather, systeminfo, homematic, mqtt1

    Datei mqtt.cfg (Die Wörter ipadress, username und password habe ich ersetzt).
    Code:
    mosquitto.url=tcp://ipadress:1883
    mosquitto.clientId=openhab
    #mosquitto.qos=0
    #mosquitto.retain=false
    #mosquitto.async=true
    mosquitto.user=username
    mosquitto.pwd=password

    Auszug aus der Logdatei
    Code:
    2018-12-12 07:58:39.246 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto'
    2018-12-12 07:58:39.450 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'mqtt'
    2018-12-12 07:58:39.520 [ERROR] [penhab.io.transport.mqtt.MqttService] - Error starting broker connection
    org.eclipse.paho.client.mqttv3.MqttSecurityException: Not authorized to connect
            at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28) ~[?:?]
            at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:990) ~[?:?]
            at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118) ~[?:?]
            at java.lang.Thread.run(Thread.java:748) [?:?]
    2018-12-12 07:58:39.559 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'broker'
    2018-12-12 07:58:39.592 [WARN ] [t.mqtt.internal.MqttBrokerConnection] - MQTT connection to 'mosquitto' was lost: Connection lost : ReasonCode 32109 : Cause : null
    2018-12-12 07:58:39.595 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting connection helper to periodically try restoring connection to broker 'mosquitto'
    2018-12-12 07:58:49.620 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection 'mosquitto'
    2018-12-12 07:58:49.640 [WARN ] [t.mqtt.internal.MqttBrokerConnection] - MQTT connection to 'broker' was lost: Connection lost : ReasonCode 32109 : Cause : null
    2018-12-12 07:58:49.642 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting connection helper to periodically try restoring connection to broker 'broker'

    #2
    Schau mal ob dir das evtl. hilft
    I have OH 2 latest snapshot MQTT installed and configured successfully Item configured to receive a message from a topic and parse using JSONPath Item: String PresenceJF_Phone "JFHome" { mqtt="<[mqtt:openHAB/in/…

    Kommentar


      #3
      Zitat von Nybass Beitrag anzeigen
      In der LogDatei bin ich irritiert, dass dort versucht wird die connection "mosquitto", "broker" und "mqtt" aufzumachen. Hätte dort nur "mosquitto" erwartet - wie in der mqtt.cfg beschrieben.
      Deine Erwartungshaltung ist korrekt.
      Wahrscheinlich sind in der userdata/config/org/openhab/mqtt.config noch alte Werte von vorherigen Versuchen vorhanden. Einfach mal die mqtt.config löschen und openHAB neu starten, anschl. wird diese Datei mit den aktuellen Werten aus deiner mqtt.cfg neu angelegt.

      Kommentar


        #4
        Zitat von sihui Beitrag anzeigen

        Deine Erwartungshaltung ist korrekt.
        Wahrscheinlich sind in der userdata/config/org/openhab/mqtt.config noch alte Werte von vorherigen Versuchen vorhanden. Einfach mal die mqtt.config löschen und openHAB neu starten, anschl. wird diese Datei mit den aktuellen Werten aus deiner mqtt.cfg neu angelegt.
        Hatte ich auch gedacht - ich habe daher den Docker 2.4.0.M7 gestoppt und den Docker V2.4.0-snapshot gestartet. Aber gleiches Verhalten.
        Ich versuch es aber mal mit dem löschen. Vielleicht ist da wirklich noch irgendwo etwas "altes" und da kommt sich dann auch der Name noch in die Quere

        Kommentar


          #5
          Ich habe die mqtt.cfg gelöscht und den openHAB Server neu gestartet - die Meldungen tauchen immer noch im Log auf. Wie kann man alte Konfigurationsstände löschen? Binding deinstallieren und dann neu installieren?

          Vermutlich liegt es wirklich daran, da ich anfangs mit dem binding mqtt eine Config hatte und damals noch ohne user/pw und mit dem Namen broker. Erst nachdem ich gesehen habe, dass ich das binding mqtt1 installieren muss, habe ich den Namen nach mosquitto angepasst und user/pw eingegeben.

          Kommentar


            #6
            Ich habe nun das Binding "mqtt1" aus der addons.cfg entfernt und dadurch wurde das Binding gelöscht.
            Code:
            2018-12-12 09:30:58.149 [INFO ] [core.karaf.internal.FeatureInstaller] - Uninstalled 'openhab-binding-mqtt1'
            Danach habe ich den Server heruntergefahren und das Binding wieder in die cfg-Datei eingetragen.
            und schon kommen wieder die Logmeldungen:

            Code:
            2018-12-12 09:33:57.572 [INFO ] [penhab.io.transport.mqtt.MqttService] - MQTT Service initialization completed.
            2018-12-12 09:33:57.575 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection '[B]mosquitto[/B]'
            2018-12-12 09:33:57.902 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection '[B]mqtt[/B]'
            2018-12-12 09:33:58.003 [ERROR] [penhab.io.transport.mqtt.MqttService] - Error starting broker connection
            org.eclipse.paho.client.mqttv3.MqttSecurityException: Not authorized to connect
                at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:28) ~[?:?]
                at org.eclipse.paho.client.mqttv3.internal.ClientState.notifyReceivedAck(ClientState.java:990) ~[?:?]
                at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:118) ~[?:?]
                at java.lang.Thread.run(Thread.java:748) [?:?]
            2018-12-12 09:33:58.050 [INFO ] [t.mqtt.internal.MqttBrokerConnection] - Starting MQTT broker connection '[B]broker[/B]'
            2018-12-12 09:33:58.099 [WARN ] [t.mqtt.internal.MqttBrokerConnection] - MQTT connection to 'mosquitto' was lost: Connection lost : ReasonCode 32109 : Cause : null
            Es ist zum verrückt werden.

            Es wurden nun Default Config Dateien angelegt. Diese werde ich mal anpassen und eine eigene ID vergeben - dennoch würde ich gerne wissen wie ich die alten Configs gelöscht bekomme.

            Kommentar


              #7
              Ich habe die alten Configs hier gefunden und die Datei nun einfach mal gelöscht. Scheint nun zu gehen.
              Danke für den Denkanstoß!

              /opt/openhab/userdata/config/org/openhab/mqtt.config

              Kommentar


                #8
                Dazu muss man nochmal die Funktionsweise von openHAB2 erläutern.
                Die Textdateien für die Konfiguration werden von einem Prozess überwacht, ein Schreibzugriff auf eine der Dateien bewirkt das erneute Einlesen der Parameter.
                Allerdings werden nur solche Parameter verändert, die auch in der entsprechenden .cfg Datei mit einem Wert belegt sind. Alles andere wird ignoriert.
                Das bedeutet, ein einmal über die *.cfg gesetzter Parameter kann zwar geändert, aber nicht mehr gelöscht werden.
                openHAB2 kopiert die Parameter in seine interne Datenbank, an der man auch besser (auf Dateiebene) nicht rum fummelt, wenn man nicht exakt weiß, was man da tut.

                Über die Karaf Konsole bietet openHAB2 aber komfortablen Zugriff auf diese Daten und man kann relativ bequem Parameter setzen, ändern oder auch löschen.
                Von der GNU/Linux Konsole aus:
                Code:
                openhab@openhab2:~$ ssh openhab@localhost -p8101
                
                                          __  _____    ____
                  ____  ____  ___  ____  / / / /   |  / __ )
                 / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __  |
                / /_/ / /_/ /  __/ / / / __  / ___ |/ /_/ /
                \____/ .___/\___/_/ /_/_/ /_/_/  |_/_____/
                    /_/                        2.4.0-SNAPSHOT
                                               Build #1401
                
                Hit '<tab>' for a list of available commands
                and '[cmd] --help' for help on a specific command.
                Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown openHAB.
                
                openhab> config:edit org.openhab.mqtt
                openhab> config:property-list
                   mosquitto.clientId = openhab2
                   mosquitto.url = tcp://openhab2.netz.lokal:1883
                openhab> config:property-delete mosquitto.clientId
                openhab> config:property-delete mosquitto.url
                openhab> config:property-list
                openhab> config:update
                openhab> logout
                Ich habe bei mir Autorisation über Private Key aktiviert, normalerweise fragt openHAB nach einem Passwort, das ist voreingestellt habopen.

                Die Karaf-Konsole unterstützt autocompletion, im Zweifel zeigt die Konsole alle Möglichkeiten an.
                Die obigen Befehle löschen gezielt genau die beiden gelisteten Zeilen.
                Mit dem abschließenden update werden die Änderungen übernommen und der edit-Modus verlassen.
                Das zweite property-list zeigt nur, dass der Löschvorgang erfolgreich war, zur Funktion ist dieser Befehl unnötig.
                Zuletzt geändert von udo1toni; 12.12.2018, 20:43.

                Kommentar


                  #9
                  Danke für die gute technische Erklärung!
                  ​​​​​​das ist gut zu wissen

                  Kommentar

                  Lädt...
                  X