0.316.0
obra/superpowers0.316.0Sep 22, 2026by andig
Upgrading?
AI Summary
A major version with significant breaking changes to charger control logic and battery modes, alongside numerous new features for battery discharge and new integrations.
Key Highlights
- Home Assistant charger milliamp control made optional
- Battery minsoc/maxsoc preset dropped
- PV mode renamed to Smart
- New battery forced discharge modes (multiple integrations)
Breaking Changes
- Home Assistant charger milliamp current control optional
- Home Assistant drop battery minsoc/maxsoc preset
- Mode Redesign: rename pv to smart
- Tariffs: reject slots shorter than 15min
- Templates: move phases1p3p param to defaults.yaml
New Features
- Battery forced discharge to grid mode
- Home Assistant holdcharge and discharge battery modes
- Polestar official Data Portal M2M API
- Weishaupt heat pump (Modbus TCP)
- Vehicle: LiveWire S2 motorcycle
Full Release Notes
## Changelog ### Breaking Changes 🚨 * 949002965464831f66fe7fa4200707ba500fed68 Home Assistant charger: make milliamp current control optional (BC) (#33858) * ddbc8f325fb28a1cf2325c020a305babf5805fc6 Home Assistant: drop battery minsoc/maxsoc preset (BC) (#33707) * 54403e68bcb16bf8496401533e05b5ee8e7f03c4 Mode Redesign: rename pv to smart, replace minpv with always charge (BC) (#32490) * 8160673647fbb183894c98db2c6dabdaf2a87642 Tariffs: reject slots shorter than 15min (BC) (#33865) * db12193697eb82920399b2b73951555ba47ee70a Templates: move phases1p3p param to defaults.yaml (BC) (#33588) * 064e585ccbdb45424336471ccc29850ae744322e Zendure Solarflow: consolidate battery templates (BC) (#33505) ### New Features 💫 * c591a67f1e8e8f64fc5a7ec8f093036d9aa5b49f Add battery forced discharge to grid mode (feed-in arbitrage) (#31995) * 515cb14e987a4eaaae84b9d6971c750e127cc281 Anker Solarbank Max AC: add discharge (#32365) * 5ece95b84b157c921a8f3772f2562aa53844f59c Atmoce: add battery discharge (#33437) * 2791792dc6ac74677ce925248e16c7606b980bc9 EcoFlow Stream: add battery control (#33433) * cc3feb47832afc731085abacf87989d3c8de111b Home Assistant: add holdcharge and discharge battery modes (#33841) * 61ddada0c3aa538df0b75eab89f581d4c612781b Hoymiles OpenDTU: add cache (#33669) * 0daa1fe16ccf998a23e1d310c7f07d6dfaccd974 Huawei SUN2000: add force-discharge (#32307) * 4bccfd3e262ef6af92eef4f377f6fe83d1d4a337 Issue page: add copy-as-markdown button and menu shortcut (#33699) * 41fc3867fa98d3bd55a9dc71e6d2f99bd7511b7c Kostal Plenticore: add forced discharge mode (#32396) * e5611ade150e262c531835119eff543e174238e1 Loadpoint: add fast charging phase upscale delay (#28174) * 3938f4358fa3918794ab5cba8bcd85a5a794ac46 Loadpoint: add solar share setting (#32104) * 77e828473f7af366aa81192a23dc21b7c5017d38 Meter (Deye): add HTTP micro inverter logger template (#33485) * c2683e2370b88fd50cdf74d3551d76ffe62b1de1 Meter: add Solarman V5 transport and Deye micro inverter template (#33502) * 8dd67f1e90aa37552bbdf93b0beac4dde55b8c97 Meter: add verifybatterymodes command (#33857) * 8fca47d014a041cbae94081893a89a22e48f5254 Polestar: add official Data Portal M2M API (#33814) * 7c2f4c57618ebb56fc7bc9fc3aa6f424917f3693 Script plugin: add float setter (#33426) * 825573b33675de98cbefb22569b1d5a1536fd040 Spelsberg: add meter capability (#33823) * cf0fd9fc4012f02d0b151f798be471091aab53e2 Sungrow: add holdcharge battery mode (#32932) * 03d12af9c76e2aca8784892fb6a980471edaaf10 Tariff: add epexprijzen-be template for Belgium (#33762) * 51a95cb689890945c917ad84e19ec18189fb195c Tariffs: add spotovaelektrina.cz (#33581) * 691c77e09983c93dec8f00b9af63cfb52ee44474 Tesla BLE: add charged energy (#33585) * c28a1f6d63c82df231b2bada6ac3db91958fb124 UI: add missing German date format translations (#33347) * 68d2f49749e02c66fe121137ff9f45f13cc41d81 Vehicle: add LiveWire S2 motorcycle (#33683) * c1619334bb5c8bfcf5a963f212de8df2ecb76c0c Viessmann: add power and temperature (#32219) * e11cdef6c26bde842e41d3f2e2e5cdd02ec3ae71 Weishaupt: add heat pump (Modbus TCP) (#33193) * b79e469433db1580a65c93337110578cf57d1ff5 Zendure Solarflow: add forced discharge mode (#33801) * 50572d9d05dcd0e2bd95c848f9b64a1d4a49df97 go-e: add status reason for access control (#33661) * c140fc86ffba76922499f4d4e58964b3aea4ba84 my-PV HEA: add 5s heartbeat to rewrite active relays (#33626) * cca3f096ba7f712fa47bed8f525113c902168f9b my-PV: add HEA THOR 3.5 and 9.0 support (#33500) ### Other Changes ☀️ * c9fa4d90ef02eea2d73828baa251a061de5bb979 API: raise the jq query limit to 8k (#33394) * 87f76134a5170c54e944c935cbbc3b4e178b36e4 Battery UI: make new battery page default, remove classic layout (#33434) * 879639555808d6b001617f3d7403f9560087daa1 Battery: report supported modes per device (#32648) * bab3970670a83308747866215e8d391ffe6bec7a Charger (Stiebel Eltron WPM): optional inverter power (#33367) * 9582e96b5d0d9e341a95d2616cfa3ac5e7a00c16 Chargers: use verify enabled helper (#33811) * 3e0464e04a97ec639b834a19cf5864adc8b9adae Charging plan: disable optimization when late charging covers everything (#33422) * f7c48528d66d8d59fad11c53e2ada3cb780b2bb6 Charts: consistent y-axis unit scaling for small values (#33334) * b34a9895bbee871422d816be7ef25783c918c6b7 Config UI Loadpoint: rework min/max current inputs (#33418) * a1a4b2c37e3d2fa475f2d7890f388134c644e6b4 Config UI: clarify battery soc limit help texts (#33414) * 50345cd4422346e6f000109c680cbb80bd144a1d Config UI: improve modal slide transitions (#33833) * 212dd03c33c4fb4c53ee192068c0a10cf7ae649b Config UI: raise device test timeout to 15s (#33118) * 296f6f184873f80efaee294c725c5d22ddba1f1e Config UI: untranslated 'continuous' in device card and test result (#33487) * 53061f7e841553fd67c4cc7e852f78c7f3b1029e Config UI: usage-specific energy labels for device tags (#33402) * e7a8e4d650f1fdc7fb15d314f52f7ee792790e15 EEBus: capture vehicle identification from update event (#33458) * c04cf61e6013c3eb1f52409423fe974b23fdacad EEBus: expose LPC and LPP capabilities only when supported (#33525) * 32c86ab25733e458818f4a762211aba92604d72e EEBus: make milli amp current control optional (#33739) * 3d38f43c5369c9a8f42051c1b242a235467ee8cc EEBus: replay use case support to devices registering after discovery (#33423) * 0fd6548b91527469138146022ad36f33c5c3ce5b EEBus: replay use case support to devices registering after discovery (#33430) * c90b7d0ffb1fc7335e58094579761d621f63fc40 EEBus: wait for use case data before returning the device (#33386) * 535e655dd7fd801e58f37dfff6294450f84f1786 Energy demand profile: improve prediction accuracy for heating loadpoints (#28232) * db2841e6d2c436559af9f63ad653295faa8bf8e9 Ghost (Elli): re-login when the REST API rejects the token (#33785) * 266fe2720f8cb8fc92c8acb5f4a955bee916da20 HEMS Pro: also probe I2C bus 0 for RTC (#33639) * 078efa1e71a286612dd76115e4966b72f8dd3ffb HTTP digest: accept X-WWW-Authenticate challenge header (#33793) * eddfca3aa2deb9e9ee5219cc49e07fa0d89dca6b History: remove energy netting, unify bidirectional detection (#33338) * a611309c287803b0ac9286182fe64cb47ee36baa Keba modbus: switch back to 1p on disable (#32665) * a0a96efdb34cbbc6e1e5387f503e520c076ce878 Keep access and refresh tokens out of the logs (#33339) * 556d8745be165fd062c89af618f54df5293882df Loadpoint: derive remaining energy and duration from energy limit (#33637) * a3490cd3fffbc1a90918451813e2a1cca9669224 Loadpoint: do not send zero power values to estimator (#33846) * 0c6250e2a01085a93e7d53cb07a32eb14b4398fd Loadpoint: don't fail setup when the charger has lost phase switching (#33619) * 2e6873c8f15cf154047c73747e0b82f1e81eb0aa Loadpoint: honor configured phases in minimum active phases (#33462) * 197043e1551ab7c6be63c10f3aa8e864c26bba5c Loadpoint: ignore dimmer not available (#33486) * 4e3a60eadb3883ae06cc7f6ed4db8a170a56b58d Loadpoint: log when circuit limit falls below min current (#33671) * 219cdf1a1a4cca86990f6ccf5e0d1df6000c6e65 Loadpoint: recompute charge plan immediately on vehicle-side plan changes (#33467) * a306d05ae8d136b00f832d49e36434c9e196503a Loadpoint: resolve charge meter capabilities once at boot (#33672) * ef937f405b860c7ed54f7ee23fd9003ebca52853 Loadpoint: resume charging during phase switch (#33552) * efa9bf6a9b4228976221f4247575e7353994ee3e Loadpoint: seed unknown phases from charger on startup (#33701) * 10c5d484ac60494af2493960bd38d8a6671cd6dc Loadpoint: test that persisted settings remain valid config (#33450) * fc15910c8f7a1fc5a884713ed03032cf70303931 Loadpoint: treat alwaysCharge as dynamic config (#33444) * d15b1dc935eb229929ed9167814062188cc3f8f3 MQTT: sanitize map keys used as topic levels (#33819) * 4e129aadb407c78186080c1f0a737531cd3ef0fa Make diagnostics more discoverable (2) (#33734) * 39f01dbc3966a1776074413bdd96182222f84f22 Marstek Venus A/D: derive battery power from AC power minus MPPT (#33473) * f73c2bd4cff94091d2cd1b38eb9569026407c0a9 Merge remote-tracking branch 'origin/master' * 203452356bfc83ef23a8e4fa14a7961fb1c56522 Merge remote-tracking branch 'origin/master' * 6512758d8bad5ed9a17eea50a1ddbfe65a2366f9 Merge remote-tracking branch 'origin/master' * 5323314c0a884e06dd96877b3b916121c71838c3 Merge remote-tracking branch 'origin/master' * 33ab9168c5b393888cdb6495d0593f86f4fa5463 Merge remote-tracking branch 'origin/master' * 2ea21547608de89c53056e283d59f6066d2e8e92 Merge remote-tracking branch 'origin/master' * acd0087863d789315c3264b39a7a71cfe57316b0 Merge remote-tracking branch 'origin/master' * 54aa6abf76e01573b98ba447d2e8ffe11908460d Merge remote-tracking branch 'origin/master' * 4a335df431b827f52b53b7e4f375d76f75594c7d Merge remote-tracking branch 'origin/master' * 1be861a88ac9aaad7900683a70f3683d78ffcea3 Merge remote-tracking branch 'origin/master' * 23286bd91ab3892dccaaf07301e4b168398a8d68 Merge remote-tracking branch 'weblate/master' * 0df8641394bed1505df8abe5e0a8e4ebcbe71b25 Meter: default battery minsoc/maxsoc to 0/100 (#33589) * 945ecf798e95fe0b2f4ba73ad4f80235b3235661 Modbus proxy: keep default device port after serial round-trip (#33744) * 4f4f3ea827c4b6afc99e4df46f57c07864e3a514 Mode UI: smart mode label and popover alignment (#33479) * 31d074552fb411cb4129676a09b0bb3e7d62d823 MySkoda: prefer charge limit of current saved location (#33612) * 75b5b7c3d2f5b08a0953efb82402952e0a9eb746 MyŠkoda: expose welcomecharge (#33570) * a57763747d59535cab4b7e291eea4c49bb39b490 NIU E-Scooter: use vehicle-common preset (#33945) * 0f9c74cfc40c9f6eb66a66745789f595b6b6983c NRGkick Connect: write current and enable state in a single request (#33675) * 15b57447fbc75762b7ab51161a66cfd43257ed78 Nordpool tariff: cache day-ahead price requests (#33655) * a83118d3662566a8756fc007ea780e104fcf05eb OAuth: persistent token source (#33370) * 871817b9c2b21dc554e3f830ffcfe58833c641ef OCPP: allow transaction-specific charging profiles (#33512) * 11ffab1650b550755f475c30a6a14c3baedfa8f0 OCPP: keep live meter reading when duplicate measurand contexts collide (#33257) * a779067ef93a955d419a2aa5daccebb3964ddfd4 Open-Meteo: cache forecast requests short-term (#33797) * 0a3cc0a17360178d5d948032428ec01bfcbc6692 OpenEVSE: use websocket for state and claims API for control (#33539) * 9912bcb002c61d72d15eb503521ff11717b8e201 Oprimizer: align battery forecast times to slot boundaries (#33385) * 275ad684ccc5beea1dce1143426a2d8c3afeb3d9 Optimizer: apply active result slot (#33501) * b08459e7ac7eac536db858d1c76a66fc2fdf2908 Optimizer: break down household demand into individual profiles (#33749) * 5e649cb4d34d79711970e3f67ad23b40a39b0658 Optimizer: configurable per-slot percentile for the energy demand profiles (#33700) * 819fb94603682ae54b13acd1cf4b2c6c1f7a28ae Optimizer: empty state, menu entry when enabled, feedback link (#33750) * b46b2e67d33c2d2ce7d56d47a92a289a195a769b Optimizer: floor end of horizon battery value at export price (#33746) * dd62baaf8de4483daf025a75eca82b4ae6decfdb Optimizer: only offer grid discharge for batteries with discharge mode (#33860) * 60df102f7b15404a73bfb08f8b7a16dc847dc344 Optimizer: reapply last solve to newer slots from the control cycle (#33583) * 3d104bb680c1d72ac37608c732adc746dbe32939 Optimizer: report loadpoint charging state (#33802) * 035853de89eb79772514d21bf071ddd5b69776bf Optimizer: treat unknown battery mode as normal for suggestions (#33698) * e91c3db920744008641053124c54ab59988930c6 Planner: clarify precondition log message (#33400) * 97e47b56f34e965fa46f344395a73a06c3ed7245 Playwright: follow Shelly Pro 3EM product rename * 103aa33702200eb2540daccbb5fc6178bc51bea1 Remote Access UI: don't show toast for proxy errors (#33514) * 365adffa2228ebcd2bc9865d6adea215288934d5 Remote access: cache verified basic-auth credentials (#33593) * a8d5832c86a71439978a3a5eaed0f0daaad35c08 Revert "CI: disable Claude workflows (#33507)" * 2dc2068059d1a4e29bf1c9ceb8bb055f10484442 Revert "EEBus: replay use case support to devices registering after discovery (#33423)" * a3a34410f8502d6db44a3ba07b83ab69928274e9 Revert "ui: hide temperature limit controls for SGReady devices" (#33840) * 9efc5a965217c7a31053e6cd0e6a172e8094db3c Shelly: decorate phase readings only when the device meters them (#33706) * 0ceb4287a0f52b63ee0aadecc977b2c155481be9 Site: hide config-disabled loadpoints in energy flow (#33714) * 5bcfd7f621a0065ea084e239b7b2e473a18c3162 Smart-hello: retry once with a fresh login when the api rejects the token (#33369) * 0eb008cf6729c9cf63a751f5e9f4f5216c27b9ae Solis Hybrid S: require minsoc and maxsoc for active battery control (#33580) * 0c94a0a00e23183f3d7da39c6dff3e0ae633eb9c Sponsor: accept temp token from hardware check (#33631) * f3edc12b3bad0da042ca041738249834f0416573 Subaru vehicle: handle range unit conversion (#33453) * 7fec24fd45f84bb8e513e9183f77e68ace9812f1 Tariff (DWD, ESIOS): evaluate forecast dates per request (#33601) * a120fb5bfa0ffae32cded23c3a2566bb60b12d1e Tariff (fixed): drop zero-length slot on dst spring forward (#33869) * e78e382d372a04a05e6e9a2fb3296f3161541516 Tariff: don't serve cached rates that have entirely elapsed (#33904) * f8a2b2a27f4d75bffeb3e10c99d5c36879661d83 Tariff: keep serving cached rates and retry while tariff unavailable (#33880) * a683ffda21c9f034ddd91819a73681311d28bb20 Tariff: retry creating unavailable tariff (#33894) * 592f39c0397d23ff4d159abb3dd1e3212f49210f Templates: pass bool params as real booleans (#33153) * 5a3c4d1c52a98859b4bd519be829146488546e6b Translated using Weblate (Catalan) * 4f8a5c132712a730f55e2357a7c5bcf6d0ba73b9 Translated using Weblate (Danish) * 2a890b572f70fd52d2989bf6eaf65141ffa0b520 Translated using Weblate (Dutch) * ae8841bd8f68d20c1f31c9f11cf8aa04d5fbdc37 Translated using Weblate (Finnish) * c5338fa3dc7d1a7aa20f455f04e3f33271051991 Translated using Weblate (Latvian) * 252240c79bfc83c13c0efae84eabde5f790050f8 Translated using Weblate (Lithuanian) * 48fb60f2d2a9f2de182b2ce92f58c145ed07f8b6 Translated using Weblate (Russian) * 0c6529268a8f31c726b63e2a3d6c026829d84379 Translated using Weblate (Swedish) * de0faa41b4f82a92e4b5c0ea96643d2afd874333 Translated using Weblate (Turkish) * f63cd7036545aeb687dd87ac6c47402cab79265c UI: improve chart line readability (#33410) * be68265dbb1e180abadb9a9c056f4fc64a1a2699 UI: place chart tooltips beside the pointer (#33411) * b5dfdee16871e648738219fc8cf451b9b2aaa19a Use official vite+ image for Devcontainer (#33564) * 7f0bfb431036424abe23cd2ae450349b13c72827 Vehicle API: handle TeslaMate sleeping response (#33560) * 93dbcb47778c8a356312c87e716013027729ca63 Voltie: detect phase switching from the capability register (#33574) * d470c99f54ae3e3b12f64b80c5356c13c06d770e Zaptec: do not offer phase switching in passive mode (#33447) * 84e1e5945edfcbc7f2b62e5d0286ffdb5e7064dc Zaptec: don't expose phase switching for Go (#33484) * 890b00fb08e4b062d650d67870b7aa73fa749926 Zaptec: ignore empty session identifier in connection duration (#33720) * a7a3ad941953d948d3d1dfaf7c8c0c914c0863a0 Zendure Solarflow: read charge setpoint from device (#33803) * c6dae0b7dc5e040bdd0d2be4e2e8eb2c97900241 Zendure Solarflow: suggest battery serial via HTTP (#33510) * 8af06cf303908bc06442b1182107c75664e0e643 aa55 udp: reject responses whose length does not match the request (#33696) * 584977e7bd45ab22175506e0ae80672bad9f5c8c eebus-ohpcf: fail setup when the device does not support OHPCF (#33468) * ea60ae350890cefc3f7617864a00f51485065ee8 fox-ess-h3-smart: hold via On-Grid SoC reserve instead of Feed-in First (#33537) * 9893252b178346f133f3f76db1a2686a95f46f9a my-PV HEA: derive heartbeat interval from power timeout register (#33628) * 732078550d13478dac193b01574fa066ab71bcc9 ui: hide temperature limit controls for SGReady devices (#33754) ### Bug Fixes 🐞 * fe065ee91cfd53b01aac78bbfe61d04ac59cc711 EEBus: fix ship-go connection backoff reset (#33384) * bb9491db8bae13ac910a8824b0af71ac63da2362 Huawei EMMA: fix grid import/export energy registers (#33432) * 432d318a21602baafc3c2cafb14bee4b2fb58b84 Issue triage: apply area label alongside type Bug, fix label names (#33663) * b2274a5f4b873093b5ac0900bfda5b7635cae8fd Optimizer: fix plan SoC goal slot placement off-by-one (#33832) * e48599802d1babf0d562115468aa9fad6b8c0551 Shelly TopAC: fix enabled (#33805) * 09efbf980adefecf7d4daf2478bf8b5e3f0ac31c Toyota: fix partial api response handling (#33689) * 85c10175686f1aebc57f358663063713816f753c Vehicle: fix UI location in deprecated mode warning (#33551) * af4aa75cb817b96001622d7aaaa60801672fa470 Zaptec: fix model detection (#33504)
Related Repositories
A complete AI agency at your fingertips - From frontend wizards to Reddit community ninjas, from whimsy injectors to reality checkers. Each agent is a specialized expert with personality, processes, and proven deliverables.
Structured multi-perspective deliberation for hard decisions. Run full councils, focused triads, or duo debates across Claude Code, Codex, Gemini CLI, and OpenCode.
Script that installs/configures a Dovecot, Postfix, Spam Assassin, OpenDKIM Debian web server
The repository for the Angular Webpack Cookbook Gitbook
[CVPR 2024] FaceTalk: Audio-Driven Motion Diffusion for Neural Parametric Head Models