feat: Ottimizzazione performance e gestione credenziali MQTT
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 6m49s
Build Docker Image for Raspberry Pi / build-and-push (push) Successful in 6m49s
- Rimosso credenziali hardcoded da mqtt.json (devono essere fornite solo da ENV) - Ottimizzato mqtt-push.sh: caricamento config MQTT una sola volta all'avvio - Ridotto I/O con redirect stderr su /dev/null - Fix errore sed con device path contenente slash - Aggiunto controllo esecuzione update_mqtt_config solo se ENV impostate - Ridotto consumo CPU da 25% a ~0-2% Nuovo: - Documentazione multi-inverter completa (MULTI_INVERTER.md) - Aggiornato README con sezione performance e multi-inverter - Aggiunto .gitignore per file cache/backup runtime Fixes: - Bug sed delimiter con device path /dev/ttyUSB* - Letture ripetute mqtt.json con jq (30+ per ciclo) - Credenziali non aggiornate da ENV se mqtt.json esiste
This commit is contained in:
@@ -68,10 +68,17 @@ echo ""
|
||||
# Function to update MQTT configuration
|
||||
update_mqtt_config() {
|
||||
local mqtt_conf="/etc/inverter/mqtt.json"
|
||||
|
||||
# Solo aggiorna se le ENV variables sono impostate
|
||||
if [ -z "$MQTT_USERNAME" ] && [ -z "$MQTT_PASSWORD" ]; then
|
||||
echo "ℹ MQTT credentials not provided via ENV, using values from mqtt.json"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "Updating MQTT configuration from environment variables..."
|
||||
|
||||
# Backup original
|
||||
cp $mqtt_conf ${mqtt_conf}.backup
|
||||
cp $mqtt_conf ${mqtt_conf}.backup 2>/dev/null || true
|
||||
|
||||
# Update MQTT settings using jq
|
||||
jq --arg server "$MQTT_SERVER" \
|
||||
@@ -87,6 +94,13 @@ update_mqtt_config() {
|
||||
echo " Server: $MQTT_SERVER:$MQTT_PORT"
|
||||
echo " Topic: $MQTT_TOPIC/sensor/$MQTT_DEVICENAME"
|
||||
[ ! -z "$MQTT_USERNAME" ] && echo " Auth: Enabled (username: $MQTT_USERNAME)"
|
||||
|
||||
# Verifica che le credenziali siano state scritte
|
||||
local check_user=$(jq -r '.username' $mqtt_conf)
|
||||
local check_pass=$(jq -r '.password' $mqtt_conf)
|
||||
if [ -z "$check_user" ] || [ -z "$check_pass" ]; then
|
||||
echo "⚠ WARNING: MQTT credentials were not properly written to config file!"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
@@ -202,7 +216,7 @@ else
|
||||
if [[ $line =~ ^(device|qmod|qpigs|qpiri|qpiws)= ]]; then
|
||||
key=$(echo "$line" | cut -d= -f1)
|
||||
value=$(echo "$line" | cut -d= -f2)
|
||||
sed -i "s/^$key=.*/$key=$value/g" $CONF_FILE
|
||||
sed -i "s|^$key=.*|$key=$value|g" $CONF_FILE
|
||||
fi
|
||||
done < "$DISCOVERY_FLAG"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user