Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
ik zal binnenkort wel met men vragen hier terug komen verwacht ik
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
Heb je een indicatie wat het je opgebracht heeft; hoeveel verhoging van verbruik eigen opwek?MarcoPolet schreef op zaterdag 25 januari 2025 @ 20:42:
[...]
Beetje late reactie, maar ik had dit topic nog niet gezien. Ik gebruik al denk ik een jaar EMHASS en ben er erg blij mee, stuur ern mijn EV, zwembadpomp en zwembadverwarming mee aan.
Wil ook graag mn warmtepomp aansturen op maximaal veel PV-opwek.
"Improvement. It is the goal of life search" - Carl "Reaper" Shepards
Eigen verbruik was/is niet mijn hoogste doel, hij stuurt op kosten. En aangezien ik uiteindelijk meer verbruik dan opwek, kan ik alles salderen. De inkoop en verkoop prijs die ik EMHASS invoer zijn dus gelijk. Hij kijkt dus vooral naar de momenten dat de stroom goedkoop is, niet perse wanneer er opbrengst is. Natuurlijk ligt dat wel vaak min of meer gelijk, maar zeker niet altijd, met name richting eind van de middag.Reaper.JA2 schreef op donderdag 20 februari 2025 @ 08:59:
[...]
Heb je een indicatie wat het je opgebracht heeft; hoeveel verhoging van verbruik eigen opwek?
Wil ook graag mn warmtepomp aansturen op maximaal veel PV-opwek.
Als de saldering er af is dan zal ik de dan geldende prijzen moeten toepassen natuurlijk. Ook moet ik binnenkort denk ik iets anders gaan sturen; ik heb een thuisaccu met een omvormer waar ook panelen op kunnen. Nu gaan de panelen nog met hun eigen omvormer, maar die gaan straks naar de accu-omvormer. Dan kan ik dus met gelijkstroom laden, wat efficienter is. Ik moet nog uitvogelen hoe ik die optimalisatie het best in EMHASS kwijt kan.
(Edit: fyi, er is trouwens wel een instelling in EMHASS die self-consumption als uitgangspunt neemt)
[ Voor 4% gewijzigd door MarcoPolet op 20-02-2025 16:44 ]
Vanaf juni 2025 stappen Europese energiebeurzen, waaronder EPEX Spot voor Nederland, over op kwartierprijzen in plaats van uurprijzen. Een stap vooruit voor de energiemarkt – en natuurlijk gaat Tibber mee!
Momenteel gebruik ik EMHASS op uur-basis, wordt nog een werkje om dit naar kwartier te trekken, maar an sich wel mooi om weer wat nauwkeuriger te sturen.
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
Aansturing kan hier generiek dmv de SG (smart grid) interface (uit/normaal/capacity1/capacity2), of evt door heishamon (Panasonic J).
Optimaliseren voor PV is voor mij minder belangrijk. In november t/m februari gebruikt de WP 80% van het WP-jaartotaal, en eigen PV consumptie is dan al >90%. Daarnaast zit in de dynamische tarieven impliciet al een grote component van wanneer PV beschikbaar is.
Ik ben ermee bezig, maar heb het nog niet werkend gekregen. Ik vind de documentatie rondom deze functie nog niet geweldig, dus ik kom er nog niet echt verder mee helaas. Bij mijn pogingen krijg ik steeds een TypeError: unsupported operand type(s) for -: 'int' and 'NoneType' en ik heb helaas nog niet kunnen vinden wat ik fout doe.Thorsd schreef op maandag 10 maart 2025 @ 12:01:
Is er iemand die al een EMHASS implementatie heeft (of ermee bezig is) voor de aansturing van een full electric warmtepomp icm dynamische tarieven? Er lijkt een mooi deferrable load thermal model in te zitten.
Aansturing kan hier generiek dmv de SG (smart grid) interface (uit/normaal/capacity1/capacity2), of evt door heishamon (Panasonic J).
Optimaliseren voor PV is voor mij minder belangrijk. In november t/m februari gebruikt de WP 80% van het WP-jaartotaal, en eigen PV consumptie is dan al >90%. Daarnaast zit in de dynamische tarieven impliciet al een grote component van wanneer PV beschikbaar is.
Ik vind de waarden die ik moet gebruiken voor heating_rate en cooling_constant ook nog niet heel duidelijk. Ik had gehoopt dat ik daar achter zou kunnen komen door trial and error, maar het gaat bij mij vooral fout bij de errors
Dit is mijn payload voor de naive-npc-optim endpoint trouwens, mocht je daar wat aan hebben (of de fout spotten):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| {% set horizon = min(72, state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h') | length | int) %} {% set ns = namespace(temps=[]) %} {% for i in range(horizon) %} {% set ns.temps = ns.temps + [20.7] %} {% endfor %} { "load_cost_forecast": {{ state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h') | tojson }}, "prod_price_forecast": {{ state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h') | tojson }}, {% if state_attr('sensor.solcast_forecast_data', 'forecasts') != [] %}"pv_power_forecast": {{ state_attr('sensor.solcast_24hrs_forecast', 'forecasts')[:horizon] | tojson }},{% endif %} "prediction_horizon": {{ horizon | tojson }}, "soc_init": {{ (state_attr('sensor.battery_sim_zendure_hyper_2000_5_76_kwh', 'percentage') | float(0) / 100) | round(2) | tojson }}, "soc_final": 0.6, "def_load_config": [ {"thermal_config": { "heating_rate": 0.6, "cooling_constant": 0.4, "overshoot_temperature": 23, "start_temperature": 22, "desired_temperatures": {{ ns.temps | tojson }} } } ] } |
[ Voor 31% gewijzigd door Sicco92 op 10-03-2025 17:11 ]
Mijn doel is om per dag het benodigde verwarmingsvermogen te berekenen en dit zo gunstig mogelijk in te kopen (grondwarmtepomp welke zijn buffer opwarmt).
In de basis is dat het thermal model;
https://emhass.readthedocs.io/en/latest/thermal_model.html
Maar de parameter voor de warmte van 100 man ontbreekt. Wel de energieprijs, buitentemperatuur en gewenste binnentemperatuur.
Dankjewel, ik ben er zelf nog niet mee begonnen, en ga het tzt proberen. Maar wat betreft de fout: er wordt ergens geprobeerd een "NoneType" van een getal af te trekken. Ik zie geen "-" in je code, dus je zal ergens een variabele van NoneType doorgegeven aan een plek waar wel een getal-variabele verwacht wordt.Sicco92 schreef op maandag 10 maart 2025 @ 17:05:
[...]
Ik ben ermee bezig, maar heb het nog niet werkend gekregen. Ik vind de documentatie rondom deze functie nog niet geweldig, dus ik kom er nog niet echt verder mee helaas. Bij mijn pogingen krijg ik steeds een TypeError: unsupported operand type(s) for -: 'int' and 'NoneType' en ik heb helaas nog niet kunnen vinden wat ik fout doe.
Ik heb even in de documentatie en code gekeken, en de heating_rate is een variabele die aangeeft hoe snel de warmtebron de ruimte op kan warmen - zonder dat er thermische verliezen zijn - op nominaal vermogen. Ik was even in de war over de delta_t in de formule maar dat is de tijdsinterval (dus 1 uur) en niet het temperatuurverschil. De constante is dus inderdaad in graad per uur.Ik vind de waarden die ik moet gebruiken voor heating_rate en cooling_constant ook nog niet heel duidelijk. Ik had gehoopt dat ik daar achter zou kunnen komen door trial and error, maar het gaat bij mij vooral fout bij de errors
De cooling_rate geeft aan hoeveel de ruimte afkoelt doordat het buiten kouder is. De eenheid is graad per uur per graad verschil met de buitentemperatuur. Dus als de variabele 0.1 is, en het binnen 20 is en buiten 0, dan koelt de ruimte zonder verwarming 2 graden per uur af.
Klopt, en ik ben wat dichter bij de fout. De payload in het voorbeeld in de documentatie heeft ook nog een outdoor_temperature_forecast key. Ik dacht dat die optioneel was, want EMHASS kan zelf ook weersvoorspellingen ophalen.Thorsd schreef op maandag 10 maart 2025 @ 17:59:
[...]
Dankjewel, ik ben er zelf nog niet mee begonnen, en ga het tzt proberen. Maar wat betreft de fout: er wordt ergens geprobeerd een "NoneType" van een getal af te trekken. Ik zie geen "-" in je code, dus je zal ergens een variabele van NoneType doorgegeven aan een plek waar wel een getal-variabele verwacht wordt.
[
Blijkbaar is die in (mijn geval) niet optioneel, want als ik outdoor_temperature_forecast wel meegeef met een lijst even lang als mijn horizon, dan krijg ik geen foutmelding meer. Een stapje verder dus
Volgende horde is dat ik een Infeasible berekening krijg met de huidige config, maar ik gok dat dat ligt aan de random getallen die ik heb ingevuld.
Opstelling: lucht-water warmtepomp, PV en EV.
Ik wil graag dat Home Assistant achteruit kijkt en bepaalt hoeveel warmer de woonkamer is dan is ingesteld, dat zie ik als het effect van de zon. Dat wil ik over de 'solar forecast' leggen, om zo vooruit te kunnen kijken en te bepalen of de warmtepomp aan moet of dat de zon het huis voldoende verwarmt. En dat de warmtepomp pas aan gaat bij een ondergrens van ~18,5 bv.
Wat denken jullie van deze aanpak?
Hoe dit in YAML te vatten is een tweede
"Improvement. It is the goal of life search" - Carl "Reaper" Shepards
Ik probeer zo'n soort benadering handmatig nu het stookseizoen bijna klaar is. Maar dan wel met de aanpassing dat als ik verwacht dat het na de nacht op de ondergrens komt, ik overdag bij stook. Dat betekent soms 's avonds in de korte broek op de bankReaper.JA2 schreef op donderdag 20 maart 2025 @ 09:25:
Wil hier een iets andere benadering kiezen, wat wellicht interessant kan zijn voor de mensen hier.
Opstelling: lucht-water warmtepomp, PV en EV.
Ik wil graag dat Home Assistant achteruit kijkt en bepaalt hoeveel warmer de woonkamer is dan is ingesteld, dat zie ik als het effect van de zon. Dat wil ik over de 'solar forecast' leggen, om zo vooruit te kunnen kijken en te bepalen of de warmtepomp aan moet of dat de zon het huis voldoende verwarmt. En dat de warmtepomp pas aan gaat bij een ondergrens van ~18,5 bv.
Wat denken jullie van deze aanpak?
Hoe dit in YAML te vatten is een tweede
Dit gaat best ok, maar handmatig is flut natuurlijk. Ik heb gister EMHASS geïnstalleerd maar moet nu eerst even wachten tot de load sensor genoeg data heeft.
Ik was op zoek naar in eerste instantie een simpele automation blueprint die ik kon gaan gebruiken om o.b.v., de goedkoopste ENTSO-E prijzen enkele apparaten te gaan sturen. Toen kwam ik bij deze uit: https://www.creatingsmart...nt-0-2-0/#google_vignette.
Verder kwam ik deze ook nog tegen: https://flexmeasures.io (met deze HAS integratie: https://github.com/FlexMeasures/flexmeasures-ha-integration). Wat volgens mij de kern is waar het om draait, het maken van geoptimaliseerde schema's. Iemand ervaring met flexmeasures toevallig? Die lijkt me iets eenvoudiger dan EMHASS maar wellicht ben ik hier appels met peren aan het vergelijken.
Zelf heb ook de nodige zon-PV, idealiter wil ik de apparaten waar ik mijn verbruik van kan uitstellen (water-water warmtepomp met buffervaten, thuislaadpunt, wasmachine, droger, vaatwasser en hotfill boiler) (deferables) maximaal laten verbruiken als ik zelf opwek en mocht er nog aanvullend nodig zijn dan wanneer de prijs het laagste is (obs dynamische tarieven). Toen kwam ik op deze post uit. Zou dat theoretische mogelijk moeten zijn met EMHASS?
Groet en dank,
[ Voor 17% gewijzigd door desalnietemin op 29-03-2025 21:10 ]
Nibe F1145-15 EXP | PCM42 koeling | KV300 buffervat vloerverwarming | VPA300 boilervat | UKV20 500L buffervat zwembad + ELK9(kW) elek.backup element | POOL40 | 80L E-boiler | NibeGW voor HASS MODBUS koppeling | Zon-PV: 23,49 kWP + SE25K Solaredge omvormer
Ik denk dat dat wel kan, de vraag is denk ik meer hoeveel moeite het kost om zo'n systeem op te tuigen. Zowel EMHASS als Flexmeasures vind ik nog niet heel simpel voor thuisgebruik. Ik heb wat met EMHASS gespeeld, maar na een paar uurtjes was het wel duidelijk dat er nog wat meer tijd nodig is.desalnietemin schreef op zaterdag 29 maart 2025 @ 20:57:
Interessant topic. Dank voor het starten @RudolfR .
Ik was op zoek naar in eerste instantie een simpele automation blueprint die ik kon gaan gebruiken om o.b.v., de goedkoopste ENTSO-E prijzen enkele apparaten te gaan sturen. Toen kwam ik bij deze uit: https://www.creatingsmart...nt-0-2-0/#google_vignette.
Verder kwam ik deze ook nog tegen: https://flexmeasures.io (met deze HAS integratie: https://github.com/FlexMeasures/flexmeasures-ha-integration). Wat volgens mij de kern is waar het om draait, het maken van geoptimaliseerde schema's. Iemand ervaring met flexmeasures toevallig? Die lijkt me iets eenvoudiger dan EMHASS maar wellicht ben ik hier appels met peren aan het vergelijken.
Zelf heb ook de nodige zon-PV, idealiter wil ik de apparaten waar ik mijn verbruik van kan uitstellen (water-water warmtepomp met buffervaten, thuislaadpunt, wasmachine, droger, vaatwasser en hotfill boiler) (deferables) maximaal laten verbruiken als ik zelf opwek en mocht er nog aanvullend nodig zijn dan wanneer de prijs het laagste is (obs dynamische tarieven). Toen kwam ik op deze post uit. Zou dat theoretische mogelijk moeten zijn met EMHASS?
Groet en dank,
De AIO energy management Home assistent component lijkt me makkelijker te gebruiken. Ik zit nu aan iets redelijk simpels en deterministisch te denken om een WP aan te sturen. Bijvoorbeeld: De smart grid ingangen van de WP (uit, normaal, capacity1 (bv 120%), en capacity2 (bv 150%)), aansturen met HASS. Bij de hoogste prijs op de dag uit, bij de laagste prijs capacity 1, anders normaal (en evt bij veel PV beschikbaar capacity 2). De AIO energy management component kan hier wel iets bij betekenen.
Hi @Thorsd , ik ben benieuwd, dat lijkt wel een goed plan inderdaad. Ik ben benieuwd hoe jij je eigen opwek goed hierin meeneemt.Thorsd schreef op zondag 30 maart 2025 @ 12:37:
[...]
Ik denk dat dat wel kan, de vraag is denk ik meer hoeveel moeite het kost om zo'n systeem op te tuigen. Zowel EMHASS als Flexmeasures vind ik nog niet heel simpel voor thuisgebruik. Ik heb wat met EMHASS gespeeld, maar na een paar uurtjes was het wel duidelijk dat er nog wat meer tijd nodig is.
De AIO energy management Home assistent component lijkt me makkelijker te gebruiken. Ik zit nu aan iets redelijk simpels en deterministisch te denken om een WP aan te sturen. Bijvoorbeeld: De smart grid ingangen van de WP (uit, normaal, capacity1 (bv 120%), en capacity2 (bv 150%)), aansturen met HASS. Bij de hoogste prijs op de dag uit, bij de laagste prijs capacity 1, anders normaal (en evt bij veel PV beschikbaar capacity 2). De AIO energy management component kan hier wel iets bij betekenen.
Ik heb besloten om aan de slag te gaan met die flexmeasures aangezien er redelijk actief Development op is en toch nog wat eenvoudiger te doorgronden is dan EMHASS maar wel meer biedt dan die AIO energy management assistent component (omdat die laatste enkel prijs gebaseerd is en niet kijkt naar mijn eigen opgewekte zon-PV). Ik zal mijn ervaringen delen.
Groet
Nibe F1145-15 EXP | PCM42 koeling | KV300 buffervat vloerverwarming | VPA300 boilervat | UKV20 500L buffervat zwembad + ELK9(kW) elek.backup element | POOL40 | 80L E-boiler | NibeGW voor HASS MODBUS koppeling | Zon-PV: 23,49 kWP + SE25K Solaredge omvormer
Ja, laat het even weten waar je uitkomt. Misschien met een link naar een flexmeasures topicdesalnietemin schreef op zondag 30 maart 2025 @ 13:20:
[...]
Hi @Thorsd , ik ben benieuwd, dat lijkt wel een goed plan inderdaad. Ik ben benieuwd hoe jij je eigen opwek goed hierin meeneemt.
Ik heb besloten om aan de slag te gaan met die flexmeasures aangezien er redelijk actief Development op is en toch nog wat eenvoudiger te doorgronden is dan EMHASS maar wel meer biedt dan die AIO energy management assistent component (omdat die laatste enkel prijs gebaseerd is en niet kijkt naar mijn eigen opgewekte zon-PV). Ik zal mijn ervaringen delen.
Groet
Aansturing van de WP met de SG (smartgrid interface) door een Shelly Pro2 door HASS. Als HASS of de Shelly offline gaat gaan de uitgangen naar default door een script dat op de Shelly draait.
Day Ahead Optimizer: ervaringen met Home Assistant-addon DAO
Inmiddels heb ik de AIO energy management Home assistent component draaien en schakelt mijn hotfill boiler o.b.v. de 5 goedkoopste dagprijzen. Maar verder is het heel beperkt aangezien de integratie enkel naar de ENTSO-E prijzen kijkt. Die Day Ahead Optimizer zit er uitgebreider uit maar toch weer een stuk gebruiksvriendelijker dan EMHASS of Flexmeasures. Ik ga ermee aan de slag en zal mijn bevindingen in het DAO topic posten.
Groet
Nibe F1145-15 EXP | PCM42 koeling | KV300 buffervat vloerverwarming | VPA300 boilervat | UKV20 500L buffervat zwembad + ELK9(kW) elek.backup element | POOL40 | 80L E-boiler | NibeGW voor HASS MODBUS koppeling | Zon-PV: 23,49 kWP + SE25K Solaredge omvormer
Solar optimiser kijkt enkel naar (verwachte) zonopbrengst en gaat aan de hand daarvan je toestellen aansturen.
Ik maak gebruik van open-meteo (forecast met interval van 15 minuten) en moest ondermeer de voorbeeld scripts aanpassen.
Documentatie zoveel mogelijk doorgenomen, maar heb toch een paar vragen:
1. Waarom dagelijks een dao draaien als een mpc meer actuele info oplevert? Of is een dao nodig om een mpc te voeden met specifieke input?
2. Ik heb 32 enphase micro omvormers, moet ik deze 32x invoeren of kan dat makkelijker? Ik gebruik nu de default instellingen voor de panelen.
3. Ik heb 2 thuisaccu’s: kan ik beide afzonderlijk invoeren of moet ik er 1 grote accu van maken?
2. Ik heb mijn panelen in solcast gezet en ik stuur de verwachtingen daarvan naar EMHASS
3. VZIW is er een geen mogelijkheid om meerdere batterijen te configureren.
1. Ook ik weet dit niet precies, maar doe het ook, direct nadat de day-ahead nordpool prijzen bekend zijn gemaakt (zeg rond 13:30 's middags).diamanten schreef op zaterdag 14 juni 2025 @ 15:06:
Met dank aan jullie heb ik het inmiddels draaien! 😀
Ik maak gebruik van open-meteo (forecast met interval van 15 minuten) en moest ondermeer de voorbeeld scripts aanpassen.
Documentatie zoveel mogelijk doorgenomen, maar heb toch een paar vragen:
1. Waarom dagelijks een dao draaien als een mpc meer actuele info oplevert? Of is een dao nodig om een mpc te voeden met specifieke input?
2. Ik heb 32 enphase micro omvormers, moet ik deze 32x invoeren of kan dat makkelijker? Ik gebruik nu de default instellingen voor de panelen.
3. Ik heb 2 thuisaccu’s: kan ik beide afzonderlijk invoeren of moet ik er 1 grote accu van maken?
2. : als je in het configuratie scherm helemaal bovenaan, aan de rechterkant op de <> klikt, dan kun je de config ook bewerken in een soort text-editor. Dan kun je gemakkelijker bepaalde configs kopieren.
3. volgens mij idd ook niet. Je zou dit https://community.home-as...gement-for-home-assistant topic eens door kunnen spitten of daar de vraag stellen, is behoorlijk actief door o.a. de ontwikkelaars van EMHASS. Er is evt. ook nog een Discord channel.
Dat leek mij dus ook en ga vanaf nu alleen maar de MPC om de x minuten draaien.Sicco92 schreef op zondag 15 juni 2025 @ 19:48:
Ik doe elk kwartier een nieuwe MPC en daarna gelijk een publish, zodat ik altijd met de meest actuele gegevens een voorspelling maak. Dat vond ik zelf het makkelijkste. Ik doe niet nog eens extra een DAO, dus dat is helemaal niet nodig. Heel eerlijk zou ik het verschil tussen een MPC en een DAO niet eens kunnen noemen, behalve dat een MPC volgens mij meer inputs slikt.
Wel een vervolgvraag:
Ik zie nl diverse automations die deze optimalisatie alleen tussen XX.YY en ZZ.AA draaien. Het lijkt mij dat het zinvol is om de MPC gedurende de hele dag regelmatig te draaien. Zo heb je immers een zo actuele waarde van bijv. p_batt_forecast om je accu aan te sturen, of zie ik dat verkeerd?
Je kunt met regelmaat de MPC opnieuw uitvoeren, maar je kunt ook alleen een publish doen van de meest recente berekening.
Dat laatste moet volgens mij zelfs als de horizon van de MPC minder dan 5 periodes weg is.
Ik draai de MPC iedere minuut, voor de laatste actuele waardes van PV en p1, maar volgens mij is dat sub-optimaal, soms krijg ik daardoor onnodig veel aan/uit-schakelingen. (30 seconden opladen aan, bijv)
Ik heb geen EV of planbare deferrables, dus ik wil dat EMHASS snel reageert op veranderingen in verbruik en dat werkt niet echt goed.
Ja, de hele dag door inderdaad. In de nacht krijg ik ook nieuwe voorspellingen binnen van Solcast, dus dan kan die daar gelijk mee rekenen. Voor nu nog niet heel erg relevant, maar voor na 1 januari 2027 kan dat wel verschillen geven voor de gehele voorspelling (bijv. 's nachts nog stroom dumpen als de accu te vol zit en er plotseling toch een zonnige dag voorspeld wordt).diamanten schreef op maandag 16 juni 2025 @ 15:58:
[...]
Dat leek mij dus ook en ga vanaf nu alleen maar de MPC om de x minuten draaien.
Wel een vervolgvraag:draai je die MPC de gehele dag door om het kwartier?
Ik zie nl diverse automations die deze optimalisatie alleen tussen XX.YY en ZZ.AA draaien. Het lijkt mij dat het zinvol is om de MPC gedurende de hele dag regelmatig te draaien. Zo heb je immers een zo actuele waarde van bijv. p_batt_forecast om je accu aan te sturen, of zie ik dat verkeerd?
Daarnaast voor een kwartier gekozen zodat ik makkelijk over kan naar kwartierprijzen, als die ooit aangeboden worden.
Op mijn NUC duurt de MPC-berekening ongeveer 1 minuut trouwens, dus ik trap ze altijd 50 seconden voor het kwartier af zodat de nieuwe waarden gepublished worden net als het nieuwe kwartier start.
ok, ik draai de mpc nu elke 10 minuten. Ik probeer de cost function te doorgronden, dat is toch een indicatie van de optimalisatie: negatief is goed? Mijn grafiek van sensor.total_cost_fun_value zit er zo uit:RudolfR schreef op maandag 16 juni 2025 @ 16:32:
@diamanten
Je kunt met regelmaat de MPC opnieuw uitvoeren, maar je kunt ook alleen een publish doen van de meest recente berekening.
Dat laatste moet volgens mij zelfs als de horizon van de MPC minder dan 5 periodes weg is.
Ik draai de MPC iedere minuut, voor de laatste actuele waardes van PV en p1, maar volgens mij is dat sub-optimaal, soms krijg ik daardoor onnodig veel aan/uit-schakelingen. (30 seconden opladen aan, bijv)
Ik heb geen EV of planbare deferrables, dus ik wil dat EMHASS snel reageert op veranderingen in verbruik en dat werkt niet echt goed.
Dus pas 's avonds een gunstige cost function. Kunnen jullie een dergelijke grafiek ook plaatsen?
Ok, dank.MarcoPolet schreef op zaterdag 21 juni 2025 @ 08:13:
Negatief = negatief, dan kost het geld, positief levert geld op
Ik heb ook nog verder gezocht in het HA Emhass forum:
cost_profit = Σ (P_grid_pos * unit_load_cost) - Σ (P_grid_neg * unit_prod_price)
Waarbij:
P_grid_pos = verbruik uit het net
P_grid_neg = teruglevering aan het net
Als de opbrengsten (P_grid_neg * unit_prod_price) groter zijn dan de kosten (P_grid_pos * unit_load_cost), dan wordt cost_profit negatief.
Nb. het maakt mij niet uit wie gelijk heeft, alleen wil ik het snappen...
[ Voor 53% gewijzigd door diamanten op 21-06-2025 14:11 ]
Het is te warm om die formules na te rekenendiamanten schreef op zaterdag 21 juni 2025 @ 13:56:
[...]
Ok, dank.
Ik heb ook nog verder gezocht in het HA Emhass forum:
cost_profit = Σ (P_grid_pos * unit_load_cost) - Σ (P_grid_neg * unit_prod_price)
Waarbij:
P_grid_pos = verbruik uit het net
P_grid_neg = teruglevering aan het net
Als de opbrengsten (P_grid_neg * unit_prod_price) groter zijn dan de kosten (P_grid_pos * unit_load_cost), dan wordt cost_profit negatief.
Nb. het maakt mij niet uit wie gelijk heeft, alleen wil ik het snappen...
MarcoPolet schreef op zaterdag 21 juni 2025 @ 15:49:
[...]
Het is te warm om die formules na te rekenenmaar als ik de tabel in de EMHASS website bekijk, dan zie je daar duidelijk (bij mij in elk geval) dat als je te weinig productie hebt, de cost_fun_profit negatief is, en later op de dag, als er meer productie dan gebruik is, de cost_fun_profit positief wordt.
[Afbeelding]
Ok, ik zie inderdaad hetzelfde in mijn grafiek, alleen geen grote negatieve waarden (behalve -0.00 als mijn batterij bijspringt). Dat zou dus optimaal zijn voor mijn situatie?
[ Voor 3% gewijzigd door diamanten op 22-06-2025 13:18 ]
Doel is bij mij self-consumption. Dit werkt idd (nog) niet ideaal. Het verloop is vrij grillig en naar mijn idee wordt er (ook wel eens) geladen als er te weinig zon is of net andersom. De grafiek toont de sensor.p_batt_forecast waarden van afgelopen uren.MarcoPolet schreef op zondag 22 juni 2025 @ 14:01:
Welk doel heb je ingesteld in de configuratie? Bovenin bij de cost function. Ik heb die op profit staan, maar kan bv. ook op self-consumption. Als je dat laatste doet dan denk ik wel dat de sturing van EMHASS te langzaam is, je zou dat dan misschien moeten combineren met je accu zelf, dat die in de gaten houdt (met bv. CT klemmen) wat je gebruik/productie is, en zich daar op aanpast.
:no_upscale():strip_icc():strip_exif()/f/image/7jBHEEL3ZFAnZ28q0w92JTfD.jpg?f=user_large)
De MPC draait elke 5 minuten. Mijn accu kan ik wel via HA aansturen (koppeling met P1-meter die om de 10 seconden een update stuurt). Het exact volgen van sensor.p_batt_forecast waarde heb ik nu via scripts geregeld, maar ik denk dat het beter (en ook makkelijker) is als de accu NoM gaat werken bij een waarde van sensor.p_batt_forecast ongelijk 0. Dus eigenlijk een binaire mode: doe niets bij sensor.p_batt_forecast= 0 of als sensor.p_batt_forecast ongeljk 0: ga NoM laden/ontladen.
In onderstaande screenshot de belangrijkste parameters voor de batterij die bij elke MPC worden meegestuurd.
:no_upscale():strip_icc():strip_exif()/f/image/slp1XFCuwiHi1xUX81QlT39X.jpg?f=user_large)
Hoe hebben jullie dit ingeregeld?
[ Voor 26% gewijzigd door diamanten op 23-06-2025 12:38 ]
optie voor meerdere batterijen is er momenteel niet. Ik heb ze hier nu opgeteld (capaciteit en vermogens) en splits wat emhass berekend voor de batterij dan weer uit om beide batterijen apart aan te sturen met wat logica (prioriteit tussen stekkerbatterij en eentje met hybride omvormer, zorgen dat beide batterij wat gelijkmatig gebruikt worden maar dat er rekening gehouden wordt met mindere efficiëntie bij lage vermogens enz) .RudolfR schreef op zaterdag 14 juni 2025 @ 19:48:
1. Weet ik niet goed, doe ik ook. Volgens mij kan het ook met alleen de MPC.
2. Ik heb mijn panelen in solcast gezet en ik stuur de verwachtingen daarvan naar EMHASS
3. VZIW is er een geen mogelijkheid om meerdere batterijen te configureren.
2 aparte batterijen in emhass zou idd wel beter zijn.
https://github.com/davidusb-geek/emhass/discussions/544
ik bereken met een template een batterij control mode, deze is ofwel forcible charge, forcible discharge, do nothing of follow grid (NoM). Voor die laatste mode gebruik ik dan een aparte automatisatie om die NoM sturing te doen.diamanten schreef op maandag 23 juni 2025 @ 12:26:
[...]
Doel is bij mij self-consumption. Dit werkt idd (nog) niet ideaal. Het verloop is vrij grillig en naar mijn idee wordt er (ook wel eens) geladen als er te weinig zon is of net andersom. De grafiek toont de sensor.p_batt_forecast waarden van afgelopen uren.
[Afbeelding]
De MPC draait elke 5 minuten. Mijn accu kan ik wel via HA aansturen (koppeling met P1-meter die om de 10 seconden een update stuurt). Het exact volgen van sensor.p_batt_forecast waarde heb ik nu via scripts geregeld, maar ik denk dat het beter (en ook makkelijker) is als de accu NoM gaat werken bij een waarde van sensor.p_batt_forecast ongelijk 0. Dus eigenlijk een binaire mode: doe niets bij sensor.p_batt_forecast= 0 of als sensor.p_batt_forecast ongeljk 0: ga NoM laden/ontladen.
In onderstaande screenshot de belangrijkste parameters voor de batterij die bij elke MPC worden meegestuurd.
[Afbeelding]
Hoe hebben jullie dit ingeregeld?
Verder run ik hier de mpc optimiser elke 2 minuten.
Interessant, zou je die template voor de batterij control kunnen plaatsen? Ik ben benieuwd wanneer jij kiest voor forcible charge/discharge etc.scruysberghs schreef op zaterdag 28 juni 2025 @ 12:04:
[...]
ik bereken met een template een batterij control mode, deze is ofwel forcible charge, forcible discharge, do nothing of follow grid (NoM). Voor die laatste mode gebruik ik dan een aparte automatisatie om die NoM sturing te doen.
Verder run ik hier de mpc optimiser elke 2 minuten.
Momenteel gebruik ik onderstaande template, aan de lijst met ongebruikte waarden bovenaan kan je zien dat ik er al wat mee gespeeld heb om het helemaal te krijgen zoals ik wil. Oorspronkelijk probeerde ik de echte waarden van de sensoren er mee in te brengen maar nu mpc elke 2 minuten loopt volg ik toch vooral wat emhass berekend. Enkel voor NoM sturing gebrik ik dan sensorwaarden van de p1 meter of de NoM functie van de batterij als die bestaat (=als batterij een eigen grid meter heeft)diamanten schreef op zaterdag 28 juni 2025 @ 16:34:
[...]
Interessant, zou je die template voor de batterij control kunnen plaatsen? Ik ben benieuwd wanneer jij kiest voor forcible charge/discharge etc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| # ----------------
# TEMPLATE SENSORS
# ----------------
template:
- sensor:
- name: "EMHASS batcontrol mode"
unique_id: emhass_batcontrol_mode
icon: mdi:battery-heart-outline
state: >
{# Waarden ophalen #}
{% set p_hybrid = states('sensor.mpc_p_hybrid_inverter')| float(0) %}
{% set p_batt = states('sensor.mpc_p_batt_forecast') | float(0) %}
{% set p_load = states('sensor.mpc_p_load_forecast') | float(0) %}
{% set p_grid = states('sensor.mpc_p_grid_forecast') | float(0) %}
{% set p_curtail = states('sensor.mpc_p_pv_curtailment') | float(0) %}
{% set export = states('sensor.sec_pac_power_to_grid') | float(0) %}
{% set deferrables = states('sensor.mpc_p_deferrable0') | float(0)
+ states('sensor.mpc_p_deferrable1') | float(0)
+ states('sensor.mpc_p_deferrable2') | float(0)
+ states('sensor.mpc_p_deferrable3') | float(0) %}
{% set surplus = states('sensor.sec_surplus_power') | float(0) %}
{% set max_captar = states('input_number.sec_pac_doel_limiet_capaciteitspiek') | float(0) %}
{% set captar15 = states('sensor.sec_pac_extrapoleer_captar_kwartier') | float(0) %}
{# Bepaal modus #}
{% set mode = 'Do Nothing' %}
{# 1. Curtailment actief: batterij niet gebruiken zodat PV niet afgeschakeld moet worden #}
{% if p_curtail > 20 %}
{% set mode = 'Do Nothing' %}
{# 2. Netverbruik voorspeld als 0 → batterij mag gedrag afstemmen op netbalans #}
{% elif p_grid == 0 %}
{% set mode = 'Follow Grid' %}
{# 3. Netverbruik overschrijdt capaciteitstarieflimiet → piek afvlakken #}
{% elif p_grid > max_captar %}
{% set mode = 'Peak Shaving' %}
{# 4. EMHASS voorspelt laden → afdwingen #}
{% elif p_batt < -10 %}
{% set mode = 'Forcible Charge' %}
{# 5. EMHASS voorspelt ontladen → afdwingen #}
{% elif p_batt > 10 %}
{% set mode = 'Forcible Discharge' %}
{# 6. Standaardactie #}
{% else %}
{% set mode = 'Do Nothing' %}
{% endif %}
{{ mode }} |
Dqt geeft dqn zoiets:
:strip_exif()/f/image/h0Wr0YqQ75NPTDyvbstmbwy7.png?f=user_large)
En met de prijzen van vandaag maakt emhass er dit van:
/f/image/ayAbNoKgRhVeMVfgy3LP7DPo.png?f=fotoalbum_large)
Heb hier nu wel calculate_curtailment uitstaan in emhass omdat ik nog groene stroom certificaten krijg op deze installatie van 45c€/kWh. Anders zou de planning er wat anders uitzien
OK, dank voor je info.scruysberghs schreef op zondag 29 juni 2025 @ 10:35:
[...]
Momenteel gebruik ik onderstaande template, aan de lijst met ongebruikte waarden bovenaan kan je zien dat ik er al wat mee gespeeld heb om het helemaal te krijgen zoals ik wil. Oorspronkelijk probeerde ik de echte waarden van de sensoren er mee in te brengen maar nu mpc elke 2 minuten loopt volg ik toch vooral wat emhass berekend. Enkel voor NoM sturing gebrik ik dan sensorwaarden van de p1 meter of de NoM functie van de batterij als die bestaat (=als batterij een eigen grid meter heeft)
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46# ---------------- # TEMPLATE SENSORS # ---------------- template: - sensor: - name: "EMHASS batcontrol mode" unique_id: emhass_batcontrol_mode icon: mdi:battery-heart-outline state: > {# Waarden ophalen #} {% set p_hybrid = states('sensor.mpc_p_hybrid_inverter')| float(0) %} {% set p_batt = states('sensor.mpc_p_batt_forecast') | float(0) %} {% set p_load = states('sensor.mpc_p_load_forecast') | float(0) %} {% set p_grid = states('sensor.mpc_p_grid_forecast') | float(0) %} {% set p_curtail = states('sensor.mpc_p_pv_curtailment') | float(0) %} {% set export = states('sensor.sec_pac_power_to_grid') | float(0) %} {% set deferrables = states('sensor.mpc_p_deferrable0') | float(0) + states('sensor.mpc_p_deferrable1') | float(0) + states('sensor.mpc_p_deferrable2') | float(0) + states('sensor.mpc_p_deferrable3') | float(0) %} {% set surplus = states('sensor.sec_surplus_power') | float(0) %} {% set max_captar = states('input_number.sec_pac_doel_limiet_capaciteitspiek') | float(0) %} {% set captar15 = states('sensor.sec_pac_extrapoleer_captar_kwartier') | float(0) %} {# Bepaal modus #} {% set mode = 'Do Nothing' %} {# 1. Curtailment actief: batterij niet gebruiken zodat PV niet afgeschakeld moet worden #} {% if p_curtail > 20 %} {% set mode = 'Do Nothing' %} {# 2. Netverbruik voorspeld als 0 → batterij mag gedrag afstemmen op netbalans #} {% elif p_grid == 0 %} {% set mode = 'Follow Grid' %} {# 3. Netverbruik overschrijdt capaciteitstarieflimiet → piek afvlakken #} {% elif p_grid > max_captar %} {% set mode = 'Peak Shaving' %} {# 4. EMHASS voorspelt laden → afdwingen #} {% elif p_batt < -10 %} {% set mode = 'Forcible Charge' %} {# 5. EMHASS voorspelt ontladen → afdwingen #} {% elif p_batt > 10 %} {% set mode = 'Forcible Discharge' %} {# 6. Standaardactie #} {% else %} {% set mode = 'Do Nothing' %} {% endif %} {{ mode }}
Dqt geeft dqn zoiets:
[Afbeelding]
En met de prijzen van vandaag maakt emhass er dit van:
[Afbeelding]
Heb hier nu wel calculate_curtailment uitstaan in emhass omdat ik nog groene stroom certificaten krijg op deze installatie van 45c€/kWh. Anders zou de planning er wat anders uitzien
Jij stuurt dus niet alleen met p_batt, maar ook met p_grid en p_curtailment.
Wat doen jouw scripts 'Peak Shaving' en 'Follow Grid' precies qua aansturing van je batterij?
Ik stuur momenteel alleen met p_batt, maar ben nog aan het zoeken naar de optimale config.
Follow grid zet een automatisering aan die NoM sturing doet. Is wat afhankelijk van omvormer of batterij. Ofwel een loop elke paar seconden die (ont)laadvermogen zet ofwel aanezetten van en NoM functie van omvormer of batterij zelf als die zijn eigen grid/energie meter heeft.diamanten schreef op maandag 30 juni 2025 @ 08:26:
[...]
OK, dank voor je info.
Jij stuurt dus niet alleen met p_batt, maar ook met p_grid en p_curtailment.
Wat doen jouw scripts 'Peak Shaving' en 'Follow Grid' precies qua aansturing van je batterij?
Ik stuur momenteel alleen met p_batt, maar ben nog aan het zoeken naar de optimale config.
Peak Shaving doet een extrapolatie van het het verbruik naar het einde van het lopende kwartier. Als dat dreigt over een ingestelde limiet te gaan gaat die de batterij inschakelen. Deze overruled ook steeds alle andere sturingen
Wederom dank. Ik probeer eea verder te doorgronden, vandaar mijn vervolgvragen (scruysberghs schreef op maandag 30 juni 2025 @ 13:09:
[...]
Follow grid zet een automatisering aan die NoM sturing doet. Is wat afhankelijk van omvormer of batterij. Ofwel een loop elke paar seconden die (ont)laadvermogen zet ofwel aanezetten van en NoM functie van omvormer of batterij zelf als die zijn eigen grid/energie meter heeft.
Peak Shaving doet een extrapolatie van het het verbruik naar het einde van het lopende kwartier. Als dat dreigt over een ingestelde limiet te gaan gaat die de batterij inschakelen. Deze overruled ook steeds alle andere sturingen
Hoe werk je met 'curtailment'?
De EMHASS-manual is niet bijster uitgebreid hierover:
1
| compute_curtailment: Set to True to compute a special PV curtailment variable (Default False). |
Vraag: welke waarden kan deze variabele krijgen? Bij mij is deze nog nul (gisteren geactiveerd dus op True gezet).
Jij activeert een script als de waarde meer dan 20 is. Waarop is dat gebaseerd?
Ik heb zelf een Enphase PV. Ik kan de centrale unit (Envoy) aan of uitzetten met een HA-switch. Zou ik deze switch 'off' kunnen zetten als curtailment > 0 is?
Volgens mij is het evengoed een Wattage voor de hoeveelheid power die over is.
EMHASS heeft daar niks bruikbaars voor kunnen bedenken, geen gebruiker/batterij, dus tenzij je je omvormer knijpt gaat dat het net op.
Omvormer uitzetten is misschien zonde.
Ja, afknijpen is beter. Helaas kan dat niet met mijn Enphase PV (Envoy standard non-metered).RudolfR schreef op maandag 30 juni 2025 @ 18:37:
@diamanten
Volgens mij is het evengoed een Wattage voor de hoeveelheid power die over is.
EMHASS heeft daar niks bruikbaars voor kunnen bedenken, geen gebruiker/batterij, dus tenzij je je omvormer knijpt gaat dat het net op.
Omvormer uitzetten is misschien zonde.
[ Voor 3% gewijzigd door diamanten op 30-06-2025 19:27 ]
:strip_exif()/f/image/bq1gi8SV7eMZ6mVz6hkiarfC.jpg?f=fotoalbum_large)
Hierbij de code en graag jullie suggesties ter verbetering:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| - sensor:
- name: "EMHASS Uitleg Batterijactie Simpel"
unique_id: emhass_batt_action_reason_simpel
state: >
{% set batt = states('sensor.p_batt_forecast') | float(0) %}
{% set soc = states('input_number.dummy_soc') | float(0) %}
{% set min_soc = states('input_number.min_soc') | float(0) %}
{% set max_soc = states('input_number.max_soc') | float(100) %}
{% set net_power = states('sensor.gecombineerde_vermogenssensor') | float(0) %}
{% if batt == 0 %}
"⏳ Geen batterijactie gepland."
{% elif soc <= min_soc and batt > 0 %}
"🛑 Ontladen geblokkeerd: SoC te laag."
{% elif soc >= max_soc and batt < 0 %}
"🛑 Laden gestopt: batterij is vol."
{% elif batt > 0 %}
{% if net_power < -50 %}
"🔋 Ontladen: injectie naar net."
{% elif net_power >= -50 and net_power <= 50 %}
"🔋 Ontladen: in balans met verbruik."
{% else %}
"🔋 Ontladen: batterij dekt netverbruik."
{% endif %}
{% elif batt < 0 %}
{% if net_power < -50 %}
"⚡ Laden: eigen overschot benut."
{% elif net_power >= -50 and net_power <= 50 %}
"⚡ Laden: in balans met verbruik."
{% else %}
"⚡ Laden: via netstroom."
{% endif %}
{% else %}
"⚖️ Geen batterijactie."
{% endif %} |
[ Voor 3% gewijzigd door diamanten op 02-07-2025 16:43 ]
Ziet er leuk uit met die symbolen, maar ik zou liever een simpele tekst-state maken en de vormgeving aan de UI overlaten.
ik vind "net_" verwarrend in het engels, omdat het lijkt op 'netto', daarom kies ik voor 'grid'
1
2
3
4
5
| {% elif soc <= min_soc and batt > 0 %} "🛑 Ontladen geblokkeerd: SoC te laag." {% elif soc >= max_soc and batt < 0 %} "🛑 Laden gestopt: batterij is vol." |
Deze begrijp ik niet goed, emhass zal toch geen batt > 0 berekenen in periods waar de soc lager is dan min_soc?
En idem voor het laden?
Ook berekent EMHASS p_grid waar je uit af kunt leiden of er sprake is van terugleveren/afnemen.
Jouw template lijkt een soort mix tussen de prognose van EMHASS en de actuele werkelijkheid.
Volgens mij kun je dat beter los blijven zien.
Ook zie ik twee verschillende 'Geen batterijactie" met twee verschillende iconen, waarvan de tweede een weegschaal is, die ik zou verwachten bij de 'balans/net zero' modus.
Dank voor je feedback! Ik ga eea verder aanpassen.RudolfR schreef op vrijdag 4 juli 2025 @ 10:23:
@diamanten
Ziet er leuk uit met die symbolen, maar ik zou liever een simpele tekst-state maken en de vormgeving aan de UI overlaten.
ik vind "net_" verwarrend in het engels, omdat het lijkt op 'netto', daarom kies ik voor 'grid'
YAML:
1 2 3 4 5 {% elif soc <= min_soc and batt > 0 %} "🛑 Ontladen geblokkeerd: SoC te laag." {% elif soc >= max_soc and batt < 0 %} "🛑 Laden gestopt: batterij is vol."
Deze begrijp ik niet goed, emhass zal toch geen batt > 0 berekenen in periods waar de soc lager is dan min_soc?
En idem voor het laden?
Ook berekent EMHASS p_grid waar je uit af kunt leiden of er sprake is van terugleveren/afnemen.
Jouw template lijkt een soort mix tussen de prognose van EMHASS en de actuele werkelijkheid.
Volgens mij kun je dat beter los blijven zien.
Ook zie ik twee verschillende 'Geen batterijactie" met twee verschillende iconen, waarvan de tweede een weegschaal is, die ik zou verwachten bij de 'balans/net zero' modus.
Nb. ik controleer op min soc en max soc omdat ik mijn accu in deze testfase ook nog op een andere manier aanstuur.
Dingen zoals toestellen aan en uitschakelen op basis van verbruik, EV laten load balancen en solar excess verbruiken, etc..
Het lukt wel maar voelt wat onoverzichtelijk, 'tis erg moeilijk om schalende prioriteiten te doen, alles zit verdeeld over template sensors en automations, veel heen en weer springen, moeilijk overzicht..
Ik denk dat EMHASS wel de oplossing is, maar:
Ik draai op Synology in Docker, dus moet al weer een extra docker container opstarten. Ben sowieso geen fan van het idee dat EMHASS apart draait van HA, waarom is dit zo, heeft het echt voordelen, vinden jullie dat goed werkbaar? Het lijkt nogal een gedoe op het eerste zicht...
Ook heb ik dan nog eens bijzonder moeilijk toegang tot mijn maandelijkse stroomprijzen via API, moet al web-scraping gaan doen, en het lijkt alsof de prijzen pas de op het einde van de maand bekend zijn (neemt maandelijks gemiddeld EPEXDAM..) Maakt dit uit ?
Heb ook geen thuisbatterij, als dat uitmaakt.
Batterij is geen vereiste. Planbare loads dan des te meer, EV, boiler.
Hoe bedoel je "apart", als add-on? Of bij jou op aparte computers? Waarom voelt dat verkeerd?
Een EMS lijkt me een wezenlijk andere functie dan een domoticasysteem. Kan prima gescheiden via een API?
Apart als in aparte container om te updaten, in te stellen, dan ook nog ens zorgen dat het goed communiceert en synchroniseert (gaat naar mijn ervaring toch altijd wat mis). Vaak gebeurt er dan een update en werkt het plots niet meer samen. Ik heb zo al m'n Z-wave spul weg gedaan omdat ik het zo beu was dat zwave2mqtt stopte met werken bij zowat iedere update van Home Assistant die ik deed, werd er knettergek van.RudolfR schreef op vrijdag 1 augustus 2025 @ 13:34:
@Xoliul
Batterij is geen vereiste. Planbare loads dan des te meer, EV, boiler.
Hoe bedoel je "apart", als add-on? Of bij jou op aparte computers? Waarom voelt dat verkeerd?
Een EMS lijkt me een wezenlijk andere functie dan een domoticasysteem. Kan prima gescheiden via een API?
Als het allemaal in Home Assistant zit, dan werkt het gewoon meteen bij een update.
Tja, dan is de keuze voor het draaien van home assistant in docker (op Synology) voor jou misschien niet de juiste? Dan mis je de “add-on” functionaliteit (wat in feite ook docker containers zijn, maar dan meer onder stuur van home assistant zelf) en het gemak daarvan.Xoliul schreef op zaterdag 2 augustus 2025 @ 10:15:
[...]
Apart als in aparte container om te updaten, in te stellen, dan ook nog ens zorgen dat het goed communiceert en synchroniseert (gaat naar mijn ervaring toch altijd wat mis). Vaak gebeurt er dan een update en werkt het plots niet meer samen. Ik heb zo al m'n Z-wave spul weg gedaan omdat ik het zo beu was dat zwave2mqtt stopte met werken bij zowat iedere update van Home Assistant die ik deed, werd er knettergek van.
Als het allemaal in Home Assistant zit, dan werkt het gewoon meteen bij een update.
Voorheen probeerde om heel vaak de MPC te draaien om de actuele waarden van PV/P1 te gebruiken. Maar dat is tijdrovend en je loopt altijd achter de feiten aan.
Draai ik de MPC nu iedere 15 minuten en ik regel op basis van de P1 meter en de 'strategie' uit EMHASS, die ik bepaal mbv de berekende waardes, voor grid import en batterij.
Daardoor kan emhass zero_import/geen batterij berekend hebben, maar kan ik bij load toch de batterij bijschakelen.
Bijv. Als ik de was opzet op een zonnige dag. Gaat best goed.
Interessant, ik ben ook nog zoekende naar de meest efficiente aanpak. Ik draai nu de MPC elke 3 minuten.RudolfR schreef op dinsdag 5 augustus 2025 @ 20:03:
Inmiddels een andere aanpak gekozen met EMHASS.
Voorheen probeerde om heel vaak de MPC te draaien om de actuele waarden van PV/P1 te gebruiken. Maar dat is tijdrovend en je loopt altijd achter de feiten aan.
Draai ik de MPC nu iedere 15 minuten en ik regel op basis van de P1 meter en de 'strategie' uit EMHASS, die ik bepaal mbv de berekende waardes, voor grid import en batterij.
Daardoor kan emhass zero_import/geen batterij berekend hebben, maar kan ik bij load toch de batterij bijschakelen.
Bijv. Als ik de was opzet op een zonnige dag. Gaat best goed.
Betekent jouw aanpak: EMHASS voor de strategie en je P1-meter voor de operationele uitvoering? Kan je nog wat meer voorbeelden geven van een 'override'? Bijv. ga je ook opladen ondanks dat EMHASS dit niet adviseert? En zo ja, op basis van welke criteria?
Ja, dat is het inderdaad.
Ik heb net als jij een template sensor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| - sensor: - name: "EMHASS battery mode" unique_id: 2022603f-cb5a-4693-a70d-f0eef4b6883e icon: mdi:battery-heart-outline state: > {# Waarden ophalen #} {% set p_pv = states('sensor.p_pv')| float(0) %} {% set p_batt = states('sensor.p_batt_forecast') | float(0) %} {% set p_load = states('sensor.p_load_forecast') | float(0) %} {% set p_grid = states('sensor.p_grid_forecast') | float(0) %} {% set soc = states('sensor.athom_smart_plug_v3_50f110_jbd_bms_state_of_charge') | float(0) %} {# Bepaal modus #} {% set mode = 'idle' %} {% if p_batt < 0 %} {% set mode = 'charge' %} {% else %} {% if soc < 3 %} {% set mode = 'blocked' %} {% elif p_grid < 20 %} {% set mode = 'net_zero' %} {% else %} {% set mode = 'discharge' %} {% endif %} {% endif %} {{ mode }} |
In m'n automation heb ik een aantal variabelen, op basis van de modus.
1
2
3
4
5
6
| p_batt_forecast: > {{ states('sensor.p_batt_forecast') | float(0) }} p_batt_limit: > {{ iif(states('sensor.emhass_battery_mode') == 'discharge', p_batt_forecast, 650) }} p_batt_limit2: > {{ iif(states('sensor.emhass_battery_mode') == 'blocked', 0, p_batt_limit) }} |
Zodat ik bij 'net_zero' gewoon naar nul-op-de-meter kan sturen op basis van de P1-meter.
Zonder daarbij de waarde van EMHASS te gebruiken dus.
Opladen ook, daar gaat het overschot ook de batterij in, tenzij de SoC hoog is of EMHASS ook laden voorstelt.
1
2
3
4
5
6
7
8
9
10
| p_surplus: > {% set available_for_charging = -p_to_charger - p_to_grid + p_from_grid + p_from_battery %} {{ iif(available_for_charging > 0, 0, available_for_charging) }} p_batt: > {% set p_batt_fc = states('sensor.p_batt_forecast') | float(0) %} {% set battery_mode = states('sensor.emhass_battery_mode') %} {% set soc = states('sensor.athom_smart_plug_v3_50f110_jbd_bms_state_of_charge') | float(0) %} {% if battery_mode == 'charge' or soc > 95 %} {{ [p_surplus, p_batt_fc] | max }} {% endif %} |
Dat zal vast minder goed passen bij een dynamisch tarief, maar dat heb ik niet, dus ik wil alleen laden met PV.
Grappig, we zitten grotendeels op dezelfde lijn (althans volgens Chatgtp):RudolfR schreef op woensdag 6 augustus 2025 @ 10:41:
@diamanten
Ja, dat is het inderdaad.
Ik heb net als jij een template sensor:
YAML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - sensor: - name: "EMHASS battery mode" unique_id: 2022603f-cb5a-4693-a70d-f0eef4b6883e icon: mdi:battery-heart-outline state: > {# Waarden ophalen #} {% set p_pv = states('sensor.p_pv')| float(0) %} {% set p_batt = states('sensor.p_batt_forecast') | float(0) %} {% set p_load = states('sensor.p_load_forecast') | float(0) %} {% set p_grid = states('sensor.p_grid_forecast') | float(0) %} {% set soc = states('sensor.athom_smart_plug_v3_50f110_jbd_bms_state_of_charge') | float(0) %} {# Bepaal modus #} {% set mode = 'idle' %} {% if p_batt < 0 %} {% set mode = 'charge' %} {% else %} {% if soc < 3 %} {% set mode = 'blocked' %} {% elif p_grid < 20 %} {% set mode = 'net_zero' %} {% else %} {% set mode = 'discharge' %} {% endif %} {% endif %} {{ mode }}
In m'n automation heb ik een aantal variabelen, op basis van de modus.
YAML:
1 2 3 4 5 6 p_batt_forecast: > {{ states('sensor.p_batt_forecast') | float(0) }} p_batt_limit: > {{ iif(states('sensor.emhass_battery_mode') == 'discharge', p_batt_forecast, 650) }} p_batt_limit2: > {{ iif(states('sensor.emhass_battery_mode') == 'blocked', 0, p_batt_limit) }}
Zodat ik bij 'net_zero' gewoon naar nul-op-de-meter kan sturen op basis van de P1-meter.
Zonder daarbij de waarde van EMHASS te gebruiken dus.
Opladen ook, daar gaat het overschot ook de batterij in, tenzij de SoC hoog is of EMHASS ook laden voorstelt.
YAML:
1 2 3 4 5 6 7 8 9 10 p_surplus: > {% set available_for_charging = -p_to_charger - p_to_grid + p_from_grid + p_from_battery %} {{ iif(available_for_charging > 0, 0, available_for_charging) }} p_batt: > {% set p_batt_fc = states('sensor.p_batt_forecast') | float(0) %} {% set battery_mode = states('sensor.emhass_battery_mode') %} {% set soc = states('sensor.athom_smart_plug_v3_50f110_jbd_bms_state_of_charge') | float(0) %} {% if battery_mode == 'charge' or soc > 95 %} {{ [p_surplus, p_batt_fc] | max }} {% endif %}
Dat zal vast minder goed passen bij een dynamisch tarief, maar dat heb ik niet, dus ik wil alleen laden met PV.
Ik heb de modus template toegevoegd en ben nu aan het proefdraaien (zowel met vaste als dynamische tarieven).
Volgens mij heb ik alle parameters ingevuld die nodig zijn voor de berekening maar er klopt geen hout van de waarde die ik eruit krijg. PV opwek wordt al helemaal niet gezien, terwijl ik wel alle solcast waarden heb ingevuld. Ik weet dat de leercurve stijl is maar omdat ik ook maar 10 API calls per dag mag doen is het testen tot nu toe zonder positief resultaat gebleven. Ook met de info uit diverse fora raak ik niet wijzer.
Zie onderstaand mijn huidige configuratie. Daarnaast in HA config nog de solcast parameters ingevuld.
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119{ "adjusted_pv_regression_model": "LassoRegression", "adjusted_pv_solar_elevation_threshold": 10, "battery_charge_efficiency": 0.92, "battery_charge_power_max": 1200, "battery_discharge_efficiency": 0.92, "battery_discharge_power_max": 1200, "battery_dynamic_max": 0.9, "battery_dynamic_min": -0.9, "battery_maximum_state_of_charge": 0.99, "battery_minimum_state_of_charge": 0.1, "battery_nominal_energy_capacity": 5760, "battery_target_state_of_charge": 0.4, "compute_curtailment": false, "continual_publish": false, "costfun": "profit", "delta_forecast_daily": 1, "end_timesteps_of_each_deferrable_load": [ 0, 0 ], "historic_days_to_retrieve": 7, "inverter_is_hybrid": false, "load_cost_forecast_method": "hp_hc_periods", "load_forecast_method": "naive", "load_negative": false, "load_offpeak_hours_cost": 0.1419, "load_peak_hour_periods": { "period_hp_1": [ { "start": "02:54" }, { "end": "15:24" } ] }, "load_peak_hours_cost": 0.1907, "logging_level": "INFO", "lp_solver": "default", "lp_solver_path": "empty", "lp_solver_timeout": 45, "maximum_power_from_grid": 9000, "maximum_power_to_grid": 5500, "method_ts_round": "nearest", "minimum_power_of_deferrable_loads": [ 200, 200 ], "modules_per_string": [ 16 ], "nominal_power_of_deferrable_loads": [ 2000, 750 ], "num_threads": 0, "number_of_deferrable_loads": 2, "open_meteo_cache_max_age": 30, "operating_hours_of_each_deferrable_load": [ 4, 1 ], "optimization_time_step": 30, "photovoltaic_production_sell_price": 0.1419, "production_price_forecast_method": "constant", "pv_inverter_model": [ "Fronius_International_GmbH__Fronius_Primo_5_0_1_208_240__240V_" ], "pv_module_model": [ "CSUN_Eurasia_Energy_Systems_Industry_and_Trade_CSUN295_60M" ], "sensor_linear_interp": [ "sensor.actueel_verbruik_w" ], "sensor_power_load_no_var_loads": "sensor.actueel_verbruik_w", "sensor_power_photovoltaics": "sensor.total_pv_generation", "sensor_power_photovoltaics_forecast": "sensor.thuis", "sensor_replace_zero": [ "sensor.pv_power", "sensor.thuis" ], "set_battery_dynamic": false, "set_deferrable_load_single_constant": [ false, false ], "set_deferrable_startup_penalty": [ 0, 0 ], "set_nocharge_from_grid": false, "set_nodischarge_to_grid": false, "set_total_pv_sell": false, "set_use_adjusted_pv": false, "set_use_battery": true, "set_use_pv": false, "set_zero_min": true, "start_timesteps_of_each_deferrable_load": [ 0, 0 ], "strings_per_inverter": [ 1 ], "surface_azimuth": [ 205 ], "surface_tilt": [ 30 ], "treat_deferrable_load_as_semi_cont": [ true, true ], "weather_forecast_method": "solcast", "weight_battery_charge": 0, "weight_battery_discharge": 0 }
- onderaan de webpagina van EMHASS zie je het optimization result. Als dat anders is dan Optimal klopt er niets van. Weet niet wat er bij jou als uitkomst kwam (ik vermoed unfeasible oid), maar dan betekent dat meestal dat je onjuiste of tegenstrijdige parameters hebt doorgegeven.
- voor wat betreft solcast: ik gebruik daarvoor de HACS integratie (BJReplay / ha-solcast-solar), die werkt wel prettig, want dan kun je zelf aangeven hoe vaak hij de API mag gebruiken, dat verdeelt hij dan over de dag en tussenin geeft hij de vorige waarden terug, dan heb je dus geen last van de 10 calls max.
- waar ik erg veel baat bij gehad heb ik in HA de Developer Tools | Template pagina, daar kun je veel van de parameters die je runtime doorgeeft aan EMHASS evalueren of ze juist zijn
- de logs van EMHASS geven ook aardig wat info, hoewel ook wel eens een hele brei, waar moeilijk doorheen te lezen is. Vooral op zoek gaan naar de eerte fout die optrad
- je zou het leven nog iets gemakkelijker kunnen maken door bv. eerst zonder batterij en bv, naar 1 deferrable load te werken dan maak je het probleem mogelijk wat kleiner / gemakkelijker te doorgronden
- en verder: hou vol, als het eenmaal draait dan is 't erg mooi en stabiel
Bedankt voor de tips, ga ik in ieder geval naar kijken:MarcoPolet schreef op zaterdag 16 augustus 2025 @ 15:28:
Misschien een paar tips:
- onderaan de webpagina van EMHASS zie je het optimization result. Als dat anders is dan Optimal klopt er niets van. Weet niet wat er bij jou als uitkomst kwam (ik vermoed unfeasible oid), maar dan betekent dat meestal dat je onjuiste of tegenstrijdige parameters hebt doorgegeven.
- voor wat betreft solcast: ik gebruik daarvoor de HACS integratie (BJReplay / ha-solcast-solar), die werkt wel prettig, want dan kun je zelf aangeven hoe vaak hij de API mag gebruiken, dat verdeelt hij dan over de dag en tussenin geeft hij de vorige waarden terug, dan heb je dus geen last van de 10 calls max.
- waar ik erg veel baat bij gehad heb ik in HA de Developer Tools | Template pagina, daar kun je veel van de parameters die je runtime doorgeeft aan EMHASS evalueren of ze juist zijn
- de logs van EMHASS geven ook aardig wat info, hoewel ook wel eens een hele brei, waar moeilijk doorheen te lezen is. Vooral op zoek gaan naar de eerte fout die optrad
- je zou het leven nog iets gemakkelijker kunnen maken door bv. eerst zonder batterij en bv, naar 1 deferrable load te werken dan maak je het probleem mogelijk wat kleiner / gemakkelijker te doorgronden
- en verder: hou vol, als het eenmaal draait dan is 't erg mooi en stabiel
- Resultaat is Optimal dus dat gaat dan goed denk ik?
- Solcast gebruik ik ook op die manier. Dat werkt wel goed alleen nog problemen om het werkend te krijgen in EMHASS
- Ik snap niet precies wat je bedoelt met de runtime parameters maar ben wel bekend met de dev tools. Daar valt mogelijk dus nog wat te winnen
- Logs gaven voornamelijk solcast aan, al lijkt dit nu goed te gaan. Nu een probleem met var_no_loads sensor. Misschien moet ik even wachten totdat deze twee dagen aan historische data heeft. Mocht het dan nog niet lukken kom ik er uiteraard op terug.
- Beginnen met de basis had misschien wel handig geweest inderdaad. Mocht het niet lukken ga ik dit overwegen, want ik ga door tot het werkt
Even geduld dus.
Als je solcast vanuit EMHASS zelf wilt gebruiken dan moet je ook het solcast rooftop-id en de api-key meesturen. Als je nog steeds de HACS solcast integratie gebruikt, dan zou je eigenlijk csv moeten opgeven (althans, dat doe ik), en dan geef je in de aanroep van bv. de day-ahead call de pv-forecast mee:
zoiets:
"pv_power_forecast\": {{state_attr('sensor.solcast_48hrs_forecast_15minutes_interval_current_quarter', 'solar_power') }}
deze zal bij jou niet direct werken, omdat ik zelf vanuit de 30 minuten solcast een list gemaakt heb voor 15 minuten interval (als voorbereiding op de kwartier-prijzen vanaf oktober ergens).
Dat klikken is wel handig om e.e.a. te proberen, maar rechstreeks vanuit HA is gemakkelijker voor de latere termijn. Kan op meerdere manieren, ik definieer een curl commando in configuration.yaml (als een shell_command). Deze worden dan via automations aangeroepen.
Wat eerder al werd genoemd, het is een flinke leercurve
Dit idee:
1
| curl -i -H "Content-Type:application/json" -X POST -d '{"solcast_rooftop_id":"<your_system_id>","solcast_api_key":"<your_secret_api_key>"}' http://localhost:5000/action/dayahead-optim |
Zie ook de documentatie:
https://emhass.readthedoc...st/forecasts.html#solcast
Als voorbeeld, hier zijn een paar van mijn rest_commands:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| rest_command: emhass_dayahead_optim: url: http://localhost:5000/action/dayahead-optim method: post timeout: 300 content_type: 'application/json' payload: > { "load_cost_forecast": {{ state_attr('sensor.current_price_for_electricity_usage', 'upcoming_24_hours_emhass_1h') }}, "prod_price_forecast": {{ state_attr('sensor.current_price_for_electricity_return', 'upcoming_24_hours_emhass_1h') }}, "def_total_hours": {{ states('sensor.deferrable_loads') }} } emhass_npc_optim_with_pv_15m: url: http://localhost:5000/action/naive-mpc-optim method: post timeout: 300 payload: > {% set horizon = min(144, state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h_15min') | length | int) %} { "load_cost_forecast": {{ state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h_15min') | tojson }}, "prod_price_forecast": {{ state_attr('sensor.entsoe_prices_forecast_30', 'prices_36h_15min_return') | tojson }}, {% if state_attr('sensor.solcast_forecast_data', 'forecasts') != [] %}"pv_power_forecast": {{ state_attr('sensor.solcast_24hrs_forecast_15m', 'forecasts')[:horizon] | tojson }},{% endif %} "prediction_horizon": {{ horizon | tojson }}, "soc_init": {{ (states('sensor.hyper_2000_electric_level') | float(0) / 100) | round(2) | tojson }}, "soc_final": 0.6 } |
Ik vind het ook veel leesbaarder
Ik denk dat je dataset te beperkt is voor goede resultaten; zeker nu het weer verandert.
Met PV kreeg ik ook wel zoiets, maar met de load niet, ook niet over 30 dagen.
Dit heb ik opgelost door in Home Assistant een filter-sensor aan te maken die een moving_average heeft van 5 minuten. Die sensor gebruik ik nu in EMHASS, en dat geeft een veel rustiger én accurater beeld van mijn base-load.
1
2
3
4
5
6
7
8
9
| sensor: - platform: filter name: "Power load no var loads filter" unique_id: d2261339-79ee-4d0f-a225-bb7c3357da87 entity_id: sensor.power_load_no_var_loads filters: - filter: time_simple_moving_average window_size: "00:05" precision: 0 |
Ik heb dit geprobeerd maar dan krijg ik hetzelfde resultaat als dat ik gewoon de API key en rooftop ID invul in de configuratie. Nog steeds 0 PV_load....RudolfR schreef op donderdag 21 augustus 2025 @ 20:18:
@dennisdew16
Dit idee:
code:
1curl -i -H "Content-Type:application/json" -X POST -d '{"solcast_rooftop_id":"<your_system_id>","solcast_api_key":"<your_secret_api_key>"}' http://localhost:5000/action/dayahead-optim
Zie ook de documentatie:
https://emhass.readthedoc...st/forecasts.html#solcast
Goeie tip, heb het nu op debug gezet. Echter niks geks.MarcoPolet schreef op zondag 24 augustus 2025 @ 09:39:
Komt er in het EMHASS log nog iets interessants voorbij? Dat is vaak de eerste plek om dit soort dingen te onderzoeken. In de EMHASS config dan de logging level nog even op DEBUG zetten.
En misschien gebruik ik het verkeerd, maar als ik al zoiets simpels als onderstaand uitvoer:
1
| curl -i -H "Content-Type:application/json" -X POST -d '{"solcast_rooftop_id":"xxx","solcast_api_key":"xxx"}' http://192.168.1.xxx:5000/action/dayahead-optim |
Krijg ik geen foutmeldingen maar ook geen PV opwek te zien. En met de documentatie kom ik er ook niet echt uit. Ik heb echt het idee dat ik dingen over het hoofd zie of het dus niet goed gebruik maar ik kom er tot op heden weer niet uit...
Dat komt waarschijnlijk omdat je de andere parameters voor de dayahead er nu niet bij hebt?
Ik doe dat zo, maar ik geef pv_power_forecast zelf mee, jij zou dit vervangen door de settings voor solcast.
Via de web-ui kun je dit er in plakken (type 'Box') bij Input Runtime Parameters voordat je de dayahead uitvoert (via de knop in de UI)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| {"entity_save": true, "publish_prefix": "",
"battery_maximum_state_of_charge": 1, "battery_minimum_state_of_charge":
0.02, "battery_target_state_of_charge": 0.24,
"battery_discharge_power_max": 600, "battery_charge_power_max": 800.0,
"weather_forecast_cache": false, "pv_power_forecast": [0, 0, 0, 0, 0, 14,
265, 553, 815, 1061, 1265, 1486, 1632, 1801, 1933, 2014, 2059, 2080, 2076,
2058, 2006, 1925, 1807, 1666, 1493, 1296, 1093, 878, 631, 490, 406, 277,
117, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "load_cost_forecast":
[0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.26322,
0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322,
0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322,
0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322,
0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.25112,
0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112] } |
Maar goed, is de oplossing dan iets van een template sensor maken die elke dag die waarde ophaalt, of hoe doe jij het in de specifieke geval om de pv data te laden?
Dan nog een vraag over de input parameters: welke data moet hier perse in staan? Of zijn dit allemaal optionele parameters om de voorspelling nauwkeuriger te maken?
EMHASS kan dat ook doen, maar dan moet je in de gegevens van solcast meenemen als runtime parameters. (en pv_power_forecast weglaten)
Ik heb de solcast integratie in Home Assistant en die haalt de waardes op. Daarvan maak ik een array voor EMHASS, om mee te geven aan de day-ahead en MPC.
Met alleen solcast krijg ik een infeasible resultaat, maar dat kan ook de combinatie zijn van mijn standaard-instellingen. Ga dat niet te vaak doen, want dat kost me vast api-hits.
Hier is alleen een pv_power_forecast voldoende voor een goed resultaat:
{"pv_power_forecast":[0,0,0,0,0,14,265,553,815,1061,1265,1486,1632,1801,1933,2014,2059,2080,2076,2058,2006,1925,1807,1666,1493,1296,1093,878,631,490,406,277,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}, aangenomen dat die dan van solcast komt zou alleen de api-info voor solcast voldoende moeten zijn. Misschien zit je al aan je limiet en komt er geen data terug om mee te rekenen?
[ Voor 31% gewijzigd door RudolfR op 25-08-2025 16:00 ]
edit: heb nu onderstaand en dat lijkt enigzins te werken.
1
2
3
4
5
6
7
8
9
10
| rest_command:
emhass_dayahead_optim:
url: http://localhost:5000/action/dayahead-optim
method: post
timeout: 300
content_type: 'application/json'
payload: >
{
"pv_power_forecast": {{ states('sensor.pv_power_forecast') }}
} |
Maar betekend dit dus eigenlijk dat alles via rest commands moet lopen? Want dan snap ik waarom ie bij mij niks deed als ik alleen de standaard configuratie gebruik.
[ Voor 57% gewijzigd door dennisdew16 op 25-08-2025 17:15 ]
Ook als je straks een berekening hebt zul je met regelmaat een publish moeten aanroepen zodat HA de laatste waardes doorkrijgt (passend bij de huidige periode)
Tegenwoordig kun je alles wel meegeven als runtime parameter; eerder was dat niet zo en moest een deel worden ingesteld in de config van de addon.
Je kunt het nog steeds mixen. Settings die je niet meegeeft komen dan uit je standaard config. In de rest-call kunt je er er dan voor kiezen om een andere waarde mee te geven en de config te overrulen.
Ik zat dit ook eens te bekijken:Sicco92 schreef op vrijdag 22 augustus 2025 @ 11:16:
Die power load sensor was bij mij ook nog wel een dingetje met EMHASS. Ik heb er soms kleine piekjes in zitten van bijvoorbeeld de compressor van de koelkast of de keukenboiler. EMHASS extrapoleert die piekjes dan naar het hele kwartier, waardoor ik vaak een erg onrustige voorspelling kreeg. Nu maakt die load-voorspelling voor mij nog weinig uit, maar vanaf 2027 wordt die belangrijker omdat er dan vaker op NOM gedraaid moet gaan worden.
Dit heb ik opgelost door in Home Assistant een filter-sensor aan te maken die een moving_average heeft van 5 minuten. Die sensor gebruik ik nu in EMHASS, en dat geeft een veel rustiger én accurater beeld van mijn base-load.
YAML:
1 2 3 4 5 6 7 8 9 sensor: - platform: filter name: "Power load no var loads filter" unique_id: d2261339-79ee-4d0f-a225-bb7c3357da87 entity_id: sensor.power_load_no_var_loads filters: - filter: time_simple_moving_average window_size: "00:05" precision: 0
Vraag: een dergelijke sensor kan toch eigenlijk nooit '0' zijn vanwege het altijd aanwezige sluipverbruik?Sensor power loads with no variable loads:
The name of the household power consumption sensor in Watts from Home Assistant. The deferrable loads that we will want to include in the optimization problem should be subtracted from this sensor in HASS.
Nu is mijn sensor_power_load_no_var_loads namelijk vaak iets boven de '0' W is (ook met gebruik van bovenstaand filter), waarschijnlijk omdat mijn zonnepanelen (Enphase) slechts om de 60 seconden een update geven en dus niet in sync zijn met mijn P1-meter (om de 10 seconden).
Ik heb 's nachts een sluipverbruik van rond de 300W, dus eigenlijk is dat ook de minimale waarde van sensor_power_load_no_var_loads of zie ik dat verkeerd?
[ Voor 11% gewijzigd door diamanten op 01-09-2025 18:25 ]
Helpen kan altijd, ik zou eerst zelf beginnen met home assistant. Eerst je zonnepanelen toevoegen, P1-meter koppelen, smart sockets installeren, etc. Zo ben ik vorig jaar ook gestart.cnoobie schreef op vrijdag 5 september 2025 @ 17:17:
Dag allemaal, wow wat een kennis en ervaring zit hier. Mijn vraag is misschien een beetje offtopic. Kennen (of zijn) jullie mensen/bedrijven die dit soort toepassingen (home assistant als home energy management system met zonnepanelen, warmtepomp, laadpaal en toekomstige thuisbatterij) voor anderen in kunnen richten? Tegen betaling natuurlijk? Deze leercurve is mij te steil, maar ik wil niet afhankelijk worden van techbedrijven die over 5 jaar misschien niet meer bestaan of hun app ineens uitschakelen.
Anders ben je ook weer afhankelijk van een derde die iets heeft ingericht, wat niet helemaal helder is.
Ik ben het met @diamanten eens. Gewoon beginnen. Een EMS gebaseerd op zoiets als home assistant blijft je aandacht vragen. Dat is juist ook de kracht (steeds verder verbeteren) en hobby (je blijft betrokken bij je energie verbruik en hoe dat te optimaliseren). Het is geen kwestie van één keer installeren en instellen en jarenlang blijven draaien. Als je rustig de tijd neemt kun je de leercurve uitrekken en minder stijl maken. Als je dat toch niet aandurft, dan moet je je afvragen of deze route wel iets voor jou is. Alternatief kan iets als home wizard zijn. Een stuk toegankelijker en ook gericht op inzicht in verbruik en sturen op verbruik.cnoobie schreef op vrijdag 5 september 2025 @ 17:17:
Dag allemaal, wow wat een kennis en ervaring zit hier. Mijn vraag is misschien een beetje offtopic. Kennen (of zijn) jullie mensen/bedrijven die dit soort toepassingen (home assistant als home energy management system met zonnepanelen, warmtepomp, laadpaal en toekomstige thuisbatterij) voor anderen in kunnen richten? Tegen betaling natuurlijk? Deze leercurve is mij te steil, maar ik wil niet afhankelijk worden van techbedrijven die over 5 jaar misschien niet meer bestaan of hun app ineens uitschakelen.
[ Voor 35% gewijzigd door Xoliul op 10-09-2025 22:31 ]
Kan je niet gewoon een container opspinnen op basis van een image? Als je ghcr.io/davidusb-geek/emhass:0.13.4 gebruikt, dan heb je de laatste versie.Xoliul schreef op woensdag 10 september 2025 @ 22:27:
Ik zat wat verder te kijken of ik EMHASS eens kan testen, maar blijkbaar is EMHASS op Synology Docker redelijk out of date, iemand een oplossing voor?
Een oud collega van me heeft er zijn (deel)beroep van gemaakt: https://smartenergycontrol.be/over-ons/cnoobie schreef op vrijdag 5 september 2025 @ 17:17:
Dag allemaal, wow wat een kennis en ervaring zit hier. Mijn vraag is misschien een beetje offtopic. Kennen (of zijn) jullie mensen/bedrijven die dit soort toepassingen (home assistant als home energy management system met zonnepanelen, warmtepomp, laadpaal en toekomstige thuisbatterij) voor anderen in kunnen richten? Tegen betaling natuurlijk? Deze leercurve is mij te steil, maar ik wil niet afhankelijk worden van techbedrijven die over 5 jaar misschien niet meer bestaan of hun app ineens uitschakelen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| - name: "Solcast PV Forecast Power Series"
unique_id: solcast_pv_forecast_power_series
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: >
{% set forecast = state_attr('sensor.solcast_pv_forecast_forecast_tomorrow','detailedForecast') %}
{% if forecast %}
{# Show the first interval’s W value in state #}
{% set first = forecast[0].pv_estimate | float(0) %}
{{ ((first / 0.5) * 1000) | round(0) }}
{% else %}
0
{% endif %}
attributes:
forecast: >
{% set forecast = state_attr('sensor.solcast_pv_forecast_forecast_tomorrow','detailedForecast') %}
{% if forecast %}
{% set data = [] %}
{% for step in forecast %}
{% set w = ((step.pv_estimate | float(0)) / 0.5 * 1000) | round(0) %}
{% set rec = {"datetime": step.period_start, "value": w} %}
{% set data = data + [rec] %}
{% endfor %}
{{ data }}
{% else %}
[]
{% endif %} |
In m'n EMHASS config ziet het er nu zo uit:
1
2
3
4
| "pv_power_forecast": {
"method": "ha",
"entity_id": "sensor.solcast_pv_forecast_power_series"
}, |
Maar... ik zie in de grafiekjes na een daily optimize niks over een solar voorspelling... In de EMHASS logs:
1
2
3
4
5
6
7
8
| [2025-09-24 10:20:16 +0200] [25] [INFO] >> Performing dayahead optimization... [2025-09-24 10:20:16 +0200] [25] [INFO] Performing day-ahead forecast optimization [2025-09-24 10:20:16 +0200] [25] [INFO] Perform optimization for the day-ahead [2025-09-24 10:20:16 +0200] [25] [WARNING] Solver default unknown, using default [2025-09-24 10:20:16 +0200] [25] [INFO] Status: Optimal [2025-09-24 10:20:16 +0200] [25] [INFO] Total value of the Cost function = -1.70 [2025-09-24 10:20:16 +0200] [25] [INFO] Optimization status: Optimal [2025-09-24 10:20:17 +0200] [25] [INFO] >> Sending rendered template table data |
Iemand die dit werkend heeft en de correcte config heeft?
Ik loop een beetje achter met EMHASS, maar ik ben niet bekend met een pv_power_forecast method: "ha" en een entity_id die kan worden uitgelezen.
Ik ben gewend dat je die forecast moet meegeven als parameter in de rest-call.
Ik gebruik geen rest-call of automations, tot nu toe. Heb EMHASS als add-on draaien en druk vie de GUI op optimize. Config in /share/config.jsonRudolfR schreef op woensdag 24 september 2025 @ 10:38:
@zaphod_b
Ik loop een beetje achter met EMHASS, maar ik ben niet bekend met een pv_power_forecast method: "ha" en een entity_id die kan worden uitgelezen.
Ik ben gewend dat je die forecast moet meegeven als parameter in de rest-call.
Dit kun je zo in de 'Box' plakken voor een day-ahead, maar zoals gezegd, pv_power_forecast is een array, geen entity van HA.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| {"entity_save": true, "publish_prefix": "", "battery_maximum_state_of_charge": 1, "battery_minimum_state_of_charge": 0.02, "battery_target_state_of_charge": 0.13, "battery_discharge_power_max": 600, "battery_charge_power_max": 800.0, "weather_forecast_cache": false, "pv_power_forecast": [0, 0, 0, 0, 0, 0, 0, 133, 672, 949, 1240, 1430, 1616, 1780, 1836, 1873, 1853, 1823, 1748, 1648, 1598, 1577, 1485, 1330, 1145, 929, 717, 480, 315, 160, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "load_cost_forecast": [0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.26322, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112, 0.25112] } |
Ik gebruik het ook, werkt erg goed, maar wel een flink steile leercurve, hoewel er inmiddels ook behoorlijk goede documentatie is. En een vrij actief forum. En hier bij tweakers krijg je ook vast hulp :-)ZatarraNL schreef op zondag 28 december 2025 @ 17:40:
Ik overweeg me te gaan verdiepen in emhass. Wie gebruikt dit nog? Of zijn er nog alternatieven?
Nog beginnertips?
[ Voor 3% gewijzigd door ZatarraNL op 28-12-2025 19:11 ]
een alternatief: Day Ahead Optimizer: ervaringen met Home Assistant-addon DAOZatarraNL schreef op zondag 28 december 2025 @ 17:40:
Ik overweeg me te gaan verdiepen in emhass. Wie gebruikt dit nog? Of zijn er nog alternatieven?
Gasloos 2019 + WP Panasonic H-serie 7kW + 300 liter boilervat + PV 12.415Wp + Home Assistant + Hyundai Ioniq 6 First Edition + Zaptec laadpaal
/f/image/T83aB4abH0Q7XTYHrMaoBzV4.png?f=fotoalbum_large)
:strip_exif()/f/image/yB4rCf0Gef6pbnGnt3DE5ZuV.jpg?f=fotoalbum_large)