Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getChargeCurrent() {
- if [ $(/usr/local/bin/lv VAPI_chargerCurrent) = "0.000" ] || [ $(/usr/local/bin/lv VAPI_chargerCurrent) = '"<invalid>"' ]; then
- chargeCurrent=0
- else
- chargeCurrent=$(/usr/local/bin/lv VAPI_chargerCurrent)
- chargeCurrent=${chargeCurrent:1}
- chargeCurrent=${chargeCurrent%.*}
- chargeCurrent=$(printf '%.*f\n' 0 $chargeCurrent)
- fi
- echo $chargeCurrent
- }
- function getStats() {
- if curl --fail --silent --max-time 5 -X GET -H "Content-Type:application/json" 'http://192.168.1.99/current-sample' > /var/run/solarStats.json; then
- #Very dirty variable trimming
- #gen=`sed -E 's/\},\s*\{/\},\n\{/g' /var/log/solarStats.json | grep "GENERATION"`
- #gen=`echo "$gen" | sed -nE 's/.*"p_W":(.*),"q_VAR.*/\1/p'`
- gen=`sed -E 's/\},\s*\{/\},\n\{/g' /var/run/solarStats.json | grep "GENERATION" | sed -nE 's/.*"p_W":(.*),"q_VAR.*/\1/p'`
- #load=`cat /var/log/solarStats.json | grep -o '\"ch":5.*?(?="type")'`
- #load=`echo "$load" | sed -nE 's/.*"p_W":(.*),"q_VAR.*/\1/p'`
- load=`sed -E 's/\},\s*\{/\},\n\{/g; s/],/],\n/g' /var/run/solarStats.json | grep "\"CONSUMPTION\"" | sed -nE 's/.*"p_W":(.*),"q_VAR.*/\1/p'`
- else
- echo "Failed to get stats"
- #failure
- continue
- fi
- }
- function chargeRate() {
- if [ $gen -gt 0 ] && [ $ampRequest -gt 0 ]; then
- /usr/local/bin/sdv GUI_chargeEnableRequest true
- /usr/local/bin/sdv GUI_userChargeEnableRequest true
- #/usr/local/bin/sdv GUI_speedLimitMode true
- if [ $ampRequest -gt 72 ]; then
- echo "Setting power state... Amp request is " $ampRequest
- #/usr/local/bin/sdv GUI_chargeCurrentRequest $(($gen-500))/240
- else
- if [ $ampRequest -ge 30 ]; then
- ampRequest=30
- fi
- echo "Setting power state... Amp request is " $ampRequest
- /usr/local/bin/sdv GUI_chargeCurrentRequest $ampRequest
- tries=0
- while [ $(($ampRequest-$(getChargeCurrent))) -gt 1 ] || [ $(($ampRequest-$(getChargeCurrent))) -lt -1 ] && [ $tries -lt 5 ]
- do
- echo $(($ampRequest-$(getChargeCurrent)))
- echo 'Power Request currently' $ampRequest
- echo 'Waiting on ramp up in charge current, currently' $(getChargeCurrent)
- tries=$(($tries+1))
- echo $tries
- sleep 2
- done
- powerRequest=$(($ampRequest*240))
- fi
- firstRun="false"
- #sleep 5
- else
- /usr/local/bin/sdv GUI_chargeEnableRequest false
- /usr/local/bin/sdv GUI_userChargeEnableRequest false
- echo "No free energy available."
- sleep 2
- fi
- }
- firstRun="true"
- changeReqd="true"
- while [ true ]
- do
- batteryLevel=$(/usr/local/bin/lv VAPI_batteryLevel)
- echo -e "\n-------------"
- echo "SoC:" ${batteryLevel:1:2}"%"
- echo "-------------"
- if [ $(/usr/local/bin/lv LINK_wifiSsid) = '"WifiName"' ] \
- && [ $(/usr/local/bin/lv LINK_wifiState) = '"online"' ] \
- && [ $(/usr/local/bin/lv GTW_chargeState) != '"Disconnected"' ] \
- && [ $(/usr/local/bin/lv GTW_chargeState) != '"Complete"' ]; then
- getStats
- echo 'Gen is ' $gen
- echo 'Load is' $load
- if [ $(getChargeCurrent) -ne 0 ]; then
- echo -n "Car currently charging at " $(getChargeCurrent)
- [ $(getChargeCurrent) -gt 1 ] && echo "amps." || echo "amp."
- if [ $firstRun == "true" ]; then
- ampRequest=$(getChargeCurrent)
- fi
- fi
- #if [[ $gen -le $(($load+240)) ]] && [ $(getChargeCurrent) -eq 0 ]; then
- if [[ $gen -le $(($load)) ]] && [ $(getChargeCurrent) -eq 0 ]; then
- echo "Not enough solar energy to start charging"
- powerRequest=0
- ampRequest=0
- #continue
- else
- getStats
- if [ $(getChargeCurrent) -eq 0 ]; then
- if [ $(($gen-$load)) -gt 240 ]; then
- powerRequest=$(($gen-$load))
- ampRequest=$(($powerRequest/240))
- echo "Power request ran IF and is" $powerRequest
- else
- echo "Not enough solar energy to call for 1 Amp"
- fi
- else
- echo "Power request ran ELSE"
- echo 'Charge Current is currently ' $(getChargeCurrent)
- if [ $firstRun == "true" ]; then
- powerRequest=$(($(getChargeCurrent)*240))
- fi
- echo 'Load was:' $load
- #refresh stats
- getStats
- echo 'PR was' $ampRequest
- echo 'Gen, Load, PR values:' $gen $load $powerRequest
- carlessLoad=$(($load-$(($(getChargeCurrent)*240))))
- powerRequest=$(($gen-$carlessLoad))
- #This gives an idea of how much free energy we've got available, and
- #checks to see if current amperage matches what we asked for.
- echo "Free energy available:" $powerRequest
- echo "Load without car:" $carlessLoad
- if [ $(($ampRequest-$(($powerRequest/240)))) -gt 1 ] || [ $(($ampRequest-$(($powerRequest/240)))) -lt -1 ]; then
- ampRequest=$(($powerRequest/240))
- else
- if [[ $(($gen-$load)) -ge 240 ]]; then
- ampRequest=$(($ampRequest+1))
- else
- changeReqd="false"
- echo "No change required"
- fi
- echo "Amp request is" $ampRequest
- fi
- fi
- fi
- if [ $changeReqd == "true" ]; then
- chargeRate
- fi
- changeReqd="true"
- else
- if [ $(/usr/local/bin/lv GTW_chargeState) = '"Disconnected"' ]; then
- echo "Car not plugged in."
- elif [ $(/usr/local/bin/lv GTW_chargeState) = '"Complete"' ]; then
- echo "Car fully charged"
- fi
- sleep 10
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment