Konfiguration EOS in Homeassistant-Addon

Hallo,

ich versuche das Akkudoktor EOS als Homeassistant-Addon zum laufen zu bekommen, brauche aber etwas "Anschubhilfe".

Kurz zu meiner Motivation:
Ich habe 3 PV-Anlagen mit Insgesamt ca. 15 kWp und 25 kWh Akku (der demnächst auf 50 kWh Akku wächst). Der Großteil der Anlage fällt unter das Solarspitzengesetz. Trotz E-Auto speisen wir immer wieder viele kWh Strom "für lau" ins Netz ein. Hier wollen wir jetzt was ändern und werden ab kommenden Monat in die Direktvermarktung wechseln. Wir haben den Solar-Manager als EMS und HomeAssistant für die Auswertungen und ein paar Automatisierungen im Einsatz. Aktuell habe ich im HA ein Script was bei negativen Strompreisen morgen den Speicher leer macht und ihn erst wieder füllt, wenn der Strompreis negativ ist. Bisher hat das auch mehr oder weniger ausgereicht. Wenn wir jetzt aber in die Direktvermarktung gehen, dann brauchen wir schon eine bessere Logik als bei Sonnenaufgang den Speicher "leer" zu machen.
Alternative wäre etwas selbst zu entwickeln, wenn das EOS aber funktioniert wäre mir das viel lieber.

Aktueller Stand:
Ich hab das Add-On installiert und soweit HomeAssistant Sensoren gemappt dass zumindest die "Prediction"-Seite hoch kommt. Doch außer der Vorhersage des Strompreises sind alle anderen Charts leer, trotz dass ich PV-Sensoren und Load-Sensoren verknüpft habe (Konfiguration anbei).
In Tab "Plan" bekomme ich eine Fehlermeldung. Im Forum steht man solle updaten, aber ich habe schon die aktuelle Version des Add-Ons (0.3.0.dev2602241605859917):

Can not retrieve optimization solution from http://0.0.0.0:8503: 404 Client Error: Not Found for url: http://0.0.0.0:8503/v1/energy-management/optimization/solution,
Can not get the optimization solution.
Did you configure automatic optimization?

Ich habe ein noch Verständnisfragen bzgl. dem Rückweg der Vorschläge von EOS ins HA. In der Konfiguration steht zwar

Entity IDs for device (resource) instructions to be updated by EOS.
The device ids (resource ids) have to be prepended by 'sensor.eos_' to build the entity_id.
E.g. The instruction for device id 'battery1' becomes the entity_id 'sensor.eos_battery1'.

Welchen Typ müssen die Sensoren haben? Input kann es ja nicht sein, weil das ja dann nicht mit "sensor" anfängt.

Dann noch ein paar kleinere Punkte:

  • Bei den Batterien gibt es eine Aufzählung mit Charge-Rates. Wieso muss ich da alle möglichen Werte angeben? Meine Batterie unterstützt meines Wissens beliebige Watt-Werte
  • "feedintariff" Wie mappe ich hier die Einspeisevergütung. In Zukunft wäre das dann ja Epex-Spot
  • "pvforecast.planes" Mein planes hier PV-Modul? Was meint hier "userhorizon"?

Ich bin um jede Hilfe sehr dankbar! Ich hab die Doku-Seite schon gelesen, aber das hat mich leider auch nicht sehr viel weiter gebracht. Die Seite mit der HA-Integration ist für mich aktuell zu High-Level...

Meine Config sieht aktuell folgendermaßen aus (ich hab die Auflistung der Sensoren entfernt)

