20 lines
624 B
Bash
20 lines
624 B
Bash
#!/usr/bin/env bash
|
|
|
|
mqtt_common_args() {
|
|
MQTT_ARGS=(-h "$MQTT_HOST" -p "$MQTT_PORT")
|
|
[[ -n "$MQTT_USERNAME" ]] && MQTT_ARGS+=(-u "$MQTT_USERNAME")
|
|
if [[ -n "$MQTT_PASSWORD_FILE" ]]; then
|
|
[[ -r "$MQTT_PASSWORD_FILE" ]] || die "MQTT password file is not readable: $MQTT_PASSWORD_FILE"
|
|
MQTT_ARGS+=(-P "$(<"$MQTT_PASSWORD_FILE")")
|
|
fi
|
|
}
|
|
|
|
mqtt_publish() {
|
|
local topic="$1" payload="$2" retain="${3:-0}"
|
|
[[ -n "$MQTT_HOST" ]] || die "MQTT_HOST is not configured"
|
|
require_command mosquitto_pub
|
|
mqtt_common_args
|
|
(( retain )) && MQTT_ARGS+=(-r)
|
|
mosquitto_pub "${MQTT_ARGS[@]}" -t "$topic" -m "$payload"
|
|
}
|