fix: Pulizia topic legacy e discovery retention
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 7m31s
Docker Image Cleanup / cleanup-old-images (push) Failing after 3m16s

- Rimosso vecchio topic homeassistant/sensor/voltronic/config all'avvio
- Aggiunto flag -r (retain) a tutti i discovery topics
- MQTT init eseguito immediatamente all'avvio + ogni 5 minuti
- Aggiunto unique_id e device info a tutti i sensori per HA
- mqtt-subscriber ora ascolta su 3 topic:
  - homeassistant/sensor/voltronic/command (legacy)
  - homeassistant/sensor/voltronic_inv1_raw_cmd/command
  - homeassistant/sensor/voltronic_inv2_raw_cmd/command
- Subscriber con output verbose e timestamp
- Discovery topics ora persistono dopo restart broker MQTT

Timing verificato:
- Init all'avvio: immediato
- Re-init periodico: ogni 5 minuti (300s)
- Data push: ogni 30 secondi
This commit is contained in:
Pi Developer
2026-02-03 00:51:37 +01:00
parent 168ee6d12a
commit 61567e3326
3 changed files with 70 additions and 12 deletions
+20 -2
View File
@@ -246,14 +246,32 @@ sleep 2
MQTT_PUSH_SCRIPT="/opt/inverter-mqtt/mqtt-push-parallel.sh"
MQTT_INIT_SCRIPT="/opt/inverter-mqtt/mqtt-init-parallel.sh"
# Init the mqtt server for the first time, then every 5 minutes (300 seconds)
# Remove old single-inverter discovery topics (legacy cleanup)
echo "Cleaning up legacy MQTT topics..."
MQTT_SERVER=$(jq -r '.server' /etc/inverter/mqtt.json)
MQTT_PORT=$(jq -r '.port' /etc/inverter/mqtt.json)
MQTT_USERNAME=$(jq -r '.username' /etc/inverter/mqtt.json)
MQTT_PASSWORD=$(jq -r '.password' /etc/inverter/mqtt.json)
MQTT_DEVICENAME=$(jq -r '.devicename' /etc/inverter/mqtt.json)
mosquitto_pub -h $MQTT_SERVER -p $MQTT_PORT -u "$MQTT_USERNAME" -P "$MQTT_PASSWORD" \
-t "$MQTT_TOPIC/sensor/$MQTT_DEVICENAME/config" -n -r > /dev/null 2>&1
echo "✓ Legacy topics cleaned"
# Run MQTT initialization immediately on startup
echo "Initializing MQTT discovery topics for both inverters..."
"$MQTT_INIT_SCRIPT"
echo "✓ MQTT discovery topics initialized"
# Init the mqtt server every 5 minutes (300 seconds)
# This will re-create the auto-created topics in the MQTT server if HA is restarted...
echo "Starting MQTT initialization service (every 5 minutes)..."
watch -n 300 "$MQTT_INIT_SCRIPT" > /dev/null 2>&1 &
# Run the MQTT Subscriber process in the background (so that way we can change the configuration on the inverter from home assistant)
echo "Starting MQTT subscriber for commands..."
/opt/inverter-mqtt/mqtt-subscriber.sh &
/opt/inverter-mqtt/mqtt-subscriber.sh > /dev/null 2>&1 &
# execute exactly every 30 seconds...
echo "Starting MQTT data push service (every 30 seconds)..."