Add QoS to MQTT options (closes #1769)
This commit is contained in:
parent
c48fe1d2dc
commit
e3ec350287
6 changed files with 11 additions and 8 deletions
|
@ -361,7 +361,7 @@ E.g. -X "n=doorbell,m=OOK_PWM,s=400,l=800,r=7000,g=1000,match={24}0xa9878c,repea
|
|||
Append output to file with :<filename> (e.g. -F csv:log.csv), defaults to stdout.
|
||||
Specify MQTT server with e.g. -F mqtt://localhost:1883
|
||||
Add MQTT options with e.g. -F "mqtt://host:1883,opt=arg"
|
||||
MQTT options are: user=foo, pass=bar, retain[=0|1], <format>[=topic]
|
||||
MQTT options are: user=foo, pass=bar, retain[=0|1], qos=N, <format>[=topic]
|
||||
Supported MQTT formats: (default is all)
|
||||
events: posts JSON event data
|
||||
states: posts JSON state data
|
||||
|
|
|
@ -185,7 +185,7 @@ signal_grabber none
|
|||
# Append output to file with :<filename> (e.g. -F csv:log.csv), defaults to stdout.
|
||||
# Specify MQTT server with e.g. -F mqtt://localhost:1883
|
||||
# Add MQTT options with e.g. -F "mqtt://host:1883,opt=arg"
|
||||
# MQTT options are: user=foo, pass=bar, retain[=0|1], <format>[=topic]
|
||||
# MQTT options are: user=foo, pass=bar, retain[=0|1], qos=N, <format>[=topic]
|
||||
# Supported MQTT formats: (default is all)
|
||||
# events: posts JSON event data
|
||||
# states: posts JSON state data
|
||||
|
|
|
@ -439,7 +439,7 @@ Use `-F mqtt` to add an output in MQTT format.
|
|||
Specify MQTT server with e.g. `-F mqtt://localhost:1883`.
|
||||
|
||||
Add MQTT options with e.g. `-F "mqtt://host:1883,opt=arg"`.
|
||||
Supported MQTT options are: `user=foo`, `pass=bar`, `retain[=0|1]`, `<format>[=<topic>]`.
|
||||
Supported MQTT options are: `user=foo`, `pass=bar`, `retain[=0|1]`, `qos=N`, `<format>[=<topic>]`.
|
||||
|
||||
Supported MQTT formats: (default is all formats)
|
||||
- `events`: posts JSON event data
|
||||
|
|
|
@ -327,7 +327,7 @@ Specify MQTT server with e.g. \-F mqtt://localhost:1883
|
|||
Add MQTT options with e.g. \-F "mqtt://host:1883,opt=arg"
|
||||
.RE
|
||||
.RS
|
||||
MQTT options are: user=foo, pass=bar, retain[=0|1], <format>[=topic]
|
||||
MQTT options are: user=foo, pass=bar, retain[=0|1], qos=N, <format>[=topic]
|
||||
.RE
|
||||
.RS
|
||||
Supported MQTT formats: (default is all)
|
||||
|
|
|
@ -101,7 +101,7 @@ static void mqtt_client_event(struct mg_connection *nc, int ev, void *ev_data)
|
|||
}
|
||||
}
|
||||
|
||||
static mqtt_client_t *mqtt_client_init(struct mg_mgr *mgr, tls_opts_t *tls_opts, char const *host, char const *port, char const *user, char const *pass, char const *client_id, int retain)
|
||||
static mqtt_client_t *mqtt_client_init(struct mg_mgr *mgr, tls_opts_t *tls_opts, char const *host, char const *port, char const *user, char const *pass, char const *client_id, int retain, int qos)
|
||||
{
|
||||
mqtt_client_t *ctx = calloc(1, sizeof(*ctx));
|
||||
if (!ctx)
|
||||
|
@ -109,7 +109,7 @@ static mqtt_client_t *mqtt_client_init(struct mg_mgr *mgr, tls_opts_t *tls_opts,
|
|||
|
||||
ctx->mqtt_opts.user_name = user;
|
||||
ctx->mqtt_opts.password = pass;
|
||||
ctx->publish_flags = MG_MQTT_QOS(0) | (retain ? MG_MQTT_RETAIN : 0);
|
||||
ctx->publish_flags = MG_MQTT_QOS(qos) | (retain ? MG_MQTT_RETAIN : 0);
|
||||
// TODO: these should be user configurable options
|
||||
//ctx->opts.keepalive = 60;
|
||||
//ctx->timeout = 10000L;
|
||||
|
@ -499,6 +499,7 @@ struct data_output *data_output_mqtt_create(struct mg_mgr *mgr, char *param, cha
|
|||
char *user = NULL;
|
||||
char *pass = NULL;
|
||||
int retain = 0;
|
||||
int qos = 0;
|
||||
|
||||
// parse host and port
|
||||
tls_opts_t tls_opts = {0};
|
||||
|
@ -524,6 +525,8 @@ struct data_output *data_output_mqtt_create(struct mg_mgr *mgr, char *param, cha
|
|||
pass = val;
|
||||
else if (!strcasecmp(key, "r") || !strcasecmp(key, "retain"))
|
||||
retain = atobv(val, 1);
|
||||
else if (!strcasecmp(key, "q") || !strcasecmp(key, "qos"))
|
||||
qos = atoiv(val, 1);
|
||||
// Simple key-topic mapping
|
||||
else if (!strcasecmp(key, "d") || !strcasecmp(key, "devices"))
|
||||
mqtt->devices = mqtt_topic_default(val, base_topic, path_devices);
|
||||
|
@ -577,7 +580,7 @@ struct data_output *data_output_mqtt_create(struct mg_mgr *mgr, char *param, cha
|
|||
mqtt->output.print_int = print_mqtt_int;
|
||||
mqtt->output.output_free = data_output_mqtt_free;
|
||||
|
||||
mqtt->mqc = mqtt_client_init(mgr, &tls_opts, host, port, user, pass, client_id, retain);
|
||||
mqtt->mqc = mqtt_client_init(mgr, &tls_opts, host, port, user, pass, client_id, retain, qos);
|
||||
|
||||
return &mqtt->output;
|
||||
}
|
||||
|
|
|
@ -216,7 +216,7 @@ static void help_output(void)
|
|||
"\tAppend output to file with :<filename> (e.g. -F csv:log.csv), defaults to stdout.\n"
|
||||
"\tSpecify MQTT server with e.g. -F mqtt://localhost:1883\n"
|
||||
"\tAdd MQTT options with e.g. -F \"mqtt://host:1883,opt=arg\"\n"
|
||||
"\tMQTT options are: user=foo, pass=bar, retain[=0|1], <format>[=topic]\n"
|
||||
"\tMQTT options are: user=foo, pass=bar, retain[=0|1], qos=N, <format>[=topic]\n"
|
||||
"\tSupported MQTT formats: (default is all)\n"
|
||||
"\t events: posts JSON event data\n"
|
||||
"\t states: posts JSON state data\n"
|
||||
|
|
Loading…
Add table
Reference in a new issue