Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. MQTT >1.5 funktioniert bei mir nicht mehr

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UNSOLVED MQTT >1.5 funktioniert bei mir nicht mehr

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      blumfisch last edited by blumfisch

      Hallo,

      ich nutze den MQTT-Adapter seit längerem in Version 1.5
      Darauf greifen Mikrocontroller 8266 per pubsub-Library und eine Webseite per Paho-Javascript Client zu.

      Das alles funktioniert wunderbar, bis ich den MQTT-Adapter auf Version >= 2 update.
      Dann ist nur noch Chaos:

      • Webseite kann sich nicht anmelden:
      client = new Paho.MQTT.Client("192.168.178.101", Number(1884), "/ws", "LABHTML");
      

      erzeugt Fehlermeldungen wie: AMQJS0008I Socket closed" und "WebSocket connection to 'ws://192.168.178.101:1884/mqtt' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED"

      • MQTT Adapter blinkt mal grün, mal gelb, mal rot. Hier die Fehlermeldung:
      mqtt.0	2019-07-12 23:13:20.083	info	Starting MQTT -WebSocket' server on port 1884
      mqtt.0	2019-07-12 23:13:20.078	info	Starting MQTT ' server on port 1883
      mqtt.0	2019-07-12 23:13:17.442	info	starting. Version 2.1.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v8.16.0
      host.ioBroker-RasPi	2019-07-12 23:13:15.038	info	instance system.adapter.mqtt.0 started with pid 30135
      host.ioBroker-RasPi	2019-07-12 23:12:44.996	info	Restart adapter system.adapter.mqtt.0 because enabled
      host.ioBroker-RasPi	2019-07-12 23:12:44.996	error	instance system.adapter.mqtt.0 terminated with code 0 (OK)
      Caught	2019-07-12 23:12:44.996	error	by controller[0]: at Connection.emit (events.js:211:7)
      Caught	2019-07-12 23:12:44.996	error	by controller[0]: at emitOne (events.js:116:13)
      Caught	2019-07-12 23:12:44.996	error	by controller[0]: at Object.onceWrapper (events.js:315:30)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at Connection.<anonymous> (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:53:12)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at Connection.emit (events.js:211:7)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at emitOne (events.js:116:13)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at Connection.emitPacket (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:10:8)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at Connection.emit (events.js:211:7)
      Caught	2019-07-12 23:12:44.995	error	by controller[0]: at emitOne (events.js:116:13)
      Caught	2019-07-12 23:12:44.994	error	by controller[0]: at Connection.client.on.options (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:750:30)
      Caught	2019-07-12 23:12:44.994	error	by controller[0]: TypeError: stream.setTimeout is not a function
      mqtt.0	2019-07-12 23:12:44.950	info	terminating
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.emit (events.js:211:7)
      mqtt.0	2019-07-12 23:12:44.432	error	at emitOne (events.js:116:13)
      mqtt.0	2019-07-12 23:12:44.432	error	at Object.onceWrapper (events.js:315:30)
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.<anonymous> (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:53:12)
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.emit (events.js:211:7)
      mqtt.0	2019-07-12 23:12:44.432	error	at emitOne (events.js:116:13)
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.emitPacket (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:10:8)
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.emit (events.js:211:7)
      mqtt.0	2019-07-12 23:12:44.432	error	at emitOne (events.js:116:13)
      mqtt.0	2019-07-12 23:12:44.432	error	at Connection.client.on.options (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:750:30)
      mqtt.0	2019-07-12 23:12:44.432	error	TypeError: stream.setTimeout is not a function
      mqtt.0	2019-07-12 23:12:44.431	error	uncaught exception: stream.setTimeout is not a function
      mqtt.0	2019-07-12 23:12:44.049	info	Client [LABHTML] connected with secret 262996_851
      
      • Und der 8266er stürzt ab.

      Ich habe alles nach Standard-Beispielen programmiert.
      Und sobald ich auf 1.5 zurückgehe, funktionieren 8266 und die Javascript-Webseite wieder tadellos und schnell.

      Deshalb meine Fragen:
      Was hat sich geändert in diesem Update? Erkennt jemand meinen Fehler?
      Und vor allem: Was muss ich tun, damit es mit dem Update wieder funktioniert?

      Alles läuft im lokalen Netzwerk auf einem RasPi mit aktuellen Updates(?)
      node=8.16.0
      npm=6.4.1
      Paho=alte+neue Version getestet: https://www.eclipse.org/paho/clients/js/

      B 1 Reply Last reply Reply Quote 0
      • B
        blumfisch @blumfisch last edited by blumfisch

        Niemand? Funktioniert das bei allen? Oder habe ich was Wichtiges nicht geposted?

        Ich zeig euch mal den Code:
        Eigentlich nur das Muster-Beispiel, das bei paho-mqtt.js dabei ist:
        (hier ist auch ein fiddle.js wo man nur bei ("broker.mqttdashboard.com", 8000 ") seine ("eigene MQTT-Broker-IP", 1884) eingeben muss:
        http://jsfiddle.net/gLBsu/3/ )

        <script type="text/javascript" src="new paho-mqtt.js"> </script>
         
        <script type="text/javascript">  
        
        // Create a client instance
        var host = "192.168.178.101";
        var port = 1884;
        client = new Paho.Client(host, port, "MQTTTEST");
        
        // set callback handlers
        client.onConnectionLost = onConnectionLost;
        client.onMessageArrived = onMessageArrived;
        
        // connect the client
        client.connect({onSuccess:onConnect});
        
        
        // called when the client connects
        function onConnect() {
          // Once a connection has been made, make a subscription and send a message.
          console.log("onConnect");
          client.subscribe("World");
          message = new Paho.Message("Hello");
          message.destinationName = "World";
          client.send(message);
        }
        
        // called when the client loses its connection
        function onConnectionLost(responseObject) {
          if (responseObject.errorCode !== 0) {
            console.log("onConnectionLost:"+responseObject.errorMessage);
          }
        }
        
        // called when a message arrives
        function onMessageArrived(message) {
          console.log("onMessageArrived:"+message.payloadString);
        }
        </script>
        

        Entweder erhalte ich die Fehlermeldung:

         MQTTTest2.html:48 onConnectionLost:AMQJS0008I Socket closed.
        

        Oder

        new paho-mqtt.js:1054 WebSocket connection to 'ws://192.168.178.101:1884/mqtt' failed: 
        Error in connection establishment: net::ERR_CONNECTION_REFUSED
        LibraryFactory.ClientImpl._doConnect	@	new paho-mqtt.js:1054
        LibraryFactory.ClientImpl.connect	        @	new paho-mqtt.js:887
        Client.connect	@	new paho-mqtt.js:2028
        (anonymous)	@	MQTTTest2.html:35
        
        new paho-mqtt.js:1052 WebSocket connection to 'ws://192.168.178.101:1884/mqtt' failed: 
        Error in connection establishment: net::ERR_CONNECTION_REFUSED
        LibraryFactory.ClientImpl._doConnect	@	new paho-mqtt.js:1052
        LibraryFactory.ClientImpl._disconnected	@	new paho-mqtt.js:1617
        LibraryFactory.ClientImpl._on_socket_error	@	new paho-mqtt.js:1453
        

        iobroker Log gibt mir immer wieder diese Schleife als Fehlermeldung:

        mqtt.0	2019-07-16 19:13:20.566	info	Starting MQTT -WebSocket' server on port 1884
        mqtt.0	2019-07-16 19:13:20.564	info	Starting MQTT ' server on port 1883
        mqtt.0	2019-07-16 19:13:19.588	info	starting. Version 2.1.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v8.16.0
        host.ioBroker-RasPi	2019-07-16 19:13:18.220	info	instance system.adapter.mqtt.0 started with pid 2957
        host.ioBroker-RasPi	2019-07-16 19:12:48.208	info	Restart adapter system.adapter.mqtt.0 because enabled
        host.ioBroker-RasPi	2019-07-16 19:12:48.208	error	instance system.adapter.mqtt.0 terminated with code 0 (OK)
        host.ioBroker-RasPi	2019-07-16 19:12:48.207	error	Caught by controller[0]: at Connection.emit (events.js:211:7)
        host.ioBroker-RasPi	2019-07-16 19:12:48.207	error	Caught by controller[0]: at emitOne (events.js:116:13)
        host.ioBroker-RasPi	2019-07-16 19:12:48.207	error	Caught by controller[0]: at Object.onceWrapper (events.js:315:30)
        host.ioBroker-RasPi	2019-07-16 19:12:48.207	error	Caught by controller[0]: at Connection.<anonymous> (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:53:12)
        host.ioBroker-RasPi	2019-07-16 19:12:48.206	error	Caught by controller[0]: at Connection.emit (events.js:211:7)
        host.ioBroker-RasPi	2019-07-16 19:12:48.206	error	Caught by controller[0]: at emitOne (events.js:116:13)
        host.ioBroker-RasPi	2019-07-16 19:12:48.206	error	Caught by controller[0]: at Connection.emitPacket (/opt/iobroker/node_modules/iobroker.mqtt/node_modules/mqtt-connection/connection.js:10:8)
        host.ioBroker-RasPi	2019-07-16 19:12:48.206	error	Caught by controller[0]: at Connection.emit (events.js:211:7)
        host.ioBroker-RasPi	2019-07-16 19:12:48.205	error	Caught by controller[0]: at emitOne (events.js:116:13)
        host.ioBroker-RasPi	2019-07-16 19:12:48.204	error	Caught by controller[0]: at Connection.client.on.options (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:750:30)
        host.ioBroker-RasPi	2019-07-16 19:12:48.199	error	Caught by controller[0]: TypeError: stream.setTimeout is not a function
        mqtt.0	2019-07-16 19:12:47.641	error	TypeError: stream.setTimeout is not a function at Connection.client.on.options (/opt/iobroker/node_modules/iobroker.mqtt/lib/server.js:750:30) at emitOne (events.js:116:13) at Connection.e
        mqtt.0	2019-07-16 19:12:47.640	error	uncaught exception: stream.setTimeout is not a function
        mqtt.0	2019-07-16 19:12:47.639	info	Client [MQTTTEST] connected with secret 1563297167353_5931
        mqtt.0	2019-07-16 19:12:20.580	info	Starting MQTT -WebSocket' server on port 1884
        mqtt.0	2019-07-16 19:12:20.578	info	Starting MQTT ' server on port 1883
        mqtt.0	2019-07-16 19:12:19.496	info	starting. Version 2.1.0 in /opt/iobroker/node_modules/iobroker.mqtt, node: v8.16.0
        host.ioBroker-RasPi	2019-07-16 19:12:18.236	info	instance system.adapter.mqtt.0 started with pid 1758
        

        Oder ist das ein Fehler der Paho.Mqtt-Library?

        Aber mit
        MQTT Adapter 1.5 war alles ok.
        MQTT Adapter 2.0 ist auch ok. (obwohl es ab 2.0 anderes seltsames Verhalten gibt, aber das muss ich noch erforschen)
        MQTT Adapter 2.0.1 auch ok.
        MQTT Adapter 2.0.2 auch ok
        MQTT Adapter 2.0.4 auch ok

        Adapter 2.05 und 2.06 konnte ich nicht installieren.

        Und erst mit MQTT Adapter Version 2.1.0 geht es eben NICHT mehr.

        Das spricht doch dafür, dass in dieser Version was nicht stimmt, oder?
        Aber die 8266er, die per pubsub.h an MQTT angebunden sind, funktionieren übrigens auch mit Version 2.1.
        Nur der Javascript-Client scheint Probleme zu haben.
        Also ist es doch Paho.mqtt?

        Ich weiß nicht ...
        Wäre für jede Hilfe wirklich sehr dankbar.

        1 Reply Last reply Reply Quote 0
        • Mikewolf
          Mikewolf last edited by

          hallo habe mit esp8266 ähnliches problem schon sehr lange...!
          issue auf gizhib ist auch offen !!

          Mit freundlichen Grüßen
          mikwolf

          B 1 Reply Last reply Reply Quote 0
          • B
            blumfisch @Mikewolf last edited by blumfisch

            @Mikewolf Danke für die Antwort!

            Meine ESP8266 funktionieren wie gesagt mit pubsub.h.

            Ich musste aber seit 1.5 das Verhalten von MQTT ändern, damit die mitmachen:
            Auf 1.5 hatte ich NUR Häkchen bei "Sende auch Zustände (ACK=true)". Alles andere war aus.

            Bei Versionen 2.+ habe ich umgestellt auf "Publish nur bei Änderung" und alles andere aus gemacht. QoS=0, default retain flag true. Dann funktionieren sie bei mir wieder. Hab ich aber auch erst gestern beim Testen rausgefunden. Noch nicht ausführlich geprüft.

            Vielleicht hilfts ja.

            Denke, dass MQTT ein absolut zentraler Baustein im IoT ist und auf jeden Fall funktionieren sollte.
            Weiß halt nur nicht, ob es am Adapter oder an Paho liegt.

            1 Reply Last reply Reply Quote 0
            • B
              blumfisch last edited by blumfisch

              Hm... Auch weitere Tests haben jetzt bestätigt: Irgendwas ist mit Version 2.1 des MQTT Adapters.

              Hat denn jemand Erfahrung MQTT?
              Ich plane das für ein Produktiv-System.
              Wenn ich das nicht updaten kann und es dann evtl. irgendwann ausfällt oder unsicher wird, kann ich ioBroker nicht einsetzen.

              Sollte ich vielleicht einen eigenen Mosquitto-MQTT-Server aufsetzen, statt den von ioBroker zu nutzen?
              Kann ich den auf dem Raspberry laufen lassen, auf dem auch ioBroker läuft? Oder brauche ich dafür extra einen zweiten?
              Oder doch openHAB oder ein anderes System?
              Hat jemand bei sich zuhause eine stabile MQTT-Umgebung?

              1 Reply Last reply Reply Quote 0
              • Wal
                Wal Developer last edited by Wal

                Habe MQTT 2.1 als Server schon länger ohne Probleme am laufen. Habe Temperatur-Sensoren und pi-mqtt-gpio daran gekoppelt.
                pi-mqtt-gpio nutzt paho.

                B 1 Reply Last reply Reply Quote 0
                • B
                  blumfisch @Wal last edited by blumfisch

                  @Wal hm... interessant. Das macht es noch seltsamer.
                  Und wenn du in das fiddle-Beispiel (http://jsfiddle.net/gLBsu/3/) oben deine lokale MQTT-Broker IP eingibst und auf Run und dann den Button "1. CONNECT" drückst... läuft es dann oder meldet der iobroker-Log Fehler und einen Neustart des Adapters?

                  Das benutzt auch PAHO, genauer mqttws31.js.

                  Wal 1 Reply Last reply Reply Quote 0
                  • Wal
                    Wal Developer @blumfisch last edited by

                    @blumfisch
                    du hast Recht, über Websocket's funzt der Adapter nicht. Er steigt bei mir mit den gleichen Fehlermeldungen aus.

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      blumfisch @Wal last edited by

                      @Wal Danke fürs Verifizieren!

                      Dann stimmt wohl was mit den Websockets nicht (wenn man das so sagen kann)

                      An wen wende ich mich denn jetzt am besten? Das kann ich selbst nicht reparieren.

                      Wal 1 Reply Last reply Reply Quote 0
                      • Wal
                        Wal Developer @blumfisch last edited by

                        @blumfisch

                        habe nochmal getestet.
                        Wenn ich auf der Seite HiveMQ keepalive auf 0 stelle, funktioniert es.

                        1 Reply Last reply Reply Quote 0
                        • B
                          blumfisch last edited by

                          Ich nutze MQTT nur im internen Netzwerk, also kein HiveMQ.
                          Habs trotzdem mal getestet, denn das entspräche ja:

                          var client = new Messaging.Client("localhost", 1884, "myclientid_", 0));
                          

                          und/oder

                           var options = {
                               timeout: 0,
                          

                          Oder?
                          Fazit: Stürzt immer noch ab.

                          Ich habe aber was Entscheidendes bemerkt: Das DEFAULT Repository ist erst bei MQTT Version 2.0.4. Ich hatte meinen ioBroker zuhause auf LATEST gestellt.

                          Vielleicht sollte ich das in einer Produktivumgebung auch sein lassen 🙂 Gehe jetzt also definitiv zurück auf 2.0.4.

                          Hoffe, es hilft vielleicht trotzdem, Version 2.1 näher an DEFAULT zu bringen.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          931
                          Online

                          31.8k
                          Users

                          80.0k
                          Topics

                          1.3m
                          Posts

                          mqtt mqtt problem update
                          3
                          11
                          1225
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo