Das ist mein Dashboard. Einige Daten werden von Python Skripten ausgelesen und berechnet, da ich es bisher in Grafana nicht geschafft habe. (und PHP kann ich auch nicht). Auch Daten aus der Solaredge API sind darin enthalten. Die Skripte werden per cron regelmäßig ausgeführt.
Skript: eigenverbrauch.py. Wird einmal pro Minute ausgeführt
Code: Alles auswählen
#!/usr/bin/env python3
from influxdb import InfluxDBClient
from time import asctime
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
#--------------- Berechnung des Eigenverbrauchs ---------------
print(asctime())
print("Berechnung des Eigenverbrauchs")
#Verbrauch ermitteln
results=client.query('SELECT "Verbrauch" FROM "AC" GROUP BY * ORDER BY DESC LIMIT 1')
points = results.get_points
point = 0
for point in points():
verbrauch = point['Verbrauch']
verbrauchprint = str(verbrauch)
print("Verbrauch: " + verbrauchprint)
#AC Leistung ermitteln
results=client.query('SELECT "Leistung" FROM "AC" GROUP BY * ORDER BY DESC LIMIT 1')
points = results.get_points
point = 0
for point in points():
acleistung = (point['Leistung'])
acleistungprint = str(acleistung)
print("AC-Leistung: " + acleistungprint)
#Berechnen
if acleistung >= verbrauch:
eigenverbrauch = verbrauch
eigenverbrauchprint = str(eigenverbrauch)
print("Eigenverbrauch: " + eigenverbrauchprint)
if acleistung < verbrauch:
eigenverbrauch = acleistung
eigenverbrauchprint = str(eigenverbrauch)
print("Eigenverbrauch: " + eigenverbrauchprint)
#Berechnete Werte in die Datenbank eintragen
json_body = [
{
"measurement": "Eigenverbrauch",
"fields": {
"Eigenverbrauch": eigenverbrauch
}
},
]
client.write_points(json_body)
Code: Alles auswählen
#!/usr/bin/env python3
from time import asctime
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
#--------------- Berechnung der Modulleistung ---------------
print(asctime())
print("Berechnung der Modulleistung")
#Batterieleistung ermitteln
results=client.query('SELECT "Leistung" FROM "Batterie_1" GROUP BY * ORDER BY DESC LIMIT 1')
points = results.get_points
point = 0
for point in points():
batterieleistung = point['Leistung']
batterieleistungprint = str(batterieleistung)
print("Baterieleistung: " + batterieleistungprint)
#AC Leistung ermitteln
results=client.query('SELECT "Leistung" FROM "AC" GROUP BY * ORDER BY DESC LIMIT 1')
points = results.get_points
point = 0
for point in points():
acleistung = (point['Leistung'])
acleistungprint = str(acleistung)
print("AC-Leistung: " + acleistungprint)
#Berechnen
pvleistung = acleistung+batterieleistung
pvleistungprint = str(pvleistung)
if pvleistung < 50:
pvleistung2 = 0
pvleistung = float(pvleistung2)
pvleistungprint = str(pvleistung)
print("PV-Leistung: " + pvleistungprint)
#Berechnete Werte in die Datenbank eintragen
json_body = [
{
"measurement": "PV-Leistung",
"fields": {
"PV-Leistung": pvleistung
}
},
]
client.write_points(json_body)
Code: Alles auswählen
import requests
from datetime import date
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
today = date.today()
starttime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2000:00:00"
endtime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2023:59:59"
#Abfrage
url='https://monitoringapi.solaredge.com/site/geheim/energyDetails?timeUnit=DAY&startTime=' + starttime + '&endTime=' + endtime + '&api_key=geheim'
r = requests.get(url)
data = r.json()
print(url)
#Verarbeitung
#Eigenverbrauch
if data["energyDetails"]["meters"][0]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Produktion
if data["energyDetails"]["meters"][0]["type"] == "Production":
produktion = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Production":
produktion = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Production":
produktion = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Production":
produktion = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Production":
produktion = data["energyDetails"]["meters"][4]["values"][0]["value"]
#bezug
if data["energyDetails"]["meters"][0]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][4]["values"][0]["value"]
#einspeisung
if data["energyDetails"]["meters"][0]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][4]["values"][0]["value"]
#verbrauch
if data["energyDetails"]["meters"][0]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Berechnung Verhältnis:
#Eigenverbrauch - Einspeisung
try:
einspeisung_prozent = einspeisung/produktion
erfolg_einspeisung_prozent = 1
except:
erfolg_einspeisung_prozent = 0
try:
bezug_prozent = bezug/verbrauch
erfolg_bezug_prozent = 1
except:
erfolg_bezug_prozent = 0
#Ausgabe
print("Eigenverbrauch: " + str(eigenverbrauch))
print("Produktion: " + str(produktion))
print("Bezug: " + str(bezug))
print("Einspeisung: " + str(einspeisung))
print("Verbrauch: " + str(verbrauch))
#In influxdb schreiben
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Eigenverbrauch": eigenverbrauch
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Produktion": produktion
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Bezug": bezug
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Einspeisung": einspeisung
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Verbrauch": verbrauch
}
},
]
client.write_points(json_body)
if erfolg_einspeisung_prozent == 1:
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Einspeisung_Prozent": einspeisung_prozent
}
},
]
client.write_points(json_body)
if erfolg_bezug_prozent == 1:
json_body = [
{
"measurement": "Summen_Tag",
"fields": {
"Bezug_Prozent": bezug_prozent
}
},
]
client.write_points(json_body)
Code: Alles auswählen
import requests
from datetime import date
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
today = date.today()
starttime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2000:00:00"
endtime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2023:59:59"
#Abfrage
url='https://monitoringapi.solaredge.com/site/geheim/energyDetails?timeUnit=WEEK&startTime=' + starttime + '&endTime=' + endtime + '&api_key=geheim'
r = requests.get(url)
data = r.json()
print(url)
#Verarbeitung
#Eigenverbrauch
if data["energyDetails"]["meters"][0]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Produktion
if data["energyDetails"]["meters"][0]["type"] == "Production":
produktion = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Production":
produktion = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Production":
produktion = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Production":
produktion = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Production":
produktion = data["energyDetails"]["meters"][4]["values"][0]["value"]
#bezug
if data["energyDetails"]["meters"][0]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][4]["values"][0]["value"]
#einspeisung
if data["energyDetails"]["meters"][0]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][4]["values"][0]["value"]
#verbrauch
if data["energyDetails"]["meters"][0]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Berechnung Verhältnis:
#Eigenverbrauch - Einspeisung
try:
einspeisung_prozent = einspeisung/produktion
erfolg_einspeisung_prozent = 1
except:
erfolg_einspeisung_prozent = 0
try:
bezug_prozent = bezug/verbrauch
erfolg_bezug_prozent = 1
except:
erfolg_bezug_prozent = 0
#Ausgabe
print("Eigenverbrauch: " + str(eigenverbrauch))
print("Produktion: " + str(produktion))
print("Bezug: " + str(bezug))
print("Einspeisung: " + str(einspeisung))
print("Verbrauch: " + str(verbrauch))
#In influxdb schreiben
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Eigenverbrauch": eigenverbrauch
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Produktion": produktion
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Bezug": bezug
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Einspeisung": einspeisung
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Verbrauch": verbrauch
}
},
]
client.write_points(json_body)
if erfolg_einspeisung_prozent == 1:
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Einspeisung_Prozent": einspeisung_prozent
}
},
]
client.write_points(json_body)
if erfolg_bezug_prozent == 1:
json_body = [
{
"measurement": "Summen_Woche",
"fields": {
"Bezug_Prozent": bezug_prozent
}
},
]
client.write_points(json_body)
Code: Alles auswählen
import requests
from datetime import date
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
today = date.today()
starttime= str(today.year) + "-" + str(today.month) + "-" + "01" + "%2000:00:00"
endtime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2023:59:59"
#Abfrage
url='https://monitoringapi.solaredge.com/site/geheim/energyDetails?timeUnit=MONTH&startTime=' + starttime + '&endTime=' + endtime + '&api_key=geheim'
r = requests.get(url)
data = r.json()
print(url)
#Verarbeitung
#Eigenverbrauch
if data["energyDetails"]["meters"][0]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Produktion
if data["energyDetails"]["meters"][0]["type"] == "Production":
produktion = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Production":
produktion = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Production":
produktion = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Production":
produktion = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Production":
produktion = data["energyDetails"]["meters"][4]["values"][0]["value"]
#bezug
if data["energyDetails"]["meters"][0]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][4]["values"][0]["value"]
#einspeisung
if data["energyDetails"]["meters"][0]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][4]["values"][0]["value"]
#verbrauch
if data["energyDetails"]["meters"][0]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Berechnung Verhältnis:
#Eigenverbrauch - Einspeisung
try:
einspeisung_prozent = einspeisung/produktion
erfolg_einspeisung_prozent = 1
except:
erfolg_einspeisung_prozent = 0
try:
bezug_prozent = bezug/verbrauch
erfolg_bezug_prozent = 1
except:
erfolg_bezug_prozent = 0
#Ausgabe
print("Eigenverbrauch: " + str(eigenverbrauch))
print("Produktion: " + str(produktion))
print("Bezug: " + str(bezug))
print("Einspeisung: " + str(einspeisung))
print("Verbrauch: " + str(verbrauch))
#In influxdb schreiben
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Eigenverbrauch": eigenverbrauch
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Produktion": produktion
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Bezug": bezug
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Einspeisung": einspeisung
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Verbrauch": verbrauch
}
},
]
client.write_points(json_body)
if erfolg_einspeisung_prozent == 1:
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Einspeisung_Prozent": einspeisung_prozent
}
},
]
client.write_points(json_body)
if erfolg_bezug_prozent == 1:
json_body = [
{
"measurement": "Summen_Monat",
"fields": {
"Bezug_Prozent": bezug_prozent
}
},
]
client.write_points(json_body)
Code: Alles auswählen
import requests
from datetime import date
from influxdb import InfluxDBClient
client = InfluxDBClient(host='localhost', port=8086)
client.switch_database('solaranzeige')
today = date.today()
starttime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2000:00:00"
endtime= str(today.year) + "-" + str(today.month) + "-" + str(today.day) + "%2023:59:59"
#Abfrage
url='https://monitoringapi.solaredge.com/site/geheim/energyDetails?timeUnit=YEAR&startTime=' + starttime + '&endTime=' + endtime + '&api_key=geheim'
r = requests.get(url)
data = r.json()
print(url)
#Verarbeitung
#Eigenverbrauch
if data["energyDetails"]["meters"][0]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "SelfConsumption":
eigenverbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Produktion
if data["energyDetails"]["meters"][0]["type"] == "Production":
produktion = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Production":
produktion = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Production":
produktion = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Production":
produktion = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Production":
produktion = data["energyDetails"]["meters"][4]["values"][0]["value"]
#bezug
if data["energyDetails"]["meters"][0]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Purchased":
bezug = data["energyDetails"]["meters"][4]["values"][0]["value"]
#einspeisung
if data["energyDetails"]["meters"][0]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "FeedIn":
einspeisung = data["energyDetails"]["meters"][4]["values"][0]["value"]
#verbrauch
if data["energyDetails"]["meters"][0]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][0]["values"][0]["value"]
if data["energyDetails"]["meters"][1]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][1]["values"][0]["value"]
if data["energyDetails"]["meters"][2]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][2]["values"][0]["value"]
if data["energyDetails"]["meters"][3]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][3]["values"][0]["value"]
if data["energyDetails"]["meters"][4]["type"] == "Consumption":
verbrauch = data["energyDetails"]["meters"][4]["values"][0]["value"]
#Berechnung Verhältnis:
#Eigenverbrauch - Einspeisung
try:
einspeisung_prozent = einspeisung/produktion
erfolg_einspeisung_prozent = 1
except:
erfolg_einspeisung_prozent = 0
try:
bezug_prozent = bezug/verbrauch
erfolg_bezug_prozent = 1
except:
erfolg_bezug_prozent = 0
#Ausgabe
print("Eigenverbrauch: " + str(eigenverbrauch))
print("Produktion: " + str(produktion))
print("Bezug: " + str(bezug))
print("Einspeisung: " + str(einspeisung))
print("Verbrauch: " + str(verbrauch))
#In influxdb schreiben
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Eigenverbrauch": eigenverbrauch
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Produktion": produktion
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Bezug": bezug
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Einspeisung": einspeisung
}
},
]
client.write_points(json_body)
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Verbrauch": verbrauch
}
},
]
client.write_points(json_body)
if erfolg_einspeisung_prozent == 1:
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Einspeisung_Prozent": einspeisung_prozent
}
},
]
client.write_points(json_body)
if erfolg_bezug_prozent == 1:
json_body = [
{
"measurement": "Summen_Jahr",
"fields": {
"Bezug_Prozent": bezug_prozent
}
},
]
client.write_points(json_body)
Die Skripte sind nicht schön und man kann sie auch bestimmt noch optimieren, aber sie funktionieren.
Aber nun zu den Bildern:
Solaranzeige über den PC/raspi: Und die Solaranzeige übers Handy:
Da die Datei zu groß ist, dass ich sie im Forum hochladen könnte findet ihr sie hier: http://jjk.bplaced.net/solaranzeige_handy.jpg
(alternativ die solaranzeige_handy.txt herunterladen und in solaranzeige_handy.jpg umbenennen.)
Die json-Dateien findet ihr im Anhang