{
"adapter": {
"homeassistant": {
"config_entity_ids": null,
"device_instruction_entity_ids": null,
"device_measurement_entity_ids": null,
"eos_device_instruction_entity_ids": ,
"eos_solution_entity_ids": ,
"grid_export_emr_entity_ids": [
"sensor.shelly_pro_3em_export_energy_helper"
],
"grid_import_emr_entity_ids": [
"sensor.shelly_pro_3em_import_energy_helper"
],
"homeassistant_entity_ids": [
...
],
"load_emr_entity_ids": [
"sensor.wallbox_meter_reading",
"sensor.edv_energy",
"sensor.shelly_backofen_kochfeld_total_active_energy",
"sensor.shellyplus1pm_e86beae676a8_switch_0_energy",
"sensor.warmepumpe_energie",
"sensor.shelly_waschmaschine_energy",
"sensor.wohnzimmer_energy",
"sensor.arbeitszimmer_energy",
"sensor.shelly_plug_s_wischroboter_eg_wischroboter_eg_energy",
"sensor.gefrierschrank_energy",
"sensor.kuhlschrank_energy",
"sensor.mahroboter_energie",
"sensor.shelly_klima_wohnzimmer_kinderzimmer_klima_wohnzimmer_kinderzimmer_energieverbrauch",
"sensor.kuche_switch_0_energy",
"sensor.shelly_plug_s_wischroboter_og_energie",
"sensor.geschirrspulmaschine_energy",
"sensor.klimaanlage_schlafzimmer_switch_0_energy",
"sensor.klimaanlage_arbeitszimmer_switch_0_energy",
"sensor.e_bike_ladegerat_energy",
"sensor.shelly_plug_s_3d_drucker_3d_drucker_energy",
"sensor.aussensteckdosen_vorne_aussensteckdosen_vorne_energie"
],
"pv_production_emr_entity_ids": [
"sensor.zaunkraftwerk_energy",
"sensor.balkonkraftwerk_energy",
"sensor.dachkraftwerk_energie"
],
"solution_entity_ids": null
},
"nodered": {
"host": "127.0.0.1",
"port": 1880
},
"provider": [
"HomeAssistant"
],
"providers": [
"HomeAssistant",
"NodeRED"
]
},
"cache": {
"cleanup_interval": 300.0,
"subpath": "cache"
},
"database": {
"autosave_interval_sec": 10,
"batch_size": 100,
"compaction_interval_sec": 604800,
"compression_level": 9,
"initial_load_window_h": null,
"keep_duration_h": null,
"provider": "SQLite",
"providers": [
"LMDB",
"SQLite"
]
},
"devices": {
"batteries": [
{
"capacity_wh": 25600,
"charge_rates": [
0.0,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9,
1.0
],
"charging_efficiency": 0.88,
"device_id": "battery1",
"discharging_efficiency": 0.88,
"levelized_cost_of_storage_kwh": 0.0,
"max_charge_power_w": 10000.0,
"max_soc_percentage": 100,
"measurement_key_power_3_phase_sym_w": "battery1-power-3-phase-sym-w",
"measurement_key_power_l1_w": "battery1-power-l1-w",
"measurement_key_power_l2_w": "battery1-power-l2-w",
"measurement_key_power_l3_w": "battery1-power-l3-w",
"measurement_key_soc_factor": "battery1-soc-factor",
"measurement_keys": [
"battery1-soc-factor",
"battery1-power-l1-w",
"battery1-power-l2-w",
"battery1-power-l3-w",
"battery1-power-3-phase-sym-w"
],
"min_charge_power_w": 50.0,
"min_soc_percentage": 3
}
],
"electric_vehicles": [
{
"capacity_wh": 77000,
"charge_rates": [
0.0,
0.1,
0.2,
0.3,
0.4,
0.5,
0.6,
0.7,
0.8,
0.9,
1.0
],
"charging_efficiency": 0.88,
"device_id": "vehicle1",
"discharging_efficiency": 0.88,
"levelized_cost_of_storage_kwh": 0.0,
"max_charge_power_w": 11000.0,
"max_soc_percentage": 100,
"measurement_key_power_3_phase_sym_w": "vehicle1-power-3-phase-sym-w",
"measurement_key_power_l1_w": "vehicle1-power-l1-w",
"measurement_key_power_l2_w": "vehicle1-power-l2-w",
"measurement_key_power_l3_w": "vehicle1-power-l3-w",
"measurement_key_soc_factor": "vehicle1-soc-factor",
"measurement_keys": [
"vehicle1-soc-factor",
"vehicle1-power-l1-w",
"vehicle1-power-l2-w",
"vehicle1-power-l3-w",
"vehicle1-power-3-phase-sym-w"
],
"min_charge_power_w": 1600.0,
"min_soc_percentage": 10
}
],
"home_appliances": null,
"inverters": null,
"max_batteries": 1,
"max_electric_vehicles": 1,
"max_home_appliances": null,
"max_inverters": 3,
"measurement_keys": [
"battery1-soc-factor",
"battery1-power-l1-w",
"battery1-power-l2-w",
"battery1-power-l3-w",
"battery1-power-3-phase-sym-w",
"vehicle1-soc-factor",
"vehicle1-power-l1-w",
"vehicle1-power-l2-w",
"vehicle1-power-l3-w",
"vehicle1-power-3-phase-sym-w"
]
},
"elecprice": {
"charges_kwh": null,
"elecpricefixed": {
"time_windows": {
"windows":
}
},
"elecpriceimport": {
"import_file_path": null,
"import_json": null
},
"energycharts": {
"bidding_zone": "DE-LU"
},
"provider": "ElecPriceEnergyCharts",
"providers": [
"ElecPriceAkkudoktor",
"ElecPriceEnergyCharts",
"ElecPriceFixed",
"ElecPriceImport"
],
"vat_rate": 1.19
},
"ems": {
"interval": 300.0,
"mode": "OPTIMIZATION",
"startup_delay": 5.0
},
"feedintariff": {
"provider": "FeedInTariffFixed",
"provider_settings": {
"FeedInTariffFixed": null,
"FeedInTariffImport": null
},
"providers": [
"FeedInTariffFixed",
"FeedInTariffImport"
]
},
"general": {
"config_file_path": "/data/config/EOS.config.json",
"config_folder_path": "/data/config",
"config_save_interval_sec": 60,
"config_save_mode": "AUTOMATIC",
"data_folder_path": "/data",
"data_output_path": "/data/output",
"data_output_subpath": "output",
"latitude": 51.123,
"longitude": 9.335,
"timezone": "Europe/Berlin",
"version": "0.3.0.dev2602241605859917"
},
"load": {
"loadakkudoktor": {
"loadakkudoktor_year_energy_kwh": null
},
"loadimport": {
"import_file_path": null,
"import_json": null
},
"loadvrm": {
"load_vrm_idsite": 12345,
"load_vrm_token": "your-token"
},
"provider": "LoadAkkudoktor",
"providers": [
"LoadAkkudoktor",
"LoadAkkudoktorAdjusted",
"LoadVrm",
"LoadImport"
]
},
"logging": {
"console_level": "INFO",
"file_level": null,
"file_path": "/data/output/eos.log"
},
"measurement": {
"grid_export_emr_keys": [
"sensor.shelly_pro_3em_export_energy_helper"
],
"grid_import_emr_keys": [
"sensor.shelly_pro_3em_import_energy_helper"
],
"historic_hours": 17520,
"keys": [
"sensor.arbeitszimmer_energy",
"sensor.aussensteckdosen_vorne_aussensteckdosen_vorne_energie",
"sensor.balkonkraftwerk_energy",
"sensor.dachkraftwerk_energie",
"sensor.e_bike_ladegerat_energy",
"sensor.edv_energy",
"sensor.gefrierschrank_energy",
"sensor.geschirrspulmaschine_energy",
"sensor.klimaanlage_arbeitszimmer_switch_0_energy",
"sensor.klimaanlage_schlafzimmer_switch_0_energy",
"sensor.kuche_switch_0_energy",
"sensor.kuhlschrank_energy",
"sensor.mahroboter_energie",
"sensor.shelly_backofen_kochfeld_total_active_energy",
"sensor.shelly_klima_wohnzimmer_kinderzimmer_klima_wohnzimmer_kinderzimmer_energieverbrauch",
"sensor.shelly_plug_s_3d_drucker_3d_drucker_energy",
"sensor.shelly_plug_s_wischroboter_eg_wischroboter_eg_energy",
"sensor.shelly_plug_s_wischroboter_og_energie",
"sensor.shelly_pro_3em_export_energy_helper",
"sensor.shelly_pro_3em_import_energy_helper",
"sensor.shelly_waschmaschine_energy",
"sensor.shellyplus1pm_e86beae676a8_switch_0_energy",
"sensor.wallbox_meter_reading",
"sensor.warmepumpe_energie",
"sensor.warmepumpe_energie_warmwasserbetrieb",
"sensor.wohnzimmer_energy",
"sensor.zaunkraftwerk_energy"
],
"load_emr_keys": [
"sensor.wallbox_meter_reading",
"sensor.edv_energy",
"sensor.shelly_backofen_kochfeld_total_active_energy",
"sensor.warmepumpe_energie_warmwasserbetrieb",
"sensor.shellyplus1pm_e86beae676a8_switch_0_energy",
"sensor.warmepumpe_energie",
"sensor.shelly_waschmaschine_energy",
"sensor.wohnzimmer_energy",
"sensor.arbeitszimmer_energy",
"sensor.shelly_plug_s_wischroboter_eg_wischroboter_eg_energy",
"sensor.gefrierschrank_energy",
"sensor.kuhlschrank_energy",
"sensor.mahroboter_energie",
"sensor.shelly_klima_wohnzimmer_kinderzimmer_klima_wohnzimmer_kinderzimmer_energieverbrauch",
"sensor.kuche_switch_0_energy",
"sensor.shelly_plug_s_wischroboter_og_energie",
"sensor.geschirrspulmaschine_energy",
"sensor.klimaanlage_schlafzimmer_switch_0_energy",
"sensor.klimaanlage_arbeitszimmer_switch_0_energy",
"sensor.e_bike_ladegerat_energy",
"sensor.shelly_plug_s_3d_drucker_3d_drucker_energy",
"sensor.aussensteckdosen_vorne_aussensteckdosen_vorne_energie"
],
"pv_production_emr_keys": [
"sensor.zaunkraftwerk_energy",
"sensor.balkonkraftwerk_energy",
"sensor.dachkraftwerk_energie"
]
},
"optimization": {
"algorithm": "GENETIC",
"genetic": {
"generations": 400,
"individuals": 300,
"penalties": {
"ac_charge_break_even": 1.0,
"ev_soc_miss": 10
},
"seed": null
},
"horizon": 24,
"horizon_hours": 24,
"interval": 3600,
"keys":
},
"prediction": {
"historic_hours": 48,
"hours": 48
},
"pvforecast": {
"max_planes": 3,
"planes": [
{
"albedo": null,
"inverter_model": null,
"inverter_paco": 10000,
"loss": 14.0,
"module_model": null,
"modules_per_string": null,
"mountingplace": "free",
"optimal_surface_tilt": false,
"optimalangles": false,
"peakpower": 5.0,
"pvtechchoice": "crystSi",
"strings_per_inverter": null,
"surface_azimuth": 170.0,
"surface_tilt": 7.0,
"trackingtype": null,
"userhorizon": [
20.0,
27.0,
22.0,
20.0
]
},
{
"albedo": null,
"inverter_model": null,
"inverter_paco": 10000,
"loss": 14.0,
"module_model": null,
"modules_per_string": null,
"mountingplace": "free",
"optimal_surface_tilt": false,
"optimalangles": false,
"peakpower": 4.8,
"pvtechchoice": "crystSi",
"strings_per_inverter": null,
"surface_azimuth": 90.0,
"surface_tilt": 7.0,
"trackingtype": null,
"userhorizon": [
30.0,
30.0,
30.0,
50.0
]
},
{
"albedo": null,
"inverter_model": null,
"inverter_paco": 2000,
"loss": 14.0,
"module_model": null,
"modules_per_string": null,
"mountingplace": "free",
"optimal_surface_tilt": false,
"optimalangles": false,
"peakpower": 1.4,
"pvtechchoice": "crystSi",
"strings_per_inverter": null,
"surface_azimuth": 140.0,
"surface_tilt": 60.0,
"trackingtype": null,
"userhorizon": [
60.0,
30.0,
0.0,
30.0
]
},
{
"albedo": null,
"inverter_model": null,
"inverter_paco": 1400,
"loss": 14.0,
"module_model": null,
"modules_per_string": null,
"mountingplace": "free",
"optimal_surface_tilt": false,
"optimalangles": false,
"peakpower": 1.6,
"pvtechchoice": "crystSi",
"strings_per_inverter": null,
"surface_azimuth": 185.0,
"surface_tilt": 45.0,
"trackingtype": null,
"userhorizon": [
45.0,
25.0,
30.0,
60.0
]
}
],
"planes_azimuth": [
170.0,
90.0,
140.0,
185.0
],
"planes_inverter_paco": [
10000.0,
10000.0,
2000.0,
1400.0
],
"planes_peakpower": [
5.0,
4.8,
1.4,
1.6
],
"planes_tilt": [
7.0,
7.0,
60.0,
45.0
],
"planes_userhorizon": [
[
20.0,
27.0,
22.0,
20.0
],
[
30.0,
30.0,
30.0,
50.0
],
[
60.0,
30.0,
0.0,
30.0
],
[
45.0,
25.0,
30.0,
60.0
]
],
"provider": "PVForecastAkkudoktor",
"provider_settings": {
"PVForecastImport": null,
"PVForecastVrm": null
},
"providers": [
"PVForecastAkkudoktor",
"PVForecastVrm",
"PVForecastImport"
]
},
"server": {
"eosdash_host": "0.0.0.0",
"eosdash_port": 8504,
"eosdash_supervise_interval_sec": 10,
"host": "0.0.0.0",
"port": 8503,
"reload": false,
"run_as_user": "eos",
"startup_eosdash": true,
"verbose": false
},
"utils": {},
"weather": {
"provider": "OpenMeteo",
"provider_settings": {
"WeatherImport": null
},
"providers": [
"BrightSky",
"ClearOutside",
"OpenMeteo",
"WeatherImport"
]
}
}

Vielen Dank schon mal!

Gruß Tobi

Kann dir da nicht helfen, aber die Anzahl der Werte ist schon enorm, muss man die alle selber eintragen?

Hallo,
die Frage habe ich mir auch gestellt, was man wirklich braucht für eine erstes, funktionsfähiges Setup...

Gruß Tobi

1 „Gefällt mir“

Hi Tobias,

ich hab ähnliche Bedingungen (2 PV Anlagen mit insgesamt 15kWp)
Mit beiden Anlagen habe ich auf die EEG verzichtet, weil ich eine Anlage KfW gefördert bekommen habe. Somit ging bei mir alles für lau ins Netz.
Ich hab mich daher früh um Direktvermarktung gekümmert und bin bereits seit letztem Jahr August in der Direktvermarktung. Gestartet war ich mit 2 Akkupacks und gesamt ~28 kWh Akku und habe mittlerweile auf 6 Packs mit ~84kWh aufgestockt.
Das erlaubt es mir, dass nahezu kein Strom ungeplant ins Netz geht. (im Peak hab ich knapp über 100kWh an einem guten Tag, nach Eigenverbrauch passt da meist alles in den Akku)

Als ich gestartet bin war das EOS leider noch nicht so weit und konnte dynamisch einspeisen.
Aktuell hab ich es noch nicht geschafft zu schauen ob es mittlerweile ginge.

Ich hab mir daher selbst was in Home Assistent gebaut, was möglichst einfach gehalten ist und dahingehend optimiert ist, den Akku jeden Tag auf einen Pegel knapp unter 100% zu laden.
ich berechne dafür zunächst den Überschuss aus Eigenverbrauchsprognose und PV-Prognose wie viel Strom ich am Folgetag zu viel habe.
Den Wert teile ich durch meine Einspeiseleistung (regelbar) damit bekomme die Dauer (Anzahl 15-min-Takte) wie lange ich einspeisen will.
Und im letzten schritt Prüfe ich die EPEX Strompreise und definiere die Uhrzeiten damit kostenoptimiert die entsprechende Dauer eingespeist wird.

Wenn das was für dich ist kann ich das gern mal bereitstellen.
Aber wenn du es mit EOS hinbekommst wär ich auch nicht abgeneigt. :slight_smile:

Gruß

Robert