MQTT module stopped working with latest update

Posted on
  • Hi All, I've been using the MQTT module without any problems for at least a month. However, I started having problems yesterday, which I see was the day that a new MQTT module was posted on https://www.espruino.com/modules

    mqtt.connect() gives this immediate error:

    >mqtt.connect()
    =undefined
    Uncaught SyntaxError: Got ':' expected EOF
     at line 1 col 70
    ...;var f=c.charCodeAt(0)>>4;a:{var d=c.substr(1,5);var k=1,l=0...
    

    Code is running on
    ESP8266-12E flashed with espruino_1v95_esp8266_4mb_combined_4096.­bin ...

    Test program, which has worked without a problem is listed below.

    Is there an error in the MQTT module? Is there a change in using it?
    Also, a related question: is there a way to access a previous version of a module?

    Thanks,

    Dan

    Program:

    var wifi = require("Wifi");
    
      var server = 'm14.cloudmqtt.com';
      var options = {
              keep_alive: 60,
              port: xxxx,
              clean_session: true,
              client_id: "xxxx",
              username: "xxxx",
              password: "xxxx",
              protocol_name: "MQTT",
              protocol_level: 0 };
    
      var mqtt = require("MQTT").create(server, options); // changes here
        mqtt.on('connected', function() {
        mqtt.subscribe("red");
          mqtt.subscribe("blue");
        console.log("connected");
      });
    
    mqtt.on('disconnected', function() {
      console.log("MQTT disconnected... reconnecting.");
      setTimeout(function() {
        mqtt.connect();
      }, 1000);
    });
      
       mqtt.on('publish', function (pub) {  // this place throw error
        console.log("topic: "+pub.topic);
        console.log("message: "+pub.message);
        if (pub.topic == "red") {
         if (pub.message == "on") {digitalWrite(16,0);}
         if (pub.message == "off") {digitalWrite(16,1);}
        }
          if (pub.topic == "blue") {
         if (pub.message == "on") {digitalWrite(2,0);}
         if (pub.message == "off") {digitalWrite(2,1);}
        }   
      });
    
    function onInit() {
      console.log("In onInit");
      wifi.connect("xxxx", {password:"xxxx"}, function(err){
    console.log("connected? err=", err, "info=", wifi.getIP());
    });
    wifi.stopAP(); 
    mqtt.connect(); 
    }
    
  • Update: I found how to go back to a previous version from github (instructions at https://www.espruino.com/Modules). With the previous version of the MQTT module, I have no problems.

  • Hi Dan,

    Thanks - I'll look into it. I merged on some contributed changes which could have caused problems.

  • Wow, that's horrible. Looks like the Closure compiler that I use for minification has started adding labels and breaks to labels into minified code - which meant that the unminified file worked fine, but the minified version didn't.

    It should be fixed now.

  • Actually hang on a bit. Looks like the recent contributed fixes broke the module (so it strips the first 2 chars off the message), so I'll have to roll back some of them

  • Ok, try now :/

  • Hi Gordon,

    Works! Thanks so much. BTW, I've been working with microcontrollers for 40 years (starting with the 6502, assembly, and FORTH); and I have to tell you, Espruino on the ESP8266 is the best thing I've ever worked with in this realm. Espruino is an awesome system! Thank you for developing it.
    Dan

  • Thanks! :)

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

MQTT module stopped working with latest update

Posted by Avatar for DanB @DanB

Actions