#!/bin/bash P1_STATUS=`mosquitto_sub -t domoctopus/p1/status -C 1` SB15_LEFT_IP='sb15links.sma.snel.it' SB15_RIGHT_IP='sb15rechts.sma.snel.it' SB40_IP='sb40.sma.snel.it' SI60_IP='si60.sma.snel.it' MAX_AMP=25 TIME=`date "+%s"` SB40_POWER=`mbpoll $SB40_IP -a 3 -B -0 -r 30775 -q -1 -c 1 -t 3:int | grep -e 30775 | cut -f 2` if [ "$SB40_POWER" -eq "-2147483648" ]; then SB40_POWER=0 fi L2_SOLAR=$SB40_POWER SB15LEFT_POWER=`mbpoll $SB15_LEFT_IP -a 3 -B -0 -r 30775 -q -1 -c 1 -t 3:int | grep -e 30775 | cut -f 2` if [ "$SB15LEFT_POWER" -eq "-2147483648" ]; then SB15LEFT_POWER=0 fi L1_SOLAR=$SB15LEFT_POWER SB15RIGHT_POWER=`mbpoll $SB15_RIGHT_IP -a 3 -B -0 -r 30775 -q -1 -c 1 -t 3:int | grep -e 30775 | cut -f 2` if [ "$SB15RIGHT_POWER" -eq "-2147483648" ]; then SB15RIGHT_POWER=0 fi L3_SOLAR=$SB15RIGHT_POWER #function modbus_read() { # mbpoll $SI60_IP -a 3 -B -0 -r $1 -q -1 -c 1 -t 3:int | grep -e $1 | cut -f 2 #} #function modbus_read_fix() { # TMP=`modbus_read $1` # echo "scale=$2; $TMP/10^$2" | bc #} . ./db.credentials #COMMAND=`./readcommand.sh` COMMAND=`mariadb -B --skip-column-names --user=$USERNAME --password=$PASSWORD stroom << EOQ SELECT IFNULL(GROUP_CONCAT(commands.command), 'IDLE') FROM commands AS next_commands JOIN commands ON next_commands.prev_command_id = commands.command_id WHERE commands.command_start <= $TIME AND next_commands.command_start > $TIME EOQ` ORIG_COMMAND=$COMMAND PRICE=`mariadb -B --skip-column-names --user=$USERNAME --password=$PASSWORD stroom << EOQ SELECT ROUND(1000*ROUND((100+btw_percent)*(epex_price+fee_per_kwh+tax_per_kwh), 3), 0) FROM epex JOIN ( SELECT tax.tax_per_kwh, tax.tax_start, next_tax.tax_start tax_end FROM tax JOIN tax AS next_tax ON next_tax.prev_tax_id = tax.tax_id ) AS ebal ON tax_start <= epex_start AND tax_end > epex_start JOIN ( SELECT fee.fee_per_kwh, fee.fee_start, next_fee.fee_start fee_end FROM fee JOIN fee AS next_fee ON next_fee.prev_fee_id = fee.fee_id ) AS efee ON fee_start <= epex_start AND fee_end > epex_start JOIN ( SELECT btw.btw_percent, btw.btw_start, next_btw.btw_start btw_end FROM btw JOIN btw AS next_btw ON next_btw.prev_btw_id = btw.btw_id ) AS ebtw ON btw_start <= epex_start AND btw_end > epex_start WHERE epex_start <= UNIX_TIMESTAMP() AND epex_start + 900 > UNIX_TIMESTAMP() EOQ ` PRICE_HUMAN=`echo "scale=3; $PRICE/1000" | bc` echo Price $PRICE_HUMAN ct/kWh if [ "$COMMAND" != "IDLE" -a "$COMMAND" != "CHARGE" -a "$COMMAND" != "DISCHARGE" -a "$COMMAND" != "ZERO" -a "$COMMAND" != "NODISC" -a "$COMMAND" != "NOCHRG" ]; then echo "command from DB is not recognized, should be IDLE, CHARGE, DISCHARGE, NODISC, NOCHRG or ZERO, but value from DB is $COMMAND" COMMAND="IDLE" fi if [ "$P1_STATUS" != "online" ]; then # no info from P1 # set machine to idle echo "P1 is down, set SI to IDLE" COMMAND="IDLE" fi echo "command" $COMMAND SI60_STATUS=`mosquitto_sub -t domoctopus/si60/status -C 1` #echo SI60 STATUS $SI60_STATUS SB40_STATUS=`mosquitto_sub -t domoctopus/sb40/status -C 1` #echo SB40 STATUS $SB40_STATUS SB15LEFT_STATUS=`mosquitto_sub -t domoctopus/sb15left/status -C 1` #echo SB15LEFT STATUS $SB15LEFT_STATUS SB15RIGHT_STATUS=`mosquitto_sub -t domoctopus/sb15right/status -C 1` #echo SB15RIGHT STATUS $SB15RIGHT_STATUS SMA_ENERGY_METER_STATUS=`mosquitto_sub -t domoctopus/emeter/status -C 1` #echo SMA EMETER STATUS $SMA_ENERGY_METER_STATUS #SMA_ENERGY_METER=`./sma-em01-production --oneshot` SMA_ENERGY_METER=`mosquitto_sub -t domoctopus/emeter/data -C 1` if [ "$?" = "1" -o "$SMA_ENERGY_METER_STATUS" != "online" ]; then echo error reading from SMA ENERGY METER, switch CHARGE and DISCHARGE to IDLE if [ "$COMMAND" = "DISCHARGE" -o "$COMMAND" = "CHARGE" ]; then COMMAND="IDLE" fi fi SI60=`mosquitto_sub -t domoctopus/si60/data -C 1` if [ "$?" = "1" -o "$SI60_STATUS" != "online" ]; then echo error reading from SI60, switch CHARGE and DISCHARGE to IDLE if [ "$COMMAND" = "DISCHARGE" -o "$COMMAND" = "CHARGE" ]; then COMMAND="IDLE" fi fi SB40=`mosquitto_sub -t domoctopus/sb40/data -C 1` if [ "$?" = "1" -o "$SB40_STATUS" != "online" ]; then echo error reading from SB40 fi SB15LEFT=`mosquitto_sub -t domoctopus/sb15left/data -C 1` if [ "$?" = "1" -o "$SB15LEFT_STATUS" != "online" ]; then echo error reading from SB15LINKS fi SB15RIGHT=`mosquitto_sub -t domoctopus/sb15right/data -C 1` if [ "$?" = "1" -o "$SB15RIGHT_STATUS" != "online" ]; then echo error reading from SB15RECHTS fi SI_OPERSTATUS=`echo $SI60 | jq -r .operation_opstt | cut -f 1 -d /` if [ "x$SI_OPERSTATUS" = "x" ]; then echo "unable to read Operating Status, device offline" exit fi L1_CURRENT=`echo $SMA_ENERGY_METER | jq .l1_current` L1_VOLTAGE=`echo $SMA_ENERGY_METER | jq .l1_voltage` L1_ACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l1_active_power_in | cut -f 1 -d .` L1_ACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l1_active_power_out | cut -f 1 -d .` L1_ACTIVE_POWER=$(($L1_ACTIVE_POWER_IN - $L1_ACTIVE_POWER_OUT)) L2_CURRENT=`echo $SMA_ENERGY_METER | jq .l2_current` L2_VOLTAGE=`echo $SMA_ENERGY_METER | jq .l2_voltage` L2_ACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l2_active_power_in | cut -f 1 -d .` L2_ACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l2_active_power_out | cut -f 1 -d .` L2_ACTIVE_POWER=$(($L2_ACTIVE_POWER_IN - $L2_ACTIVE_POWER_OUT)) L3_CURRENT=`echo $SMA_ENERGY_METER | jq .l3_current` L3_VOLTAGE=`echo $SMA_ENERGY_METER | jq .l3_voltage` L3_ACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l3_active_power_in | cut -f 1 -d .` L3_ACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l3_active_power_out | cut -f 1 -d .` L3_ACTIVE_POWER=$(($L3_ACTIVE_POWER_IN - $L3_ACTIVE_POWER_OUT)) TOTAL_APPARENT_POWER_IN=`echo $SMA_ENERGY_METER | jq .total_apparent_power_in` TOTAL_APPARENT_POWER_OUT=`echo $SMA_ENERGY_METER | jq .total_apparent_power_out` TOTAL_ACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .total_active_power_in | cut -f 1 -d .` TOTAL_ACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .total_active_power_out | cut -f 1 -d .` TOTAL_ACTIVE_POWER=$(($TOTAL_ACTIVE_POWER_IN-$TOTAL_ACTIVE_POWER_OUT)) TOTAL_APPARENT_POWER=`echo "scale=1; $TOTAL_APPARENT_POWER_IN - $TOTAL_APPARENT_POWER_OUT" | bc` echo L1 Grid to hub $L1_ACTIVE_POWER W / $L1_VOLTAGE V / $L1_CURRENT A echo L2 Grid to hub $L2_ACTIVE_POWER W / $L2_VOLTAGE V / $L2_CURRENT A echo L3 Grid to hub $L3_ACTIVE_POWER W / $L3_VOLTAGE V / $L3_CURRENT A echo Grid to hub $TOTAL_APPARENT_POWER VA / $TOTAL_ACTIVE_POWER W L1_REACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l1_reactive_power_in | cut -f 1 -d .` L1_REACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l1_reactive_power_out | cut -f 1 -d .` L1_REACTIVE_POWER=$(($L1_REACTIVE_POWER_IN - $L1_REACTIVE_POWER_OUT)) L1_APPARENT_POWER=`echo "scale=0; sqrt(($L1_ACTIVE_POWER)^2+($L1_REACTIVE_POWER)^2)" | bc` L1_MAX_APPARENT_POWER=`echo "scale=0; $L1_VOLTAGE*$MAX_AMP" | bc` L1_MAX_ACTIVE_POWER=`echo "scale=0; sqrt($L1_MAX_APPARENT_POWER^2 - ($L1_REACTIVE_POWER)^2)" | bc | cut -f 1 -d .` L2_REACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l2_reactive_power_in | cut -f 1 -d .` L2_REACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l2_reactive_power_out | cut -f 1 -d .` L2_REACTIVE_POWER=$(($L2_REACTIVE_POWER_IN - $L2_REACTIVE_POWER_OUT)) L2_APPARENT_POWER=`echo "scale=0; sqrt(($L2_ACTIVE_POWER)^2+($L2_REACTIVE_POWER)^2)" | bc` L2_MAX_APPARENT_POWER=`echo "scale=0; $L2_VOLTAGE*$MAX_AMP" | bc` L2_MAX_ACTIVE_POWER=`echo "scale=0; sqrt($L2_MAX_APPARENT_POWER^2 - ($L2_REACTIVE_POWER)^2)" | bc | cut -f 1 -d .` L3_REACTIVE_POWER_IN=`echo $SMA_ENERGY_METER | jq .l3_reactive_power_in | cut -f 1 -d .` L3_REACTIVE_POWER_OUT=`echo $SMA_ENERGY_METER | jq .l3_reactive_power_out | cut -f 1 -d .` L3_REACTIVE_POWER=$(($L3_REACTIVE_POWER_IN - $L3_REACTIVE_POWER_OUT)) L3_APPARENT_POWER=`echo "scale=0; sqrt(($L3_ACTIVE_POWER)^2+($L3_REACTIVE_POWER)^2)" | bc` L3_MAX_APPARENT_POWER=`echo "scale=0; $L3_VOLTAGE*$MAX_AMP" | bc` L3_MAX_ACTIVE_POWER=`echo "scale=0; sqrt($L3_MAX_APPARENT_POWER^2 - ($L3_REACTIVE_POWER)^2)" | bc | cut -f 1 -d .` L1_SI60_ACTIVE_POWER=`echo $SI60 | jq '."l1.power"'` L1_SI60_ACTIVE_POWER=$((-1*$L1_SI60_ACTIVE_POWER)) L2_SI60_ACTIVE_POWER=`echo $SI60 | jq '."l2.power"'` L2_SI60_ACTIVE_POWER=$((-1*$L2_SI60_ACTIVE_POWER)) L3_SI60_ACTIVE_POWER=`echo $SI60 | jq '."l3.power"'` L3_SI60_ACTIVE_POWER=$((-1*$L3_SI60_ACTIVE_POWER)) SOLAR_POWER=$(($SB40_POWER+$SB15LEFT_POWER+$SB15RIGHT_POWER)) # combine data from SI60 and Grid L1_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB=$(($L1_ACTIVE_POWER-$L1_SI60_ACTIVE_POWER)) L2_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB=$(($L2_ACTIVE_POWER-$L2_SI60_ACTIVE_POWER)) L3_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB=$(($L3_ACTIVE_POWER-$L3_SI60_ACTIVE_POWER)) #L1_LOADS_ACTIVE_POWER_FROM_HUB=$(($L1_ACTIVE_POWER-$L1_SI60_ACTIVE_POWER+$SOLAR_POWER)) #L1_LOADS_AND_BATTERY_ACTIVE_POWER_FROM_HUB=$(($L1_ACTIVE_POWER+$SOLAR_POWER)) #echo L1 loads active power from hub $L1_LOADS_ACTIVE_POWER_FROM_HUB #echo L1 loads and battery active power from hub $L1_LOADS_AND_BATTERY_ACTIVE_POWER_FROM_HUB # compute max charge active power and max discharge active power L1_SI60_MAX_ACTIVE_POWER_FROM_HUB=$(($L1_MAX_ACTIVE_POWER-$L1_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) L1_SI60_MAX_ACTIVE_POWER_TO_HUB=$(($L1_MAX_ACTIVE_POWER+$L1_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) # compute max charge active power and max discharge active power L2_SI60_MAX_ACTIVE_POWER_FROM_HUB=$(($L2_MAX_ACTIVE_POWER-$L2_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) L2_SI60_MAX_ACTIVE_POWER_TO_HUB=$(($L2_MAX_ACTIVE_POWER+$L2_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) # compute max charge active power and max discharge active power L3_SI60_MAX_ACTIVE_POWER_FROM_HUB=$(($L3_MAX_ACTIVE_POWER-$L3_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) L3_SI60_MAX_ACTIVE_POWER_TO_HUB=$(($L3_MAX_ACTIVE_POWER+$L3_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB)) MAX_CHARGE=$L1_SI60_MAX_ACTIVE_POWER_FROM_HUB MAX_DISCHARGE=$L1_SI60_MAX_ACTIVE_POWER_TO_HUB echo Max power through grid L1 $L1_MAX_ACTIVE_POWER W / L2 $L2_MAX_ACTIVE_POWER W / L3 $L3_MAX_ACTIVE_POWER W echo Loads and solar power from hub $L1_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB W / $L2_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB W / $L3_LOADS_AND_SOLAR_ACTIVE_POWER_FROM_HUB W echo Solar L1 $L1_SOLAR W / L2 $L2_SOLAR W / L3 $L3_SOLAR W / Total $SOLAR_POWER W echo L1 SI60 cur/min/max power from hub $L1_SI60_ACTIVE_POWER W / -$L1_SI60_MAX_ACTIVE_POWER_TO_HUB W / $L1_SI60_MAX_ACTIVE_POWER_FROM_HUB W echo L2 SI60 cur/min/max power from hub $L2_SI60_ACTIVE_POWER W / -$L2_SI60_MAX_ACTIVE_POWER_TO_HUB W / $L2_SI60_MAX_ACTIVE_POWER_FROM_HUB W echo L3 SI60 cur/min/max power from hub $L3_SI60_ACTIVE_POWER W / -$L3_SI60_MAX_ACTIVE_POWER_TO_HUB W / $L3_SI60_MAX_ACTIVE_POWER_FROM_HUB W SI_BATVOLT=`echo $SI60 | jq .battery_voltage` SI_BATCURR=`echo $SI60 | jq .battery_current` TOTALVOLT=$SI_BATVOLT #`echo "scale=2; $SI_BATVOLT/100" | bc` SI_BATVOLT=`echo "$TOTALVOLT*100" | bc | cut -f 1 -d .` VOLTPERCELL=`echo "scale=2; $SI_BATVOLT/1600" | bc` TOTALCURR=$SI_BATCURR #`echo "scale=3; $SI_BATCURR/1000" | bc` echo SI battery current/voltage $TOTALCURR A / $TOTALVOLT V \($VOLTPERCELL V\) AHIN=`echo $SI60 | jq .battery_chrg_in` AHOUT=`echo $SI60 | jq .battery_chrg_out` echo SI battery charge in/out $AHIN Ah / $AHOUT Ah L1_SI_POWER=`echo $SI60 | jq '."l1.power"'` #SI_POWER2=`echo $SI60 | jq '."l1.power"'` SI_POWER2=$L1_SI_POWER SI_CONDITION=`echo $SI60 | jq -r .operation_health | cut -f 1 -d /` SI_GRID_STATUS=`echo $SI60 | jq -r .grid_status | cut -f 1 -d /` case $SI_CONDITION in 35) echo SI Condition Fault ;; 303) echo SI Condition Off ;; 307) echo SI Condition OK ;; 455) echo SI Condition Warning ;; *) echo SI Condition $SI_CONDITION \(unknown code\) ;; esac case $SI_OPERSTATUS in 303) echo SI Operating Status OFF ;; 569) echo SI Operating Status Activated ;; 1295) echo SI Operating Status Standby ;; 1795) echo SI Operating Status Bolted ;; 16777213) echo SI Operating Status NaNStt ;; *) echo SI Operating Status $SI_OPERSTATUS \(unknown code\) ;; esac case $SI_GRID_STATUS in 35) echo SI Grid Status Fault \(Alm\) ;; 303) echo SI Grid Status Off ;; 1461) echo Mains connected ;; 1394) echo SI Grid Status Waiting for valid AC grid ;; 1787) echo SI Grid Status Initialization ;; 2183) echo SI Grid Status Mains oper. without feed back ;; 2184) echo SI Grid Status Energy saving in the network ;; 2185) echo SI Grid Status End energy saving in the network ;; 2186) echo SI Grid Status Start energy saving in the network ;; 1466) echo SI Grid Status Wait ;; 3068) echo SI Grid Status Mains operation with feedback ;; 16777213) echo SI Grid Status Information not available ;; *) echo SI Grid Status $SI_GRID_STATUS \(unknown code\) ;; esac #echo "SI power in" $SI_POWER_IN #echo "SI power out" $SI_POWER_OUT # negative means we are exporting power to the grid # positive means we are taking power from the grid #P1_POWER=$(($P1_POWER_IN - $P1_POWER_OUT)) # negative means we are exporting power to the grid # positive means we are taking power from the grid #SI_POWER=$(($SI_POWER_IN - $SI_POWER_OUT)) #SI_POWER=$(($L1_ACTIVE_POWER_IN - $L1_ACTIVE_POWER_OUT)) SI_POWER=$TOTAL_ACTIVE_POWER echo SI_POWER $SI_POWER SI_POWER2 $SI_POWER2 # positive is from grid, negative is to grid #echo "P1 power" $P1_POWER # positive is from SI, negative is to SI # SI60 has a max power of 4600W per phase L1_MAX_POWER=4600 L2_MAX_POWER=4600 L3_MAX_POWER=4600 MAX_POWER=4600 #MAX_POWER=13800 case $COMMAND in IDLE) SI_POWER_REQ=0 ;; CHARGE) if [ "$MAX_CHARGE" -le 0 ]; then echo "cant charge, no amps available at grid" COMMAND="IDLE" elif [ "-$MAX_POWER" -lt "-$MAX_CHARGE" ]; then echo "LIMITING CHARGING DUE TO MAX AMP AT GRID" #SI_POWER_REQ=-$MAX_CHARGE SI_POWER_REQ=-$MAX_POWER else SI_POWER_REQ=-$MAX_POWER fi ;; DISCHARGE) if [ "$MAX_DISCHARGE" -le 0 ]; then echo "cant discharge, no amps available at grid" COMMAND="IDLE" elif [ "$MAX_POWER" -gt "$MAX_DISCHARGE" ]; then echo "LIMITING DISCHARGING DUE TO MAX AMP AT GRID" #SI_POWER_REQ=-$MAX_CHARGE SI_POWER_REQ=$MAX_POWER else SI_POWER_REQ=$MAX_POWER fi ;; ZERO) SI_POWER_REQ=$(($SI_POWER+$SI_POWER2)) ;; NOCHRG) SI_POWER_REQ=$(($SI_POWER+$SI_POWER2)) if [ "$SI_POWER_REQ" -le 0 ]; then # charge is requested, we don't want that, so switch to idle COMMAND="IDLE" fi #MAXCHRG=0 ;; NODISC) SI_POWER_REQ=$(($SI_POWER+$SI_POWER2)) if [ "$SI_POWER_REQ" -ge 0 ]; then # discharge is requested, we don't want that, so switch to idle COMMAND="IDLE" fi #MAXDISC=0 ;; *) echo "IMPOSSIBLE -> IDLE" COMMAND="IDLE" SI_POWER_REQ=0 esac echo Computed Active power setpoint $SI_POWER_REQ W BAT_PERC=`echo $SI60 | jq .battery_soc` echo "Battery SoC" $BAT_PERC % if [ "x$COMMAND" != "xIDLE" -a "$SI_POWER_REQ" -ge 0 -a "$BAT_PERC" -le 11 ]; then # inverter will misbehave when percentage is too low echo "battery low, do not discharge, we set the command to IDLE" COMMAND="IDLE" fi if [ "$SI_POWER_REQ" -ge 0 -a "$SI_BATVOLT" -le "4480" ]; then echo "battery voltage low. force idle" COMMAND="IDLE" fi #echo "Max power used by Battery $MAX_POWER" #if [ "$(($L1_LOADS_ACTIVE_POWER_FROM_HUB + $MAX_POWER))" -gt "$L1_MAX_ACTIVE_POWER" ]; then # SOLAR_ALLOW=$((($L1_LOADS_ACTIVE_POWER_FROM_HUB - $L1_MAX_ACTIVE_POWER + $MAX_POWER)*10000/4000)) # SOLAR_ALLOW_HUMAN=`echo "scale=2; $SOLAR_ALLOW/100" | bc` # echo "Computed solar allow $SOLAR_ALLOW_HUMAN%" #else # SOLAR_ALLOW=0 # SOLAR_ALLOW_HUMAN="0.00" #fi # limit solar by percentage, this somehow seems to work #if [ "$PRICE" -lt 0 ]; then # # limit to 0.00% # echo "afknijpen tot $SOLAR_ALLOW_HUMAN%" # #mbpoll $SB15_RIGHT_IP -a 3 -B 3 -r 40023 -q -t 4 $SOLAR_ALLOW > /dev/null # mbpoll $SB40_OP -a 3 -B -0 -r 44039 -q -t 4:int 0 > /dev/null #else # # limit to 100.00% # #mbpoll $SB15_RIGHT_IP -a 3 -B 3 -r 40023 -q -t 4 10000 > /dev/null # mbpoll $SB40_IP -a 3 -B -0 -r 44039 -q -t 4:int 100000 > /dev/null #fi if [ "x$COMMAND" = "xIDLE" ]; then mbpoll $SI60_IP -a 3 -B -0 -r 40805 -q -t 4:int 308 > /dev/null else mbpoll $SI60_IP -a 3 -B -0 -r 40805 -q -t 4:int 303 > /dev/null fi if [ "x$COMMAND" = "xZERO" -o "x$COMMAND" = "xNODISC" -o "x$COMMAND" = "xNOCHRG" ]; then mbpoll $SI60_IP -a 3 -B -0 -r 40151 -q -t 4:int 803 > /dev/null if [ "x$ORIG_COMMAND" = "xNODISC" -o "x$ORIG_COMMAND" = "xNOCHRG" ]; then mosquitto_pub -t si60h/command -m "$ORIG_COMMAND (ZERO)" else mosquitto_pub -t si60h/command -m "$COMMAND" fi else mbpoll $SI60_IP -a 3 -B -0 -r 40149 -q -t 4:int -- $SI_POWER_REQ > /dev/null mbpoll $SI60_IP -a 3 -B -0 -r 40151 -q -t 4:int 802 > /dev/null if [ "x$ORIG_COMMAND" = "xNODISC" -o "x$ORIG_COMMAND" = "xNOCHRG" ]; then mosquitto_pub -t si60h/command -m "$ORIG_COMMAND (IDLE)" else mosquitto_pub -t si60h/command -m $COMMAND fi fi echo "---------" mariadb -B --skip-column-names --user=$USERNAME --password=$PASSWORD stroom << EOQ INSERT INTO batstats ( batstat_timestamp, batstat_operstat, batstat_voltage, batstat_current, batstat_command, batstat_parameter, batstat_ahin, batstat_ahout ) VALUES ( $TIME, $SI_OPERSTATUS, $TOTALVOLT, $TOTALCURR, '$COMMAND', $SI_POWER_REQ, $AHIN, $AHOUT ) EOQ