0.316.0
KittenML/KittenTTS0.316.0Sep 22, 2026by andig
Upgrading?
AI Summary
Introduces extensive new features for battery control, new hardware support, and UI improvements for the energy management system.
Key Highlights
- New battery discharge modes including forced discharge and hold charge
- Support for new hardware like Solarbank Max AC, EcoFlow Stream, and Polestar
- Major UI overhaul with a new default battery page
- Enhanced tariff and meter support including Deye and Solarman templates
Breaking Changes
- Home Assistant charger: make 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
- Zendure Solarflow: consolidate battery templates
New Features
- Battery forced discharge to grid mode
- New device integrations (Anker Solarbank, EcoFlow, Viessmann, etc.)
- OpenDTU cache support
- Force-discharge for Huawei SUN2000
- LiveWire S2 motorcycle support
- Deye micro inverter logger template
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
public-apis/public-apis★ 491,191
A collective list of free APIs
NousResearch/hermes-agent★ 256,048
The agent that grows with you
yt-dlp/yt-dlp★ 200,222
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,542
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.