Skip to content
Snippets Groups Projects
Commit c0f84de7 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

A simple MQTT publisher (mimics mosquitto_pub kinda)

For use with jsexec
parent 4ff659c4
No related branches found
No related tags found
No related merge requests found
// A simple MQTT publisher, for use with jsexec
// Command-line options more or less mimic 'mosquitto_pub'
"use strict";
var mqtt = new MQTT;
var topic;
var msg;
var retain = false;
function usage()
{
print("options:");
print(" -h MQTT broker hostname or IP address, default: " + mqtt.broker_addr);
print(" -p MQTT TCP port number to use, default: " + mqtt.broker_port);
print(" -q QoS value to use, default: " + mqtt.publish_qos);
print(" -r Retain message");
print(" -t Topic to publish message to (required)");
print(" -m Message text to publish");
print(" -n send a null (zero length) message");
exit(0);
}
for(var i = 0; i < argc; ++i) {
var arg = argv[i];
while(arg[0] === '-')
arg = arg.substring(1);
switch(arg) {
case 'h':
mqtt.broker_addr = argv[++i];
break;
case 'm':
msg = argv[++i];
break;
case 'n':
msg = '';
break;
case 'p':
mqtt.broker_port = parseInt(argv[++i], 10);
break;
case 'q':
mqtt.publish_qos = parseInt(argv[++i], 10);
break;
case 'r':
retain = true;
break;
case 't':
topic = argv[++i];
break;
case 'v':
verbose = true;
break;
case '?':
case 'help':
usage();
default:
options[argv[i].slice(1)] = true;
break;
}
}
if(msg === undefined || !topic)
usage();
if(!mqtt.connect()) {
alert(format("Error (%s) connecting to %s:%u", mqtt.error_str, mqtt.broker_addr, mqtt.broker_port));
exit(1);
}
//prompt("hit enter");
if(!mqtt.publish(retain, topic, msg)) {
alert(format("Error (%s) publishing to %s", mqtt.error_str, topic));
exit(1);
}
//prompt("hit enter");
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment