[{"data":1,"prerenderedAt":700},["ShallowReactive",2],{"blog-home-assistant-ev-charging-energy-manager-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":32,"cover":45,"og":46,"expertise":47,"locales":48,"lang":50,"title":52,"description":53,"coverAlt":54,"metaTitle":55,"takeaways":56,"faq":63,"toc":73,"blocks":95,"others":486},"home-assistant-ev-charging-energy-manager","2026-09-29",9,"web",[9,10,11,12,13],"Home Assistant","EPEX Spot","Energy prices","Tesla","Energy management",[15,16,17,18,19,20,21,22],"EPEX Austria prices","spot tariff Austria EV charging","Home Assistant EV charging","cheapest hours charging","day-ahead price Austria","negative electricity prices Austria","Tesla charging spot prices","load management 3 phase",[24,27,29],{"name":25,"url":26},"EPEX SPOT","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEPEX_SPOT",{"name":9,"url":28},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHome_Assistant",{"name":30,"url":31},"Load management","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLoad_management",[33,36,39,42],{"title":34,"url":35},"aWATTar Austria: market data API","https:\u002F\u002Fwww.awattar.at\u002Fservices\u002Fapi",{"title":37,"url":38},"EPEX SPOT: market results","https:\u002F\u002Fwww.epexspot.com\u002Fen\u002Fmarket-results",{"title":40,"url":41},"Home Assistant developer docs: apps","https:\u002F\u002Fdevelopers.home-assistant.io\u002Fdocs\u002Fapps\u002F",{"title":43,"url":44},"Home Assistant: Tesla Fleet integration","https:\u002F\u002Fwww.home-assistant.io\u002Fintegrations\u002Ftesla_fleet\u002F","\u002Fimages\u002Fblog\u002Fhome-assistant-ev-charging-energy-manager\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fhome-assistant-ev-charging-energy-manager\u002Fog.jpg","vue-nuxt-developer",[49,50,51],"en","de","hu","Laden nach EPEX-Preisen in Österreich: was meine Home-Assistant-App spart","Ein Jahr stündlicher EPEX-Preise für Österreich, nachgespielt für einen Tesla und einen Boiler: Laden in den günstigsten Stunden kostet 6,5 statt 18,9 ct\u002FkWh, knapp 590 € im Jahr, ohne 20-A-Sicherung zu sprengen.","Titelbild: drei Balken vergleichen 18,9, 13,1 und 6,5 ct\u002FkWh für Laden um 18:00, über Nacht und in den günstigsten Stunden.","Laden nach EPEX-Preisen in Österreich · Balázs Csorba",[57,58,59,60,61,62],"EPEX Österreich, Okt 2025 bis Sep 2026: 14,3 ct\u002FkWh im Schnitt inkl. USt., 15,9 ct zwischen günstigster und teuerster Stunde eines Tages, 253 negative Stunden.","Ein Auto mit 2.500 kWh im Jahr in den günstigsten Stunden zu laden kostet 6,5 statt 18,9 ct\u002FkWh, etwa 311 € im Jahr.","Ein Boiler mit 6 kWh pro Tag spart etwa 278 € im Jahr gegenüber Heizen am Abend und 191 € gegenüber Nachtstrom.","Das Mittagstal durch Solarstrom bringt den Großteil der Ersparnis; nur über Nacht zu laden spart 145 €.","Ein Balkonspeicher spart etwa 8 ct pro kWh, die er aus einer günstigen Stunde in den Abend verschiebt.","Alle Verbraucher in dieselbe günstige Stunde zu legen braucht einen Phasenwächter; die App hält jede Phase unter 20 A.",[64,67,70],{"q":65,"a":66},"Wie viel spart man, wenn man ein E-Auto nach EPEX-Spotpreisen in Österreich lädt?","Mit den Preisen von Oktober 2025 bis September 2026 zahlte ein Auto mit 2.500 kWh im Jahr in den günstigsten Stunden des Tages 6,5 ct\u002FkWh (Spot plus USt.), gegenüber 18,9 ct beim Laden direkt nach dem Anstecken um 18:00. Das sind etwa 311 € im Jahr beim Energieanteil; Netzentgelte und Abgaben sind in beiden Fällen gleich.",{"q":68,"a":69},"Wann ist Strom in Österreich am günstigsten?","Von Frühling bis Herbst meist rund um Mittag, wenn Solarstrom den Markt flutet; 2025\u002F26 gab es 253 Stunden mit negativem Preis. Im Winter liegen die günstigsten Stunden meist in der Nacht, und der Abend ab 18:00 ist das ganze Jahr die teuerste Zeit.",{"q":71,"a":72},"Reicht ein Nachttimer für günstigen Strom?","Er hilft, aber wenig. Laden über Nacht kostete im Schnitt 13,1 ct\u002FkWh, gegenüber 6,5 ct in den günstigsten Stunden des ganzen Tages. Wer mit den veröffentlichten Preisen von heute und morgen plant, erwischt die Mittagstäler, die ein fester Timer verpasst.",[74,77,80,83,86,89,92],{"id":75,"title":76},"epex-austria-year","Ein Jahr EPEX-Preise für Österreich",{"id":78,"title":79},"what-shifting-saves","Was das Verschieben spart",{"id":81,"title":82},"cheapest-hours","Wie die App die Stunden wählt",{"id":84,"title":85},"fuse-limit","Günstige Stunden, ohne dass die Sicherung fliegt",{"id":87,"title":88},"dashboard","Die Preise im Blick",{"id":90,"title":91},"lessons","Was ich gelernt habe",{"id":93,"title":94},"sources","Quellen",[96,100,103,106,109,253,256,263,264,267,327,339,342,345,348,349,352,355,358,367,368,371,374,401,407,408,434,443,444,466,467],{"type":97,"content":98},"paragraph",[99],"Ich beziehe Strom über einen Spottarif, jede Stunde kostet also, was die EPEX-Day-Ahead-Auktion für Österreich sagt. In den letzten zwölf Monaten kostete dieselbe Kilowattstunde zwischen −59,6 und 71,1 ct (Spotpreis plus Umsatzsteuer). An einem durchschnittlichen Tag lagen die günstigste und die teuerste Stunde 15,9 ct auseinander. Diese Spanne ist das ganze Geschäftsmodell: Wenn die großen Verbraucher auf die günstigen Stunden warten können, sinkt die Rechnung, ohne dass eine einzige Kilowattstunde weniger verbraucht wird.",{"type":97,"content":101},[102],"Mein Haus hat drei Verbraucher, die warten können: einen Tesla, einen elektrischen Warmwasserboiler und einen Balkonspeicher (eine EET SolMate 3, die ich auf rund 16 kWh erweitert habe). Deshalb habe ich eine Home-Assistant-App gebaut, die sie in die günstigsten Stunden verschiebt und dabei jede Phase des 20-A-Anschlusses unter dem Limit hält. Dieser Beitrag zeigt, was das wert ist, gemessen an einem ganzen Jahr EPEX-Preisen für Österreich, und wie die App dorthin kommt.",{"type":104,"level":105,"id":75,"text":76},"heading",2,{"type":97,"content":107},[108],"Ich habe jeden stündlichen Day-Ahead-Preis für Österreich vom 29. September 2025 bis 28. September 2026 geholt, insgesamt 8.760 Stunden. Der Jahresschnitt lag bei 14,3 ct\u002FkWh inklusive Umsatzsteuer. Die Tabelle zeigt, wie der Tag Monat für Monat aussieht: das Mittel, den Schnitt der drei günstigsten Stunden jedes Tages, die Abendspitze von 18:00 bis 21:00 und die durchschnittliche Spanne zwischen günstigster und teuerster Stunde eines Tages.",{"type":110,"head":111,"rows":122},"table",[112,114,116,118,120],[113],"Monat",[115],"Tagesmittel",[117],"Günstigste 3 h",[119],"Abend 18–21",[121],"Tagesspanne",[123,134,145,156,167,177,188,199,210,221,231,242],[124,126,128,130,132],[125],"Okt 2025",[127],"13,1",[129],"8,4",[131],"18,2",[133],"13,3",[135,137,139,141,143],[136],"Nov 2025",[138],"13,9",[140],"10,0",[142],"16,2",[144],"9,5",[146,148,150,152,154],[147],"Dez 2025",[149],"13,7",[151],"10,9",[153],"15,3",[155],"6,6",[157,159,161,163,165],[158],"Jän 2026",[160],"17,0",[162],"12,1",[164],"19,6",[166],"11,0",[168,170,171,173,175],[169],"Feb 2026",[127],[172],"9,8",[174],"15,6",[176],"7,4",[178,180,182,184,186],[179],"Mär 2026",[181],"13,6",[183],"4,3",[185],"20,2",[187],"18,4",[189,191,193,195,197],[190],"Apr 2026",[192],"10,4",[194],"−0,3",[196],"16,4",[198],"19,3",[200,202,204,206,208],[201],"Mai 2026",[203],"12,0",[205],"0,7",[207],"19,0",[209],"21,9",[211,213,215,217,219],[212],"Jun 2026",[214],"12,8",[216],"3,8",[218],"19,7",[220],"22,4",[222,224,226,228,229],[223],"Jul 2026",[225],"14,1",[227],"5,1",[218],[230],"17,4",[232,234,236,238,240],[233],"Aug 2026",[235],"17,8",[237],"8,8",[239],"25,3",[241],"18,5",[243,245,247,249,251],[244],"Sep 2026",[246],"20,9",[248],"10,2",[250],"30,9",[252],"24,7",{"type":97,"content":254},[255],"Zwei Muster fallen auf. Von März bis September drückt der Solarstrom die Mittagspreise nach unten, oft unter null: Das Jahr hatte 253 Stunden mit negativem Preis (2,9 %), der tiefste Wert, −59,6 ct, lag am 1. Mai, einem Feiertag, um 13:00. Am Abend, wenn alle heimkommen und die Sonne weg ist, steigen die Preise, im September war der Abendschnitt dreimal so hoch wie die günstigsten Stunden. Im Winter ist der Tag flacher und es gibt weniger zu holen, aber auch dann liegen die günstigsten Stunden ein paar Cent unter dem Abend.",{"type":257,"variant":258,"title":259,"body":260},"callout","note","Was in den Zahlen steckt",[261],[262],"Die Preise sind die stündlichen EPEX-Day-Ahead-Ergebnisse für Österreich, wie aWATTar sie veröffentlicht, umgerechnet in ct\u002FkWh und mit 20 % Umsatzsteuer. Netzentgelte, Abgaben und der Aufschlag des Lieferanten fehlen absichtlich: Sie sind gleich, egal in welcher Stunde man verbraucht, und ändern daher nicht, was das Verschieben spart. Der Gesamtpreis pro kWh liegt über diesen Zahlen; die Unterschiede zwischen den Stunden sind echt.",{"type":104,"level":105,"id":78,"text":79},{"type":97,"content":265},[266],"Um Preise in Euro zu übersetzen, habe ich das Jahr Stunde für Stunde für zwei Verbraucher nachgespielt. Das Auto braucht 2.500 kWh im Jahr aus dem Netz (etwa 15.000 km), im Schnitt 6,8 kWh pro Tag, und lädt mit 12,4 kWh pro Stunde bei 20 A auf drei Phasen. Der Boiler braucht 6 kWh pro Tag bei 2 kW. Beide bekommen jeden Tag dieselbe Energie; nur die Stunden ändern sich.",{"type":110,"head":268,"rows":277},[269,271,273,275],[270],"Last",[272],"Wann sie läuft",[274],"ct\u002FkWh",[276],"Pro Jahr",[278,287,295,303,311,320],[279,281,283,285],[280],"Auto, 2.500 kWh\u002FJahr",[282],"sofort beim Anstecken um 18:00",[284],"18,9",[286],"472 €",[288,290,292,293],[289],"Auto",[291],"günstigste Stunden 18:00–07:00",[127],[294],"327 €",[296,297,299,301],[289],[298],"günstigste Stunden des Tages",[300],"6,5",[302],"161 €",[304,306,308,309],[305],"Boiler, 6 kWh\u002FTag",[307],"heizt ab 18:00",[218],[310],"431 €",[312,314,316,318],[313],"Boiler",[315],"klassischer Nachtstrom ab 22:00",[317],"15,7",[319],"344 €",[321,322,323,325],[313],[298],[324],"7,0",[326],"153 €",{"type":97,"content":328},[329,330,334,335,338],"Das Auto in den günstigsten Stunden statt direkt nach der Arbeit zu laden senkt seine Energiekosten von 18,9 auf 6,5 ct\u002FkWh, ",{"tag":331,"children":332},"strong",[333],"etwa 311 € im Jahr",". Der Boiler spart ",{"tag":331,"children":336},[337],"etwa 278 € im Jahr"," gegenüber dem Heizen am Abend, und immer noch 191 € gegenüber klassischem Nachtstrom. Zusammen sind das knapp 590 € im Jahr, allein beim Energieanteil der Rechnung.",{"type":97,"content":340},[341],"Der größte Gewinn kommt aus dem Mittagstal und hängt deshalb davon ab, dass das Auto zu Hause und angesteckt ist, wenn die Sonne scheint. Lädt es nur über Nacht, sinkt die Ersparnis auf 145 € im Jahr, denn die Nacht ist günstiger als der Abend, aber selten so günstig wie ein sonniger Mittag. Deshalb betrachtet der Plan heute und morgen zusammen, statt bis zum Morgen einen vollen Akku zu erzwingen.",{"type":97,"content":343},[344],"Beim Balkonspeicher ist die Frage eine andere: Er verschiebt Energie von einer günstigen in eine teure Stunde. In den günstigsten Stunden des Tages geladen, zahlte er im Schnitt 8,2 ct\u002FkWh, der Abend von 17:00 bis 23:00 lag bei 18,5 ct. Nach 90 % Wirkungsgrad hin und zurück spart jede verschobene Kilowattstunde etwa 8 ct, solange das Haus die Energie am Abend auch wirklich braucht.",{"type":97,"content":346},[347],"Eine SolMate allein speichert viel zu wenig, um einen ganzen Abend zu verschieben. Deshalb habe ich einen Zusatzakku direkt parallel zu ihrem internen Akku angeschlossen: 16 LiFePO4-Zellen mit 314 Ah, rund 16 kWh, verwaltet von einem JK-BMS V19 mit aktivem Balancer. Die SolMate weiß nichts von dem Akku, deshalb ist die App mit der echten Kapazität konfiguriert, wenn sie berechnet, wie viele günstige Stunden eine volle Ladung mit 2,5 kW braucht. Das ist ein Eigenbau, den der Hersteller nicht unterstützt; ich habe es auf eigenes Risiko gemacht.",{"type":104,"level":105,"id":81,"text":82},{"type":97,"content":350},[351],"Jeden Tag gegen 13:00 werden die Preise des nächsten Tages veröffentlicht. Der Plan beginnt mit der Energie, die das Auto braucht, der Lücke zwischen Akkustand und Ladelimit, und sortiert alle restlichen Stunden von heute plus alle von morgen nach Preis. Er nimmt die günstigsten, bis die Energie gedeckt ist. Es gibt keine Deadline: Ist morgen Mittag günstiger, wartet das Auto. Eine optionale Preisobergrenze streicht die Stunden darüber, und ein nicht angestecktes Auto bekommt heute keine Stunden, damit ein Auto auf der Straße den Boiler nicht umsonst blockiert.",{"type":353,"code":354},"code","needed_kwh = max(0.0, (target_pct - soc_pct) \u002F 100.0 * battery_kwh)\nper_hour_kwh = max_amps * voltage * 3.0 \u002F 1000.0 * EFFICIENCY  # 20 A → ~12.4 kWh\n\ncandidates = []\nif needed_kwh > NEEDED_MIN_KWH:\n    if plugged_in:  # an unplugged car gets no hours today\n        candidates += priced_hours(prices_today, range(now_hour, 24), \"today\")\n    candidates += priced_hours(prices_tomorrow, range(0, 24), \"tomorrow\")\n\ncandidates.sort(key=lambda c: c[1])  # cheapest first\nif max_price_ct is not None:\n    candidates = [c for c in candidates if c[1] \u003C= max_price_ct]\n# take cheapest hours until the energy is covered",{"type":97,"content":356},[357],"Der Boiler folgt seinem eigenen täglichen Fenster günstiger Stunden, und der Balkonspeicher lädt in den günstigsten Stunden bis zu seiner eigenen Grenze (standardmäßig 25 ct) aus dem Netz, geplant aus seinem aktuellen Akkustand mit 2,5 kW. Solange Auto oder Boiler mit günstigem Strom laufen, soll der Speicher nicht entladen; er hebt seine Energie für den teuren Abend auf.",{"type":359,"attrs":360,"inner":364,"caption":365},"diagram",{"viewBox":361,"role":362,"aria-labelledby":363},"0 0 720 330","img","d-ha-t d-ha-d","\u003Ctitle id=\"d-ha-t\">Eingänge, die Steuerung und was sie schaltet\u003C\u002Ftitle>\u003Cdesc id=\"d-ha-d\">Vier Eingänge speisen die Steuerung, die alle zehn Sekunden läuft: der dreiphasige Stromzähler, die Tesla-Integration, die stündlichen Spotpreise und der Balkonspeicher. Die Steuerung schreibt drei Ausgänge: Ladeschalter und Ladestrom des Autos, den Boiler-Schalter und die Ladeleistung des Speichers. Das Dashboard liest die Zusammenfassung der Steuerung.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"ah-ha\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"20\" y=\"20\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"105\" y=\"46\" text-anchor=\"middle\" class=\"d-text\">Stromzähler\u003C\u002Ftext>\u003Ctext x=\"105\" y=\"66\" text-anchor=\"middle\" class=\"d-small\">3 Phasen, Ampere\u003C\u002Ftext>\u003Cpath d=\"M190 50L278 164\" class=\"d-line\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"20\" y=\"96\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"105\" y=\"122\" text-anchor=\"middle\" class=\"d-text\">Tesla\u003C\u002Ftext>\u003Ctext x=\"105\" y=\"142\" text-anchor=\"middle\" class=\"d-small\">SoC, angesteckt\u003C\u002Ftext>\u003Cpath d=\"M190 126L278 164\" class=\"d-line\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"20\" y=\"172\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"105\" y=\"198\" text-anchor=\"middle\" class=\"d-text\">Spotpreise\u003C\u002Ftext>\u003Ctext x=\"105\" y=\"218\" text-anchor=\"middle\" class=\"d-small\">heute + morgen\u003C\u002Ftext>\u003Cpath d=\"M190 202L278 164\" class=\"d-line\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"20\" y=\"248\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"105\" y=\"274\" text-anchor=\"middle\" class=\"d-text\">SolMate\u003C\u002Ftext>\u003Ctext x=\"105\" y=\"294\" text-anchor=\"middle\" class=\"d-small\">SoC, Einspeisung\u003C\u002Ftext>\u003Cpath d=\"M190 278L278 164\" class=\"d-line\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"280\" y=\"124\" width=\"160\" height=\"80\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"360\" y=\"160\" text-anchor=\"middle\" class=\"d-text\">Steuerung\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"182\" text-anchor=\"middle\" class=\"d-small\">alle 10 s\u003C\u002Ftext>\u003Cpath d=\"M440 164L528 74\" class=\"d-line-accent\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"530\" y=\"44\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"615\" y=\"70\" text-anchor=\"middle\" class=\"d-text\">Auto\u003C\u002Ftext>\u003Ctext x=\"615\" y=\"90\" text-anchor=\"middle\" class=\"d-small\">Start \u002F Stopp, A\u003C\u002Ftext>\u003Cpath d=\"M440 164L528 164\" class=\"d-line-accent\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"530\" y=\"134\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"615\" y=\"160\" text-anchor=\"middle\" class=\"d-text\">Boiler\u003C\u002Ftext>\u003Ctext x=\"615\" y=\"180\" text-anchor=\"middle\" class=\"d-small\">ein \u002F aus\u003C\u002Ftext>\u003Cpath d=\"M440 164L528 254\" class=\"d-line-accent\" marker-end=\"url(#ah-ha)\" \u002F>\u003Crect x=\"530\" y=\"224\" width=\"170\" height=\"60\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"615\" y=\"250\" text-anchor=\"middle\" class=\"d-text\">Speicher\u003C\u002Ftext>\u003Ctext x=\"615\" y=\"270\" text-anchor=\"middle\" class=\"d-small\">Ladeleistung\u003C\u002Ftext>",[366],"Die Steuerung liest alle zehn Sekunden vier Eingänge und schreibt drei Ausgänge. Die Wallbox selbst wird nie geschaltet.",{"type":104,"level":105,"id":84,"text":85},{"type":97,"content":369},[370],"Der Haken an günstigen Stunden: Alle Verbraucher wollen dieselben. Das Auto mit 20 A, der Boiler und der Speicher zusammen sind mehr, als eine 20-A-Phase trägt. Deshalb misst die App, statt zu raten: Der Hauszähler sieht alles, die Wallbox eingeschlossen, und weil das Auto alle drei Phasen gleich belastet, ist das, was die ruhigste Phase über ihrer Hausgrundlast trägt, das Auto. Teslas eigene Cloud-Daten hinken Minuten hinterher, bis zu einer Stunde, solange das Auto schläft, und sind daher nur die Rückfallebene.",{"type":97,"content":372},[373],"Ein Amp-Guard setzt den größten Ladestrom, bei dem jede Phase unter 20 A bleibt. In seinen Planstunden hat das Auto Vorrang: Der Boiler startet nicht daneben, und geht eine Phase trotzdem darüber, werden Lasten einzeln abgeworfen, im Abstand von 30 Sekunden.",{"type":110,"head":375,"rows":381},[376,378,379],[377],"Reihenfolge",[270],[380],"Was passiert",[382,388,395],[383,385,386],[384],"1",[313],[387],"ausgeschaltet, nach 5 min zurück, sobald Platz ist",[389,391,393],[390],"2",[392],"Balkonspeicher",[394],"Ladeleistung gesenkt, dann aus bis Mitternacht",[396,398,399],[397],"3",[289],[400],"Strom gesenkt, unter 6 A gestoppt",{"type":257,"variant":402,"title":403,"body":404},"warn","Jeder Befehl weckt das Auto",[405],[406],"Ein Ladebefehl an einen Tesla geht über die Cloud und weckt das Auto. Deshalb wiederholt die App einen Befehl nie innerhalb von 150 Sekunden und lässt sich vom Zähler sagen, ob er gewirkt hat.",{"type":104,"level":105,"id":87,"text":88},{"type":409,"ordered":410,"items":411},"list",false,[412,417,422],[413,416],{"tag":331,"children":414},[415],"Preise und Plan."," Die Preise von heute und morgen als Balken von Grün bis Rot, mit einem Auto- oder Boiler-Symbol über jeder geplanten Stunde.",[418,421],{"tag":331,"children":419},[420],"Preisgrenzen."," Eine für das Auto und eine für den Speicher; Stunden darüber werden nie genutzt.",[423,426,427,433],{"tag":331,"children":424},[425],"Solar-Rechner."," Was eine PV-Anlage mit Speicher an diesem Haus verdient hätte, aus der echten stündlichen Zählerhistorie, den aufgezeichneten Preisen und historischer Einstrahlung von ",{"tag":428,"href":429,"rel":430,"children":431},"a","https:\u002F\u002Fopen-meteo.com\u002F","noopener",[432],"Open-Meteo",".",{"type":97,"content":435},[436,437,442],"Die App ist ein Vue-3-Dashboard über reiner Python-Logik, per Skript nach Home Assistant ausgeliefert. Den Großteil habe ich zusammen mit einem Coding-Agenten geschrieben, so wie ich es in ",{"tag":438,"to":439,"children":440},"link","\u002Fblog\u002Fcoding-agent-skills-workflow",[441],"meinem Coding-Agent-Workflow"," beschreibe.",{"type":104,"level":105,"id":90,"text":91},{"type":409,"ordered":410,"items":445},[446,451,456,461],[447,450],{"tag":331,"children":448},[449],"Die Tagesspanne ist das Geld."," Bei rund 16 ct zwischen günstigster und teuerster Stunde an einem normalen Tag bringt ein flexibler Verbraucher mehr als jeder Tarifvergleich.",[452,455],{"tag":331,"children":453},[454],"Mittag schlägt die Nacht."," Von Frühling bis Herbst liegen die günstigsten Stunden zu Mittag, das Anstecken tagsüber zählt also mehr als ein Nachttimer.",[457,460],{"tag":331,"children":458},[459],"Günstige Stunden brauchen einen Sicherungswächter."," Alle Verbraucher in dieselbe Stunde zu legen funktioniert nur, wenn etwas die Phasen misst und Prioritäten setzt.",[462,465],{"tag":331,"children":463},[464],"Messen statt fragen."," Ein lokaler Zähler schlägt jede Cloud-API, wenn es um den Schutz einer Sicherung geht.",{"type":104,"level":105,"id":93,"text":94},{"type":409,"ordered":468,"items":469},true,[470,474,478,482],[471],{"tag":428,"href":35,"rel":430,"children":472},[473],"aWATTar Österreich: Marktdaten-API (EPEX-Day-Ahead-Preise für Österreich)",[475],{"tag":428,"href":38,"rel":430,"children":476},[477],"EPEX SPOT: Marktergebnisse",[479],{"tag":428,"href":41,"rel":430,"children":480},[481],"Home-Assistant-Entwicklerdoku: Apps",[483],{"tag":428,"href":44,"rel":430,"children":484},[485],"Home Assistant: Tesla-Fleet-Integration",[487,545,600,645],{"slug":488,"published":489,"minutes":490,"category":7,"tags":491,"keywords":496,"about":506,"sources":513,"cover":538,"og":539,"expertise":540,"locales":541,"lang":50,"title":542,"description":543,"coverAlt":544},"generative-engine-optimization-audit","2026-09-28",12,[492,493,494,495],"GEO","AI search","Structured data","nginx",[497,498,499,500,501,502,503,504,505],"generative engine optimization","GEO audit","GEO checklist","AI search optimization","AI Overviews optimization","ChatGPT search citations","llms.txt describedby","AI crawler logs nginx","Bing AI Performance report",[507,510],{"name":508,"url":509},"Generative engine optimization","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGenerative_engine_optimization",{"name":511,"url":512},"Search engine optimization","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSearch_engine_optimization",[514,517,520,523,526,529,532,535],{"title":515,"url":516},"Aggarwal et al.: GEO: Generative Engine Optimization (KDD 2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2311.09735",{"title":518,"url":519},"Martinez: Optimizing Visibility in Generative Engines, a critical survey of GEO 2023–2026 (July 2026)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2607.14035",{"title":521,"url":522},"Tian et al.: Diagnosing and Repairing Citation Failures in Generative Engine Optimization (March 2026)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.09296",{"title":524,"url":525},"Google Search Central: AI features and your website","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fappearance\u002Fai-features",{"title":527,"url":528},"Google Search Central: Build and submit a sitemap","https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fdocs\u002Fcrawling-indexing\u002Fsitemaps\u002Fbuild-sitemap",{"title":530,"url":531},"OpenAI: Overview of OpenAI crawlers","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fbots",{"title":533,"url":534},"Bing Webmaster Blog: Introducing AI Performance in Bing Webmaster Tools (10 February 2026)","https:\u002F\u002Fblogs.bing.com\u002Fwebmaster\u002FFebruary-2026\u002FIntroducing-AI-Performance-in-Bing-Webmaster-Tools-Public-Preview",{"title":536,"url":537},"llmstxt.org: Changes from v1 to v2","https:\u002F\u002Fllmstxt.org\u002Fchanges.html","\u002Fimages\u002Fblog\u002Fgenerative-engine-optimization-audit\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fgenerative-engine-optimization-audit\u002Fog.jpg","ai-engineer",[49,50,51],"Generative Engine Optimization in der Praxis: ein vollständiges GEO-Audit meiner eigenen Site","Was Generative Engine Optimization ist, was die Forschung wirklich stützt, und das GEO-Audit dieser Site: 12 Prüfungen, 7 Fixes, samt Code.","Eine fünfstufige Pipeline von Crawlen über Indexieren, Abrufen und Zitieren bis Messen, die zeigt, wo eine Seite aus einer KI-Antwort herausfallen kann.",{"slug":546,"published":547,"minutes":548,"category":7,"tags":549,"keywords":556,"about":566,"sources":573,"cover":594,"og":595,"expertise":540,"locales":596,"lang":50,"title":597,"description":598,"coverAlt":599},"webmcp-agent-ready-website-guide","2026-09-27",10,[550,551,552,553,554,555],"WebMCP","Chrome","AI agents","Origin trial","Permissions Policy","JSON Schema",[550,557,558,559,560,561,562,563,564,565],"document.modelContext","registerTool","agent-ready website","WebMCP declarative API","WebMCP origin trial","WebMCP tools","tools Permissions Policy","how to expose website actions to AI agents","Chrome 149 WebMCP",[567,569,571],{"name":550,"url":568},"https:\u002F\u002Fgithub.com\u002Fwebmachinelearning\u002Fwebmcp",{"name":555,"url":570},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Schema",{"name":554,"url":572},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Fpermissions-policy-1\u002F",[574,577,580,583,586,589,591],{"title":575,"url":576},"Chrome for Developers: WebMCP (get started)","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp",{"title":578,"url":579},"Chrome for Developers: WebMCP Imperative API","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fimperative-api",{"title":581,"url":582},"Chrome for Developers: WebMCP Declarative API","https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fai\u002Fwebmcp\u002Fdeclarative-api",{"title":584,"url":585},"Chrome for Developers: Join the WebMCP origin trial (9 Jun 2026)","https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fai-webmcp-origin-trial",{"title":587,"url":588},"Chrome for Developers: 15 updates from Google I\u002FO 2026 (19 May 2026)","https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fchrome-at-io26",{"title":590,"url":568},"WebMCP explainer: webmachinelearning\u002Fwebmcp",{"title":592,"url":593},"ChromeStatus: WebMCP feature entry","https:\u002F\u002Fchromestatus.com\u002Ffeature\u002F5117755740913664","\u002Fimages\u002Fblog\u002Fwebmcp-agent-ready-website-guide\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fwebmcp-agent-ready-website-guide\u002Fog.jpg",[49,50,51],"WebMCP in der Praxis: eine Website agentenfertig machen mit deklarierten Tools","WebMCP im Code: deklarative Formular-Attribute, document.modelContext.registerTool, Tool-Annotationen, Sicherheits-Tore, lokales Testen und eine Checkliste.","Zwei Wege nebeneinander: ein Formular mit toolname- und tooldescription-Attributen, aus dem der Browser ein Schema baut, und ein JavaScript-Tool-Objekt für document.modelContext.registerTool",{"slug":601,"published":547,"minutes":6,"category":7,"tags":602,"keywords":606,"about":612,"sources":619,"cover":639,"og":640,"expertise":540,"locales":641,"lang":50,"title":642,"description":643,"coverAlt":644},"llms-txt-vs-markdown-content-negotiation",[603,604,552,605],"llms.txt","Content negotiation","Nuxt",[603,607,608,609,497,610,611,559],"markdown for agents","content negotiation","AI crawlers","Accept text\u002Fmarkdown header","llms-full.txt",[613,616],{"name":614,"url":615},"Markdown","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMarkdown",{"name":617,"url":618},"Hypertext Transfer Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHypertext_Transfer_Protocol",[620,623,624,627,630,633,636],{"title":621,"url":622},"llmstxt.org: The \u002Fllms.txt file (proposal, version 2)","https:\u002F\u002Fllmstxt.org\u002F",{"title":536,"url":537},{"title":625,"url":626},"Cloudflare changelog: Markdown for Agents (12 February 2026)","https:\u002F\u002Fdevelopers.cloudflare.com\u002Fchangelog\u002Fpost\u002F2026-02-12-markdown-for-agents\u002F",{"title":628,"url":629},"Cloudflare docs: Markdown for Agents","https:\u002F\u002Fdevelopers.cloudflare.com\u002Ffundamentals\u002Freference\u002Fmarkdown-for-agents\u002F",{"title":631,"url":632},"Ahrefs: 137K sites analyzed, 97% of llms.txt files never get read (June 2026)","https:\u002F\u002Fahrefs.com\u002Fblog\u002Fllmstxt-study\u002F",{"title":634,"url":635},"Checkly: The current state of content negotiation for AI agents (February 2026)","https:\u002F\u002Fwww.checklyhq.com\u002Fblog\u002Fstate-of-ai-agent-content-negotation\u002F",{"title":637,"url":638},"Suganthan: tracking Cloudflare Markdown for Agents on one site","https:\u002F\u002Fsuganthan.com\u002Fblog\u002Fcloudflare-markdown-for-agents\u002F","\u002Fimages\u002Fblog\u002Fllms-txt-vs-markdown-content-negotiation\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fllms-txt-vs-markdown-content-negotiation\u002Fog.jpg",[49,50,51],"llms.txt versus Markdown Content Negotiation: was Agenten wirklich abrufen","llms.txt ist ein Vorschlag, Markdown Content Negotiation ein Header. Was KI-Agenten abrufen, was die Logs zeigen und wie man beides aus Nuxt und nginx ausliefert.","Vier gestapelte Schichten, die KI-Agenten bedienen: deklarierte WebMCP-Tools, eine Markdown-Kopie jeder Seite, eine per Content Negotiation ausgelieferte Markdown-Antwort und ein llms.txt-Index",{"slug":646,"published":547,"minutes":6,"category":7,"tags":647,"keywords":653,"about":664,"sources":672,"cover":694,"og":695,"expertise":47,"locales":696,"lang":50,"title":697,"description":698,"coverAlt":699},"nuxt-llm-features-ai-sdk-streaming",[605,648,649,650,651,652],"AI SDK","Streaming","Structured output","Tool approval","Nitro",[654,655,656,657,658,659,660,661,662,663],"Nuxt AI","AI SDK Vue","Nuxt server route LLM","streaming chat Nuxt","useChat @ai-sdk\u002Fvue","structured output JSON Schema limits","human in the loop tool approval","Nitro API route model key","AI Act Article 50 chatbot","stopWhen isStepCount",[665,667,669],{"name":605,"url":666},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNuxt",{"name":648,"url":668},"https:\u002F\u002Fai-sdk.dev",{"name":670,"url":671},"Zod","https:\u002F\u002Fzod.dev",[673,676,679,682,685,688,691],{"title":674,"url":675},"AI SDK docs: Vue.js (Nuxt) quickstart","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fgetting-started\u002Fnuxt",{"title":677,"url":678},"AI SDK docs: Generating structured data","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Fgenerating-structured-data",{"title":680,"url":681},"AI SDK docs: Tool approvals","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fagents\u002Ftool-approvals",{"title":683,"url":684},"Claude API docs: Structured outputs","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fstructured-outputs",{"title":686,"url":687},"AI SDK docs: Telemetry","https:\u002F\u002Fai-sdk.dev\u002Fdocs\u002Fai-sdk-core\u002Ftelemetry",{"title":689,"url":690},"EU AI Act, Article 50: Transparency obligations","https:\u002F\u002Fartificialintelligenceact.eu\u002Farticle\u002F50\u002F",{"title":692,"url":693},"Faegre Drinker: Commission confirms the Transparency Code of Practice (Jul 2026)","https:\u002F\u002Fwww.faegredrinker.com\u002Fen\u002Finsights\u002Fpublications\u002F2026\u002F7\u002Feu-ai-act-commission-confirms-transparency-code-of-practice-as-adequate-and-publishes-final-version-of-its-guidelines-on-transparency-obligations","\u002Fimages\u002Fblog\u002Fnuxt-llm-features-ai-sdk-streaming\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fnuxt-llm-features-ai-sdk-streaming\u002Fog.jpg",[49,50,51],"LLM-Features in Nuxt ausliefern: Streaming, strukturierte Ausgabe, Tool-Freigabe","Nuxt AI von vorn bis hinten: eine Server-Route, die den API-Key hält, Message-Parts, strenge strukturierte Ausgabe, Tools mit Freigabe, Fehler und Artikel 50.","Eine Abfolge vom Browser über die Nitro-Route zum Modell-Provider und einem Tool, dazu ein Komponentenbaum aus Chat-Panel, Nachrichtenliste und Part-Renderer",1790676829365]