Hallo zusammen,
ich habe auch keine optimale Lösung gefunden. Anbei ein kleines Script, mit dem ich mit Python aus Homeassistant die Stromzähler aus HA auslese und in eine MariaDB Datenbank einfüge. Vieleicht hilft es dem einen oder anderen weiter.
from requests import get
import json
import datetime
import pymysql
from os import system
import mariadb
token = "MEIN-TOKEN"
dt = datetime.datetime.now()
CurrentDatetime = dt.strftime("%Y-%m-%d %H:%M:%S")
def FuncRestApi (url, token):
headers = {
"Authorization": "Bearer " + token,
"content-type": "application/json",
}
response = get(url, headers=headers)
# Create a json variable
jdata = json.loads(response.text)
return (jdata["state"])
def FuncInsertEnergyData (energy_id, energy_data, energy_datetime):
# Connect to MariaDB Platform
try:
conn = mariadb.connect(
user="MeinMariadbUser",
password="MeinMariadbUserPasswort",
host="hyper-v.fritz.box",
port=3306,
database="homedata"
)
except mysql.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
# Get Cursor
cur = conn.cursor()
mycursor = conn.cursor()
cur.execute(
"INSERT INTO homedata.tbl_energy_data (energy_datetime, energy_id, energy_data) VALUES (?, ?, ?)",
(energy_datetime, energy_id, energy_data))
#Steckdose Schlafzimmer energy_id=1000
energy_id=1000
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_spuelmaschine_energy_today_2"
value = FuncRestApi(url, token)
print("Schlafzimmer = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage Steckdose Schlafzimmer")
#Steckdose Wohnzimmer IT energy_id=1001
energy_id=1001
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_it_energy_today"
value = FuncRestApi(url, token)
print("IT = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage Steckdose Wohnzimmer IT")
#Steckdose Kuehlschrank energy_id=1002
energy_id=1002
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_spuelmaschine_energy_today_3"
value = FuncRestApi(url, token)
print("Kühlschrank = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage Steckdose Kuehlschrank")
#Steckdose Trockner energy_id=1003
energy_id=1003
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_trockner_energy_today"
value = FuncRestApi(url, token)
#print("Trockner = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage schaltsteckdose_tasmota_trockner_energy_today")
#Steckdose Waschmaschine energy_id=1004
energy_id=1004
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_waschmaschine_energy_today"
value = FuncRestApi(url, token)
print("Waschmaschine = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage schaltsteckdose_tasmota_waschmaschine_energy_today")
#Steckdose Spuehlmaschine energy_id=1005
energy_id=1005
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_spuelmaschine_energy_today"
value = FuncRestApi(url, token)
print("Spühlmaschine = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage schaltsteckdose_tasmota_spuelmaschine_energy_today")
#d1-mini-herd Stromzählerenergy_id=1006
energy_id=1006
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.d1_mini_herd_stromzahler"
value = FuncRestApi(url, token)
print("Herd = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage sensor.d1_mini_herd_stromzahler")
#energy_production_today id=2000
energy_id=2000
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.shelly3em_tasmota_sicherungskasten_energy_todaysumimport"
value = FuncRestApi(url, token)
print("EVU = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage shelly3em_tasmota_sicherungskasten_energy_todaysumimport")
#energy_production_today id=2001
energy_id=2001
value = 4711
url = "http://192.168.2.227:8123/api/states/sensor.schaltsteckdose_tasmota_trockner_energy_today"
value = FuncRestApi(url, token)
print("Solar = ", value, " kWh heute")
try:
kWhValue = float(value)
#FuncInsertEnergyData(energy_id, kWhValue, CurrentDatetime)
print("Gleitkommazahl")
except ValueError:
print("fehlerhafte Abfrage sensor.schaltsteckdose_tasmota_trockner_energy_today")
Herzliche Grüße
Jan