inverter_tasmota_arbeitszimmer_off.sh #!/bin/bash #set Inverter/Tasmota IPs IPINVERTER="192.168.178.55" IPTASMOTA="192.168.178.61" #get timestamp YYYY-MM-DD HH24:MI TIMESTAMP=`date +'%Y-%m-%d %H:%M'` START_VALUE="0" STOP_VALUE="0" #set & create log file with header if not exists LOG_FILE=/home/pi/inverter_tasmota_arbeitszimmer.log if [[ ! -f ${LOG_FILE} ]] then echo "Timestamp;IP Inverter;PowerReal_P_Sum;IP Tasmota;Tasmota Power State;Start Value;Stop Value;Message;Loop T;Loop I" > ${LOG_FILE}; fi #get PowerValue from Inverter API & format output, loop if tasmota is unreachable LOOP_I=0 PowerReal_P_Sum=`curl -s http://${IPINVERTER}/solar_api/v1/GetMeterRealtimeData.cgi |grep -i "PowerReal_P_Sum" |tr -s " " |cut -d ":" -f2 |sed 's/,//g' |sed 's/^ //g'| cut -d $(locale decimal_point) -f1` while [[ -z ${PowerReal_P_Sum} ]] do if [[ ${LOOP_I} -eq 3 ]] then break; fi let LOOP_I++; sleep 10; PowerReal_P_Sum=`curl -s http://${IPINVERTER}/solar_api/v1/GetMeterRealtimeData.cgi |grep -i "PowerReal_P_Sum" |tr -s " " |cut -d ":" -f2 |sed 's/,//g' |sed 's/^ //g'| cut -d $(locale decimal_point) -f1`; done #get tasmota state & format output, loop if tasmota is unreachable LOOP_T=0 TASMOTA_POWER_STATE=`curl -s http://${IPTASMOTA}/cm?cmnd=Power | sed 's/{//g' | sed 's/}//g' |sed 's/"//g' |cut -d ":" -f2` while [[ -z ${TASMOTA_POWER_STATE} ]] do if [[ ${LOOP_T} -eq 3 ]] then break; fi let LOOP_T++; sleep 10; TASMOTA_POWER_STATE=`curl -s http://${IPTASMOTA}/cm?cmnd=Power | sed 's/{//g' | sed 's/}//g' |sed 's/"//g' |cut -d ":" -f2`; done STATE="OFF" MESSAGE="Tasmota, turn it final ${STATE}"; LOOP_T=0; TASMOTA_SWITCH=`curl -s "http://${IPTASMOTA}/cm?cmnd=Power%20${STATE}"`; while [[ -z ${TASMOTA_SWITCH} ]] do if [[ ${LOOP_T} -eq 3 ]] then MESSAGE="No Connection to Tasmota when setting final Power State ${STATE}" echo "${TIMESTAMP};${IPINVERTER};${PowerReal_P_Sum};${IPTASMOTA};${TASMOTA_POWER_STATE};${START_VALUE};${STOP_VALUE};${MESSAGE};${LOOP_T};${LOOP_I}" >> ${LOG_FILE}; exit 1; fi let LOOP_T++; sleep 10; TASMOTA_SWITCH=`curl -s "http://${IPTASMOTA}/cm?cmnd=Power%20${STATE}"`; done #write log echo "${TIMESTAMP};${IPINVERTER};${PowerReal_P_Sum};${IPTASMOTA};${TASMOTA_POWER_STATE};${START_VALUE};${STOP_VALUE};${MESSAGE};${LOOP_T};${LOOP_I}" >> ${LOG_FILE} exit 0