# Make a sensor from the solar elevation data - sensor: - name: "calc_sun_elevation" unit_of_measurement: "°" state: > {{ state_attr('sun.sun', 'elevation') }} # Calculate Total Battery Power Values - sensor: - name: "SEModbus Power - Batteries DC Power" unique_id: semodbus_power_batteries_dc_power unit_of_measurement: "W" device_class: "power" state_class: "measurement" state: > {% set myB1 = float(states('sensor.solaredgemodbus_b1_dc_power'),0) %} {% set myB2 = float(states('sensor.solaredgemodbus_b2_dc_power'),0) %} {% set myB3 = float(states('sensor.solaredgemodbus_b3_dc_power'),0) %} {% set myvalue = ((myB1 + myB2 + myB3)) %} {{ myvalue }} - sensor: - name: "SEModbus Power - Solar Generation Alt" unit_of_measurement: "W" device_class: "power" state_class: "measurement" # If sun is below horizon, then cannot be generating solar # Positive Inverter value means the Inverter is providing power to the house # That can only come from Batteries or Solar # If battery value is positive then it is being charged, negative is discharging # Add Inverter value (if positive) to Battery (will subtract if Battery discharging + - ) # If negative, then return zero state: > {% set BattDC = float(states('sensor.semodbus_power_batteries_dc_power'), 0) %} {% set InvDC = float(states('sensor.solaredgemodbus_i1_dc_power'), 0) %} {% set SunUp = float(states('sensor.calc_sun_elevation'), 0) %} {% if InvDC < 0 or SunUp < 0 %} {% set myvalue = 0 %} {% else %} {% set myvalue = (InvDC + BattDC) %} {% if myvalue < 0 %} {% set myvalue = 0 %} {% endif %} {% endif %} {{ myvalue }}