#!/bin/bash #%# family=auto #%# capabilities=autoconf : << EOF =head1 NAME Outputs the current power, total yield, daily yield from a deye inverter. =head1 CONFIGURATION Tested with a "Deye SUN600G3-EU-230 600W" inverter. Dependencies: - wget - awk - sed - bc plugin config: [deye] env.user env.password env.ip =head1 AUTHOR Michael Grote =head1 LICENSE GPLv3 or later SPDX-License-Identifier: GPL-3.0-or-later =head1 MAGIC MARKERS #%# family=auto =cut EOF # Values in HTML # sn = serial number # msvn = Firmware version (main) # ssvn = Firmware version (slave) # pv_type = inverter _model # rate_p = rated power # now_p = current power # today_e = yield today # total_e = total yield # alarm = alarm # utime = last updated # check if inverter is reachable # inverter is off when there is not enough light to power it # so it is safe to assume that current power etc. are zero if ping "${ip}" -c1 -W 3 2>&1 > /dev/null ; then current_power=$(wget --quiet --user "${user}" --password "${password}" -O - "${ip}"/status.html | grep "var webdata_now_p" | awk 'BEGIN {FS="="}{print $2}' | sed 's/[^0-9]*//g') daily_yield=$(wget --quiet --user "${user}" --password "${password}" -O - "${ip}"/status.html | grep "var webdata_today_e" | awk 'BEGIN {FS="="}{print $2}' | sed 's/[^0-9]*//g') total_yield=$(wget --quiet --user "${user}" --password "${password}" -O - "${ip}"/status.html | grep "var webdata_total_e" | awk 'BEGIN {FS="="}{print $2}' | sed 's/[^0-9]*//g') reachable="1" else current_power="0" daily_yield=U total_yield=U reachable="0" fi # wenn parameter = ... if [ "$1" = "autoconf" ]; then echo yes exit 0 fi if [ "$1" = "config" ]; then # setze optionen echo multigraph current_power echo graph_title Deye current Power echo 'graph_vlabel watt' echo 'graph_category sensors' echo 'graph_args -l 0' echo "graph_info Current generated power in Watt." echo current_power.label watt echo multigraph daily_yield echo graph_title Deye daily Yield echo 'graph_vlabel kWh' echo 'graph_category sensors' echo 'graph_args -l 0' echo "graph_info Power generated today." echo daily_yield.label kWh echo daily_yield.draw AREA echo multigraph total_yield echo graph_title Deye Total Yield echo 'graph_vlabel kWh' echo 'graph_category sensors' echo 'graph_args -l 0' echo "graph_info Total generated power." echo total_yield.label kWh echo total_yield.draw AREA echo multigraph reachable echo graph_title Deye inverter reachable echo 'graph_vlabel on/off' echo 'graph_category sensors' echo 'graph_args -l 0' echo "graph_info Is the Inverter is reachable? 1 is On, 0 is Off" echo reachable.label on/off echo reachable.draw AREA exit 0 fi echo multigraph current_power echo "current_power.value $current_power" echo multigraph daily_yield echo "daily_yield.value $(echo "scale=2 ; $daily_yield / 100" | bc | sed 's/^\./0./')" echo multigraph total_yield echo "total_yield.value $(echo "scale=2 ; $total_yield / 10" | bc | sed 's/^\./0./')" echo multigraph reachable echo "reachable.value $reachable" exit 0