Most recent activity
-
c stands for clean session apparently.
c0: This indicates the clean session status. "c0" means that the clean session is set to false. When a client connects with a clean session set to true (c1), it means the broker should not store any subscriptions or undelivered messages for the client when it disconnects. With clean session set to false (c0), the broker will store subscriptions and undelivered messages for the client.
p stand for QoS. So p2 would be QoS level 2.
Take it with a pinch of salt until I've verified this as it's a quick ChatGPT search
-
After a little more digging, I noticed I was sending defaults to MQTT and nothing to tinyMQTT.
wifi.dbg()
throws unhandled exceptiontinyMQTT:
mqtt = require("tinyMQTT").create(server); mosquitto logs: 1709312245: New client connected from 192.168.1.100:15450 as 29004900-0c513532-39333638 (p2, c0, k65535). K = keep_alive
MQTT:
mqtt = require("MQTT").create(server, options); // tried different defaults in the options obj, nothing matters mosquitto logs: 1709312100: New connection from 192.168.1.100:44568 on port 8883. 1709312100: New client connected from 192.168.1.100:44568 as random (p2, c1, k10).
Summary:
tinyMQTT :
Mosquitto says connected - YES
Espruino says connected - YES
Receive messages - YESMQTT
Mosquitto says connected - YES
Espruino says connected - NO (Connection Error)
Receive messages - NO3rd part Android app
Mosquitto says connected - YES
Can publish messages - YESAll using same server and port number
-
I am using my Espruino Wifi updated to 2v21. I have a strange problem, although I have used the MQTT library before without any problems, it seem to error for me now. I am able to connect and use tinyMQTT but I want to use QoS > 0 which is only available in MQTT.
I am running mosquitto in a container on my raspberrypi. If I try to connect using the MQTT library I get the following output:
Log from the mosquitto container:
1708970867: New connection from 192.168.1.100:44538 on port 8883.
1708970867: New client connected from 192.168.1.100:44538 as 29004900-0c513532-39333638 (p2, c1, k60, u'username').Log from Espruino IDE:
Connection refused, unknown return code: NaN.Here is the code for the MQTT example:
const WIFI_NAME = "BT-redacted"; const WIFI_OPTIONS = { password : "redacted" }; const wifi = require("Wifi"); let mqtt; const server = "192.168.1.77"; // the ip of your MQTT broker const options = { client_id: getSerial(), keep_alive: 60, port: 8883, clean_session: true, username: "username", password: "password", protocol_name: "MQTT", protocol_level: 4, }; const onInit = () => { connect(); }; const connect = () => { console.log("wifi connecting..."); wifi.connect(WIFI_NAME, WIFI_OPTIONS, (err) => { if (err) { console.log("wifi error", err); return; } console.log("wifi connected"); connectMQTT(); }); }; const connectMQTT = () => { console.log("connecting to mqtt"); mqtt = require("MQTT").create(server, options); mqtt.on("connected", () => { console.log("mqtt connected"); mqtt.subscribe("espruino/rgb"); mqtt.subscribe("espruino/speed"); }); mqtt.on("publish", (pub) => { console.log(pub.topic, pub.message); }); mqtt.on("error", (err) => console.log("error", err)); mqtt.connect(); };
Full output in Espruino IDE
____ _ | __|___ ___ ___ _ _|_|___ ___ | __|_ -| . | _| | | | | . | |____|___| _|_| |___|_|_|_|___| |_| espruino.com 2v21 (c) 2023 G.Williams > >onInit() wifi connecting... =undefined wifi connected connecting to mqtt error Connection refused, unknown return code: NaN. >
What could be different about MQTT v tinyMQTT for me now?
-
- 6 comments
- 194 views
-
Good news @allObjects I was able to connect this to via macOs and flash latest firmware, now this recognises perfect on Windows.
-
Hi @allObjects and @Gordon thank you for your time with this, I got the notification for updating to 2v20 in the Espruino web ide this morning, and now the Wifi module is connecting as expected again!
Ahh good shout, seem I can use the standard MQTT library even if there's an error. So now instead of waiting for a successful connection (which never comes) I just run my subscribes in the on error handler instead.
Doesn't matter that I receive an error NaN, everything works as expected afterwards. Thanks for supporting me on this Gordon its good enough for a home automation project I'm working on. Looking forward to getting the next Espruino you put out in the future.