Just as a follow up I am testing with a pico wifi, eMQ as the broker, I see random errors with this code on the device:
var server = "ubuntu.home"; // the ip of your MQTT broker
var options = { // all optional - the defaults are below
client_id : getSerial(), // the client ID sent to MQTT - it's a good idea to define your own static one based on `getSerial()`
keep_alive: 60, // keep alive time in seconds
port: 1883, // port number
clean_session: true,
username: "stephen", // default is undefined
password: "*****", // default is undefined
protocol_name: "MQTT", // or MQIsdp, etc..
protocol_level: 4, // protocol level
};
var mqtt = require("MQTT").create(server, options /*optional*/);
mqtt.on('connected', function() {
mqtt.subscribe("test/espruino");
});
mqtt.on('publish', function (pub) {
console.log(JSON.stringify(pub));
console.log("topic: "+pub.topic);
console.log("message: "+pub.message);
});
var WIFI_NAME = "****";
var WIFI_OPTIONS = { password : "****" };
var wifi = require("EspruinoWiFi");
function getPage() {
require("http").get("http://www.pur3.co.uk/hello.txt", function(res) {
console.log("Response: ",res);
res.on('data', function(d) {
console.log("--->"+d);
mqtt.publish("test/espruino", d);
});
});
}
function makeid()
{
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
console.log('makeid: '+text);
return text;
}
function postIt()
{
var msg = "MSG: " + makeid();
mqtt.publish("test/espruino", msg);
}
wifi.connect(WIFI_NAME, WIFI_OPTIONS, function(err) {
if (err) {
console.log("Connection error: "+err);
return;
}
console.log("Connected!");
wifi.getIP(function (err, res) {
if (!err) {
console.log(res.ip);
mqtt.connect();
} else {
console.log(err);
}
});
getPage();
ts = setInterval(function() {postIt();}, 20000);
});
It seems to randomly add \xD0\x00 to the message.
Console.log
1v91 Copyright 2016 G.Williams
>
=undefined
Connected!
192.168.1.226
Client connected
Response: httpCRs {
"headers": {
"Date": "Tue, 04 Apr 2017 19:19:23 GMT",
"Server": "Apache/2.4.18 (Ubuntu)",
"Last-Modified": "Fri, 15 Nov 2013 15:42:26 GMT",
"ETag": "\"d-4eb390b887c80\"",
"Accept-Ranges": "bytes",
"Content-Length": "13",
"Connection": "close",
"Content-Type": "text/plain"
},
"httpVersion": "1.1",
"statusCode": "200",
"statusMessage": "OK"
}
--->Hello World!
MQTT connection accepted
{"topic":"test/espruino","message":"from server","dup":0,"qos":0,"retain":1}
topic: test/espruino
message: from server
makeid: gRQRa
undefined
Uncaught Error: Field or method "topic" does not already exist, and can't create it on undefined
at line 1 col 88
...lish",c),a.emit("message",c.topic,c.message);else if(d!==f.P...
^
in function called from system
at line 2 col 28
console.log("topic: "+pub.topic);
^
in function called from system
MQTT unsupported packet type: 0
[MQTT]0,13,116,101,115,116,47,101,115,112,114,117,105,110,111,77,83,71,58,32,103,82,81,82,97
makeid: sJZwi
{"topic":"test/espruino","message":"MSG: sJZwi\xD0\x00","dup":0,"qos":0,"retain":0}
topic: test/espruino
message: MSG: sJZwiÐ
makeid: kL0LJ
{"topic":"test","message":"","dup":0,"qos":0,"retain":0}
topic: test
message:
Uncaught Error: Unknown Timeout
at line 2 col 149
...ACK)if(clearTimeout(a.ctimo),c=c.charCodeAt(3),0===c)a.conne...
^
in function called from system
makeid: GJTbH
{"topic":"test/espruino","message":"MSG: GJTbH\xD0\x00","dup":0,"qos":0,"retain":0}
topic: test/espruino
message: MSG: GJTbHÐ
makeid: pUTU1
undefined
Uncaught Error: Field or method "topic" does not already exist, and can't create it on undefined
at line 1 col 88
...lish",c),a.emit("message",c.topic,c.message);else if(d!==f.P...
^
in function called from system
at line 2 col 28
console.log("topic: "+pub.topic);
^
in function called from system
MQTT unsupported packet type: 6
[MQTT]101,115,116,47,101,115,112,114,117,105,110,111,77,83,71,58,32,112,85,84,85,49
makeid: 6QAbL
{"topic":"test/espruino","message":"MSG: 6QAbL\xD0\x00","dup":0,"qos":0,"retain":0}
topic: test/espruino
message: MSG: 6QAbLÐ
makeid: demXD
{"topic":"tes","message":"","dup":0,"qos":0,"retain":0}
topic: tes
message:
MQTT unsupported packet type: 7
[MQTT]116,47,101,115,112,114,117,105,110,111,77,83,71,58,32,100,101,109,88,68
>
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Just as a follow up I am testing with a pico wifi, eMQ as the broker, I see random errors with this code on the device:
It seems to randomly add \xD0\x00 to the message.
Console.log