diff --git a/bar-functions/dwm_solar_panel.sh b/bar-functions/dwm_solar_panel.sh new file mode 100755 index 0000000..ba251b8 --- /dev/null +++ b/bar-functions/dwm_solar_panel.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# This module can get data from a SMA Inverter. +# Its purpose is to show you how much Watts are being produced +# To make it work change the INVERTER_IP variable and your User password +# Vincenzo Petrolo +# For infos on how i made it, and help or bugs, you cant contact me or +# open an issue +# GNU GPLv3 + +# P.s: Be careful when trying to modify urls, as they contains special +# characters that may change the behaviour of the query + +dwm_solar_panel () { + + INVERTER_IP="INVERTER IP HERE" + PASSWORD="USER GROUP PASSWORD HERE" + + + if [[ -f ~/.cache/solar_panel.cache ]]; + then + read SID < ~/.cache/solar_panel.cache + if [ "$SID" == "null" ]; + then + #Getting session id + SID=`curl -s --location --request POST "http://$INVERTER_IP/dyn/login.json" \ + --header 'Content-Type: text/plain' \ + --data-raw "{"right":"usr","pass":"$PASSWORD"}" | jq .result.sid` + SID=${SID//\"} + fi + #checks if it got a session token + if [ "$SID" != "" ]; + then + echo $SID > ~/.cache/solar_panel.cache + WATTS=$(curl -s --location --request POST "http://$INVERTER_IP/dyn/getValues.json?sid=$SID" \ + --header 'Content-Type: text/plain' \ + --data-raw '{"destDev":[],"keys":["6100_00543100","6800_008AA200","6100_40263F00","6800_00832A00","6180_08214800","6180_08414900","6180_08522F00","6400_00543A00","6400_00260100","6800_08811F00","6400_00462E00"]}' | jq '.result."0156-76BC3EC6"."6100_40263F00"."1"[0].val') + + if [ "$WATTS" == "" ]; + then + echo "null" > ~/.cache/solar_panel.cache + else + if [ "$WATTS" == "null" ]; + then + $WATTS=0 + fi + WATTC=`bc <<< "scale=3; $WATTS / 1000"` + printf "%s💡 $WATTC W %s" "$SEP1" "$SEP2" + fi + fi + else + touch ~/.cache/solar_panel.cache + + echo "null" > ~/.cache/solar_panel.cache + fi + +} +dwm_solar_panel +