Corregge mapping QPGS per PV e scarica batteria
This commit is contained in:
@@ -483,10 +483,12 @@ for idx in "${!VALID_SERIALS[@]}"; do
|
|||||||
# Parse QPGS response
|
# Parse QPGS response
|
||||||
IFS=' ' read -ra DATA <<< "$QPGS_RAW"
|
IFS=' ' read -ra DATA <<< "$QPGS_RAW"
|
||||||
|
|
||||||
# Field mapping (verified from test output):
|
# Field mapping per protocol (QPGSn):
|
||||||
# 0=Exists, 1=Serial, 2=Mode, 3=Status, 4=GridV, 5=GridF, 6=OutV, 7=OutF
|
# 0=Exists, 1=Serial, 2=Mode, 3=Fault, 4=GridV, 5=GridF, 6=OutV, 7=OutF
|
||||||
# 8=VA, 9=W, 10=PCT, 11=BattV, 12=ChgA, 13=Cap, 14=PVV, 15=PVA
|
# 8=OutVA, 9=OutW, 10=LoadPct, 11=BattV, 12=BattChgA, 13=BattCap
|
||||||
# 16=?, 17=?, 18=?, 19-26=additional fields
|
# 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
|
# Prefer serial from QPGS payload if valid
|
||||||
serial_from_data="${DATA[1]}"
|
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[12]}" ] && pushMQTTData "$inv_id" "Battery_charge_current" "${DATA[12]}"
|
||||||
[ "${DATA[13]}" ] && pushMQTTData "$inv_id" "Battery_capacity" "${DATA[13]}"
|
[ "${DATA[13]}" ] && pushMQTTData "$inv_id" "Battery_capacity" "${DATA[13]}"
|
||||||
[ "${DATA[14]}" ] && pushMQTTData "$inv_id" "PV_in_voltage" "${DATA[14]}"
|
[ "${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)
|
# Calculate PV watts (V * A)
|
||||||
if [ ! -z "${DATA[14]}" ] && [ ! -z "${DATA[15]}" ]; then
|
if [ ! -z "${DATA[14]}" ] && [ ! -z "${DATA[25]}" ]; then
|
||||||
PV_WATTS=`echo "${DATA[14]} ${DATA[15]}" | awk '{printf "%.1f", $1 * $2}'`
|
PV_WATTS=`echo "${DATA[14]} ${DATA[25]}" | awk '{printf "%.1f", $1 * $2}'`
|
||||||
pushMQTTData "$inv_id" "PV_in_watts" "$PV_WATTS"
|
pushMQTTData "$inv_id" "PV_in_watts" "$PV_WATTS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ "${DATA[26]}" ] && pushMQTTData "$inv_id" "Battery_discharge_current" "${DATA[26]}"
|
||||||
|
|
||||||
# Status flags (parse from field 18 bitmap if available)
|
# Status flags (parse from field 18 bitmap if available)
|
||||||
[ "${DATA[18]}" ] && {
|
[ "${DATA[18]}" ] && {
|
||||||
|
|||||||
Reference in New Issue
Block a user