From 5fc8958ae10be28593a9eb0a303ec5ba9433486d Mon Sep 17 00:00:00 2001 From: Pi Developer Date: Wed, 11 Feb 2026 19:41:59 +0100 Subject: [PATCH] Corregge mapping QPGS per PV e scarica batteria --- sources/inverter-mqtt/mqtt-push-parallel.sh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/sources/inverter-mqtt/mqtt-push-parallel.sh b/sources/inverter-mqtt/mqtt-push-parallel.sh index a0fc4fe..16a14c9 100755 --- a/sources/inverter-mqtt/mqtt-push-parallel.sh +++ b/sources/inverter-mqtt/mqtt-push-parallel.sh @@ -483,10 +483,12 @@ for idx in "${!VALID_SERIALS[@]}"; do # Parse QPGS response IFS=' ' read -ra DATA <<< "$QPGS_RAW" - # Field mapping (verified from test output): - # 0=Exists, 1=Serial, 2=Mode, 3=Status, 4=GridV, 5=GridF, 6=OutV, 7=OutF - # 8=VA, 9=W, 10=PCT, 11=BattV, 12=ChgA, 13=Cap, 14=PVV, 15=PVA - # 16=?, 17=?, 18=?, 19-26=additional fields + # Field mapping per protocol (QPGSn): + # 0=Exists, 1=Serial, 2=Mode, 3=Fault, 4=GridV, 5=GridF, 6=OutV, 7=OutF + # 8=OutVA, 9=OutW, 10=LoadPct, 11=BattV, 12=BattChgA, 13=BattCap + # 14=PVV, 15=TotalChgA, 16=TotalOutVA, 17=TotalOutW, 18=TotalOutPct + # 19=StatusByte, 20=OutMode, 21=ChgSourcePriority, 22=MaxChgA + # 23=MaxChgRange, 24=MaxAcChgA, 25=PV_in_current, 26=Batt_discharge_current # Prefer serial from QPGS payload if valid serial_from_data="${DATA[1]}" @@ -510,13 +512,15 @@ for idx in "${!VALID_SERIALS[@]}"; do [ "${DATA[12]}" ] && pushMQTTData "$inv_id" "Battery_charge_current" "${DATA[12]}" [ "${DATA[13]}" ] && pushMQTTData "$inv_id" "Battery_capacity" "${DATA[13]}" [ "${DATA[14]}" ] && pushMQTTData "$inv_id" "PV_in_voltage" "${DATA[14]}" - [ "${DATA[15]}" ] && pushMQTTData "$inv_id" "PV_in_current" "${DATA[15]}" + [ "${DATA[25]}" ] && pushMQTTData "$inv_id" "PV_in_current" "${DATA[25]}" # Calculate PV watts (V * A) - if [ ! -z "${DATA[14]}" ] && [ ! -z "${DATA[15]}" ]; then - PV_WATTS=`echo "${DATA[14]} ${DATA[15]}" | awk '{printf "%.1f", $1 * $2}'` + if [ ! -z "${DATA[14]}" ] && [ ! -z "${DATA[25]}" ]; then + PV_WATTS=`echo "${DATA[14]} ${DATA[25]}" | awk '{printf "%.1f", $1 * $2}'` pushMQTTData "$inv_id" "PV_in_watts" "$PV_WATTS" fi + + [ "${DATA[26]}" ] && pushMQTTData "$inv_id" "Battery_discharge_current" "${DATA[26]}" # Status flags (parse from field 18 bitmap if available) [ "${DATA[18]}" ] && {