Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@cristianlivella
Created January 27, 2020 19:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cristianlivella/5339e250c4a0ef78719f087f9ea5d3d7 to your computer and use it in GitHub Desktop.
Save cristianlivella/5339e250c4a0ef78719f087f9ea5d3d7 to your computer and use it in GitHub Desktop.
SolarEdge MQTT
from solaredge_local import SolarEdge
import paho.mqtt.client as mqtt
import time
usernameMQTT = "USERNAME"
passwordMQTT = "PASSWORD"
ipMQTT = "192.168.0.10"
ipInverter = "http://192.168.0.11"
while True:
try:
client = mqtt.Client('solaredge')
client.username_pw_set(username=usernameMQTT, password=passwordMQTT)
client.connect(ipMQTT)
solar = SolarEdge(ipInverter)
response = solar.get_status()
solar_power = round(response.powerWatt / 1000, 2)
export_power = round(response.metersList[0].currentPower / 1000, 2)
import_power = round(response.metersList[1].currentPower / 1000, 2)
consumption_power = round(solar_power + import_power - export_power, 2)
grid_power = round(import_power - export_power, 2)
solar_energy_today = round(response.energy.today / 1000, 2)
solar_energy_total = round(response.energy.total / 1000, 2)
export_energy_total = round(response.metersList[0].totalEnergy / 1000, 2)
import_energy_total = round(response.metersList[1].totalEnergy / 1000, 2)
voltage = response.voltage
frequency = response.frequencyHz
client.publish('solaredge_local/solar_power', payload=str(solar_power), retain=True)
client.publish('solaredge_local/export_power', payload=str(export_power), retain=True)
client.publish('solaredge_local/import_power', payload=str(import_power), retain=True)
client.publish('solaredge_local/consumption_power', payload=str(consumption_power), retain=True)
client.publish('solaredge_local/grid_power', payload=str(grid_power), retain=True)
client.publish('solaredge_local/solar_energy_today', payload=str(solar_energy_today), retain=True)
client.publish('solaredge_local/solar_energy_total', payload=str(solar_energy_total), retain=True)
if export_energy_total > 1:
client.publish('solaredge_local/export_energy_total', payload=str(export_energy_total), retain=True)
if import_energy_total > 1:
client.publish('solaredge_local/import_energy_total', payload=str(import_energy_total), retain=True)
client.publish('solaredge_local/voltage', payload=str(round(voltage, 2)), retain=True)
client.publish('solaredge_local/frequency', payload=str(round(frequency, 2)), retain=True)
except:
pass
time.sleep(10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment