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