fix: Pulizia topic legacy e discovery retention
- 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:
@@ -8,10 +8,32 @@ MQTT_USERNAME=`cat /etc/inverter/mqtt.json | jq '.username' -r`
|
||||
MQTT_PASSWORD=`cat /etc/inverter/mqtt.json | jq '.password' -r`
|
||||
MQTT_CLIENTID=`cat /etc/inverter/mqtt.json | jq '.clientid' -r`
|
||||
|
||||
while read rawcmd;
|
||||
do
|
||||
echo "MQTT Subscriber started for parallel inverters"
|
||||
echo "Listening on topics:"
|
||||
echo " - $MQTT_TOPIC/sensor/${MQTT_DEVICENAME}/command (legacy single inverter)"
|
||||
echo " - $MQTT_TOPIC/sensor/${MQTT_DEVICENAME}_inv1_raw_cmd/command (inverter #1)"
|
||||
echo " - $MQTT_TOPIC/sensor/${MQTT_DEVICENAME}_inv2_raw_cmd/command (inverter #2)"
|
||||
|
||||
echo "Incoming request send: [$rawcmd] to inverter."
|
||||
/opt/inverter-cli/bin/inverter_poller -r $rawcmd;
|
||||
|
||||
done < <(mosquitto_sub -h $MQTT_SERVER -p $MQTT_PORT -u "$MQTT_USERNAME" -P "$MQTT_PASSWORD" -i $MQTT_CLIENTID -t "$MQTT_TOPIC/sensor/$MQTT_DEVICENAME" -q 1)
|
||||
# Subscribe to all command topics (legacy + parallel)
|
||||
mosquitto_sub \
|
||||
-h $MQTT_SERVER \
|
||||
-p $MQTT_PORT \
|
||||
-u "$MQTT_USERNAME" \
|
||||
-P "$MQTT_PASSWORD" \
|
||||
-i $MQTT_CLIENTID \
|
||||
-t "$MQTT_TOPIC/sensor/$MQTT_DEVICENAME/command" \
|
||||
-t "$MQTT_TOPIC/sensor/${MQTT_DEVICENAME}_inv1_raw_cmd/command" \
|
||||
-t "$MQTT_TOPIC/sensor/${MQTT_DEVICENAME}_inv2_raw_cmd/command" \
|
||||
-q 1 | while read -r topic_and_payload; do
|
||||
|
||||
# mosquitto_sub with -v outputs "topic payload"
|
||||
# Extract topic and payload
|
||||
topic=$(echo "$topic_and_payload" | cut -d' ' -f1)
|
||||
rawcmd=$(echo "$topic_and_payload" | cut -d' ' -f2-)
|
||||
|
||||
echo "[$(date)] Incoming command from $topic: [$rawcmd]"
|
||||
|
||||
# Execute command on inverter
|
||||
/opt/inverter-cli/bin/inverter_poller -r "$rawcmd"
|
||||
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user