From 0b565ed3501044b6e8e7837cba50bb2d6f9a99c6 Mon Sep 17 00:00:00 2001 From: Kostas Chatzikokolakis Date: Wed, 6 May 2026 08:50:49 +0300 Subject: [PATCH] Keep mqtt connection open, avoid 0s on start --- docker/mqtt.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/docker/mqtt.sh b/docker/mqtt.sh index 7213dc5..720366d 100644 --- a/docker/mqtt.sh +++ b/docker/mqtt.sh @@ -109,15 +109,19 @@ for entity in $CLEANUP_ENTITIES; do -t "$DISCOVERY_TOPIC" -n -r done -# Periodic state updates +# mosquitto_pub -l keeps the connection open and publishes each line of input, outer loop +# reconnects on drop, use keep-alive larger than MQTT_PAUSE to avoid needless pings. while true; do - # Replace this with your real data source - ORB_OUTPUT="$(/app/orb summary || echo '{}')" - #echo "ORB_OUTPUT: $ORB_OUTPUT" + while true; do + # sleep first to avoid publishing zeroes on first iteration + sleep "$MQTT_PAUSE" - # Publish Orb Summary to MQTT - mosquitto_pub -h "$MQTT_HOST" -p "$MQTT_PORT" -u "$MQTT_USER" -P "$MQTT_PASS" \ - -t "$STATE_TOPIC" -m "$ORB_OUTPUT" -r + # output a single line to mosquitto_pub + (/app/orb summary || echo '{}') | jq -c . + + done | mosquitto_pub -h "$MQTT_HOST" -p "$MQTT_PORT" -u "$MQTT_USER" -P "$MQTT_PASS" \ + -t "$STATE_TOPIC" -l -r -k $((MQTT_PAUSE * 2)) - sleep "$MQTT_PAUSE" + echo "mosquitto_pub disconnected, reconnecting..." done +