61567e3326
- 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
40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
MQTT_SERVER=`cat /etc/inverter/mqtt.json | jq '.server' -r`
|
|
MQTT_PORT=`cat /etc/inverter/mqtt.json | jq '.port' -r`
|
|
MQTT_TOPIC=`cat /etc/inverter/mqtt.json | jq '.topic' -r`
|
|
MQTT_DEVICENAME=`cat /etc/inverter/mqtt.json | jq '.devicename' -r`
|
|
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`
|
|
|
|
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)"
|
|
|
|
# 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
|