#!/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