Release cut after 0.18.2 (REL-0.18.3, dev; round 2: renamed to 0.19.0). Not merged; no tag, no deploy.
Version: 0.19.0 (minor), the owner's choice on 2026-10-26 because PRICE-02 changes trading behaviour.config.yaml options/schema are unchanged (86/86; only the description text changed), no option default changed, and the validator gained no rule that can refuse a stored options file. Existing installs need no option change.
Files:goodwe_controller/config.yaml (version:) and goodwe_controller/CHANGELOG.md (new section). No code. The branch keeps its name release-0.18.3.
CHANGELOG section (verbatim; review text fixes in b7108e5)
0.19.0
A minor bump: price trading behaves differently, plus a fix for a false warning, the Home price chart in 15-minute bars, more Dutch text and EMS-port wording, and no option changes.
No option was added, removed or renamed, and no default changed (86 options). It is a minor bump because price trading changes when the battery charges and gives power; every saved setting still starts. Existing installs need no option change: options that start 0.18.2 also
start 0.19.0. The changes below apply with one inverter or two.
Price trading skips periods that are over. When the add-on trades on price, it now picks only from price periods that are not over yet. With battery modes off and 15-minute prices, the battery therefore trades for longer (about 1.5 to 2.5 times the minutes in a simulation of 16 real days), so it cycles more; with battery modes on, it no longer charges from the grid because of a cheap period that is over. Hourly and day/night sites change too: they no longer pause at the start of each hour.
Contents of this release, in merge order since 0.18.2 (c67d0cd):
243a756
The docs, the add-on description and the field guide now say the add-on is wired to the inverter's EMS port, not a "meter bus". In Home Assistant the device's manufacturer text becomes "GoodWe (via RS485 EMS port)", and the device and its entities stay the same (DOC-8, #201)
75f0804
The price chart on the Home page now shows one bar for each 15-minute price, the price the add-on decides on, where it showed hour averages. Its cheap and dear colours now show where the add-on will charge or give power, instead of thirds of the price range (UX-45, #202)
bee7431
First half of the "not keeping up" fix, shipped with the next row and described there (SAFETY-119, #203)
e077ae7
The false "Battery is not keeping up" warning, and its Home Assistant notification, no longer appear when the peak guard steps in and then gives control back near the start of a 15-minute period; battery commands do not change. A real overload still warns at the start of each 15-minute period, up to about 25 s later with the default 5 s meter, but with an uneven meter of about 15 to 20 s and a small overload, it can stay quiet for up to an hour (SAFETY-121, #204, with SAFETY-119)
90bc901
On Dutch pages, the status rows, banners and settings notes now show Dutch text where they showed English, and so do the setup wizard's checks once UX-51 is fixed. The settings label of the 15-minute demand forecast sensor no longer ends in "(W)", and English pages change only by that label (UX-46, #205)
aa22806
Price trading, and the check for it with battery modes on, now ignore price periods that have already ended, so the add-on no longer aims at a 15-minute period that is over and then does nothing. Hourly and day/night sites also change: there is no pause at the start of each hour, as the owner accepted (PRICE-02, #206)
Known issues
A false "Battery is not keeping up" can still show when the peak guard pauses a maintenance charge (SAFETY-92).
A battery capped at a low limit with a perfectly flat reading can still trip the stale check (SAFETY-74).
A battery whose reading at rest is beyond about ±175 W is still not caught when it refuses (SAFETY-97).
The peak guard can still back off near the end of a 15-minute period when a meter reading is late, by less than 30 s (SAFETY-99).
Two inverters: the maintenance charge can switch on and off while the house is above the peak aim (SAFETY-88).
Two inverters: the "circulating" figure counts a battery's reading at rest (SAFETY-98).
Two inverters: a drain that starts during a big step in house use can send the other battery to full power, and about 1 kW goes to the grid for about 10 s (SAFETY-104).
Two inverters: when a battery comes back during a maintenance charge, the grid can step by several kW at once (SAFETY-101).
Two inverters: when a battery drops out during a solar surplus, the others can swing by up to 1.5 kW in a simulation (SAFETY-105).
Two inverters: after a drain ends, a change in house use can go unanswered for about 9 s, because some readings are old (SAFETY-106).
Two inverters: when one battery's level is missing, both batteries are held at 0 W, and for about 15 s the last command stays on (SAFETY-108).
Two inverters: if one battery's level stays missing for 12 h, the other battery's cycle can be marked failed, with a 7-day wait and a notice, though it is healthy. This comes from reading the code; it has not been seen on a site (MAINT-17).
When the 15-minute demand forecast sensor counts the battery's own charge, the maintenance charge runs at about half the power the peak limit leaves, so it takes about twice as long. Seen on a site: about 1.2 kW instead of 2.5 kW, and the peak limit was kept (SAFETY-111).
One inverter: after a link drop, the battery's own safety stop to 0 W can be taken as a refusal, and the site stays at 0 W for up to 15 min (SAFETY-102).
After a Home Assistant restart, control still waits until Home Assistant has finished starting, which can take several minutes, though the readings are already there (SAFETY-115).
While Home Assistant is not answering, the page can list inverters as refusing commands and sensors as missing, and send you to Developer Tools, though they are fine (UX-37).
If Home Assistant hangs or stops, the page keeps saying "Waiting for Home Assistant" and never turns into an alarm (SAFETY-113).
Right after Home Assistant has started, the page can say for about 4 s that an inverter cannot be controlled, and the first command can come late (SAFETY-114).
After a Home Assistant restart, the controller status sensor can still say "running" while the add-on cannot control. It was seen once, and the cause is not known (SAFETY-116).
Battery modes on: after a planned top-up from the grid, the Batteries screen can say "Enough sun is forecast" (UX-32).
Battery modes on: the forecast line "we count on" can show more sun than the plan counts, because the plan takes house use off first (UX-33).
Battery modes on: before a planned top-up, the Today list shows a smaller "gives" amount than the plan will use; it grows as the charge happens (UX-34).
Two inverters, battery modes on: while the other battery is in its maintenance charge, a battery's card can say it charges from the grid while it stays at 0 W (OPT-18).
Two inverters, battery modes on: while a battery refuses to charge in a cheap run, the action log on the page gets about 8 lines an hour for its retries, and the page hint says "waiting for a better price" (UX-38).
A battery in a safety stop, or one the add-on cannot reach, can still be started for a cycle, and its drain then waits about 12 h and ends in a failed-cycle notice. This comes from reading the code; it has not been seen on a site (MAINT-19).
On the Settings page, the rows of the solar forecast lists are labelled "Phase 1", "Phase 2" instead of "Sensor 1", "Sensor 2" (UX-27).
In the solar forecast list, a blank or repeated row makes "source 2 of 2" count differently from the rows on the Settings page (UX-28).
The solar forecast message says "has no reading" also when the sensor shows a number that is too old or in the wrong unit (UX-29).
If you use only the forecast lists, two Settings notes sit on the single-sensor field, and one of them tells you to set that field (UX-30).
After a restart during a price outage, the "No prices" message can say "yet" when prices did come in earlier (UX-39).
On the new settings page, you cannot see whether a price service token is set. Check the Configuration tab (UX-41).
On the classic settings page, the first click on Save after editing a field can do nothing. Click again (UX-42).
A steady overload on a 1 s meter can warn, and send the Home Assistant notification, 2 or 3 times at the start of each 15-minute period instead of once. The peak limit is still kept (SAFETY-122).
A fixed tariff is priced once per hour, so a price window that starts or ends at :15, :30 or :45 gets the wrong price for part of that hour. Windows that start and end on the hour are right (TARIFF-23).
Step 6 of the setup wizard stays empty because of an error in the page, in English and in Dutch (UX-51).
On Dutch pages, refusal texts, the last-event line under the Home buttons, the installer details and the trading status sentences are still English, and a few Dutch texts read badly, such as "1 metingen geweigerd" (UX-52).
Home can show a grid charge that the add-on will not take: the rest of a cheap run that the trade check refuses (battery modes on), or a charge after the last dear price period (battery modes off). The battery stays idle then (UX-53).
Some price texts say "hour" where the add-on acts on a 15-minute period, such as "cheapest hour" (UX-47).
After the add-on restarts, the Home price chart shows no price for the earlier part of today, and the setup check can say "12 of 24 hours", though the prices are known (UX-48).
With battery modes on and only batteries on "Leftover solar", the Home price chart can mark a cheap period where no battery charges (UX-49).
On a phone, the bars of the Home price chart are too thin to tap one 15-minute period. The arrow keys work (UX-50).
If you are crossing from a version older than 0.10.0
## 0.10.0 below can refuse an old config: slew_w above its limit, and the
withdrawn price_provider ids engie_dynamic, totalenergies_dynamic and eneco_eddy. Read it before you update. Run tools/predeploy_check.py with the
bare options (jq '.data.options') first.
Release cut after 0.18.2 (REL-0.18.3, dev; round 2: renamed to 0.19.0). Not merged; no tag, no deploy.
**Version: 0.19.0 (minor), the owner's choice on 2026-10-26 because PRICE-02 changes trading behaviour.** `config.yaml` options/schema are unchanged (86/86; only the description text changed), no option default changed, and the validator gained no rule that can refuse a stored options file. Existing installs need no option change.
**Files:** `goodwe_controller/config.yaml` (`version:`) and `goodwe_controller/CHANGELOG.md` (new section). No code. The branch keeps its name `release-0.18.3`.
**Contents (first-parent, c67d0cd..aa22806):** 243a756 DOC-8 (#201), 75f0804 UX-45 (#202), bee7431 SAFETY-119 (#203), e077ae7 SAFETY-121 (#204), 90bc901 UX-46 (#205), aa22806 PRICE-02 (#206).
## CHANGELOG section (verbatim; review text fixes in b7108e5)
## 0.19.0
**A minor bump: price trading behaves differently, plus a fix for a false warning, the Home price chart in 15-minute bars, more Dutch text and EMS-port wording, and no option changes.**
No option was added, removed or renamed, and no default changed (86 options). It is a minor bump because price trading changes when the battery charges and gives power; every saved setting still starts.
**Existing installs need no option change:** options that start 0.18.2 also
start 0.19.0. The changes below apply with one inverter or two.
**Price trading skips periods that are over.** When the add-on trades on price, it now picks only from price periods that are not over yet. With battery modes off and 15-minute prices, the battery therefore trades for longer (about 1.5 to 2.5 times the minutes in a simulation of 16 real days), so it cycles more; with battery modes on, it no longer charges from the grid because of a cheap period that is over. Hourly and day/night sites change too: they no longer pause at the start of each hour.
Contents of this release, in merge order since 0.18.2 (`c67d0cd`):
| | |
|---|---|
| `243a756` | The docs, the add-on description and the field guide now say the add-on is wired to the inverter's EMS port, not a "meter bus". In Home Assistant the device's manufacturer text becomes "GoodWe (via RS485 EMS port)", and the device and its entities stay the same ([[DOC-8]], #201) |
| `75f0804` | The price chart on the Home page now shows one bar for each 15-minute price, the price the add-on decides on, where it showed hour averages. Its cheap and dear colours now show where the add-on will charge or give power, instead of thirds of the price range ([[UX-45]], #202) |
| `bee7431` | First half of the "not keeping up" fix, shipped with the next row and described there ([[SAFETY-119]], #203) |
| `e077ae7` | The false "Battery is not keeping up" warning, and its Home Assistant notification, no longer appear when the peak guard steps in and then gives control back near the start of a 15-minute period; battery commands do not change. A real overload still warns at the start of each 15-minute period, up to about 25 s later with the default 5 s meter, but with an uneven meter of about 15 to 20 s and a small overload, it can stay quiet for up to an hour ([[SAFETY-121]], #204, with [[SAFETY-119]]) |
| `90bc901` | On Dutch pages, the status rows, banners and settings notes now show Dutch text where they showed English, and so do the setup wizard's checks once [[UX-51]] is fixed. The settings label of the 15-minute demand forecast sensor no longer ends in "(W)", and English pages change only by that label ([[UX-46]], #205) |
| `aa22806` | Price trading, and the check for it with battery modes on, now ignore price periods that have already ended, so the add-on no longer aims at a 15-minute period that is over and then does nothing. Hourly and day/night sites also change: there is no pause at the start of each hour, as the owner accepted ([[PRICE-02]], #206) |
### Known issues
- A false "Battery is not keeping up" can still show when the peak guard pauses a maintenance charge ([[SAFETY-92]]).
- A battery capped at a low limit with a perfectly flat reading can still trip the stale check ([[SAFETY-74]]).
- A battery whose reading at rest is beyond about ±175 W is still not caught when it refuses ([[SAFETY-97]]).
- The peak guard can still back off near the end of a 15-minute period when a meter reading is late, by less than 30 s ([[SAFETY-99]]).
- Two inverters: the maintenance charge can switch on and off while the house is above the peak aim ([[SAFETY-88]]).
- Two inverters: the "circulating" figure counts a battery's reading at rest ([[SAFETY-98]]).
- Two inverters: a drain that starts during a big step in house use can send the other battery to full power, and about 1 kW goes to the grid for about 10 s ([[SAFETY-104]]).
- Two inverters: when a battery comes back during a maintenance charge, the grid can step by several kW at once ([[SAFETY-101]]).
- Two inverters: when a battery drops out during a solar surplus, the others can swing by up to 1.5 kW in a simulation ([[SAFETY-105]]).
- Two inverters: after a drain ends, a change in house use can go unanswered for about 9 s, because some readings are old ([[SAFETY-106]]).
- Two inverters: when one battery's level is missing, both batteries are held at 0 W, and for about 15 s the last command stays on ([[SAFETY-108]]).
- Two inverters: if one battery's level stays missing for 12 h, the other battery's cycle can be marked failed, with a 7-day wait and a notice, though it is healthy. This comes from reading the code; it has not been seen on a site ([[MAINT-17]]).
- When the 15-minute demand forecast sensor counts the battery's own charge, the maintenance charge runs at about half the power the peak limit leaves, so it takes about twice as long. Seen on a site: about 1.2 kW instead of 2.5 kW, and the peak limit was kept ([[SAFETY-111]]).
- One inverter: after a link drop, the battery's own safety stop to 0 W can be taken as a refusal, and the site stays at 0 W for up to 15 min ([[SAFETY-102]]).
- After a Home Assistant restart, control still waits until Home Assistant has finished starting, which can take several minutes, though the readings are already there ([[SAFETY-115]]).
- While Home Assistant is not answering, the page can list inverters as refusing commands and sensors as missing, and send you to Developer Tools, though they are fine ([[UX-37]]).
- If Home Assistant hangs or stops, the page keeps saying "Waiting for Home Assistant" and never turns into an alarm ([[SAFETY-113]]).
- Right after Home Assistant has started, the page can say for about 4 s that an inverter cannot be controlled, and the first command can come late ([[SAFETY-114]]).
- After a Home Assistant restart, the controller status sensor can still say "running" while the add-on cannot control. It was seen once, and the cause is not known ([[SAFETY-116]]).
- Battery modes on: after a planned top-up from the grid, the Batteries screen can say "Enough sun is forecast" ([[UX-32]]).
- Battery modes on: the forecast line "we count on" can show more sun than the plan counts, because the plan takes house use off first ([[UX-33]]).
- Battery modes on: before a planned top-up, the Today list shows a smaller "gives" amount than the plan will use; it grows as the charge happens ([[UX-34]]).
- Two inverters, battery modes on: while the other battery is in its maintenance charge, a battery's card can say it charges from the grid while it stays at 0 W ([[OPT-18]]).
- Two inverters, battery modes on: while a battery refuses to charge in a cheap run, the action log on the page gets about 8 lines an hour for its retries, and the page hint says "waiting for a better price" ([[UX-38]]).
- A battery in a safety stop, or one the add-on cannot reach, can still be started for a cycle, and its drain then waits about 12 h and ends in a failed-cycle notice. This comes from reading the code; it has not been seen on a site ([[MAINT-19]]).
- On the Settings page, the rows of the solar forecast lists are labelled "Phase 1", "Phase 2" instead of "Sensor 1", "Sensor 2" ([[UX-27]]).
- In the solar forecast list, a blank or repeated row makes "source 2 of 2" count differently from the rows on the Settings page ([[UX-28]]).
- The solar forecast message says "has no reading" also when the sensor shows a number that is too old or in the wrong unit ([[UX-29]]).
- If you use only the forecast lists, two Settings notes sit on the single-sensor field, and one of them tells you to set that field ([[UX-30]]).
- After a restart during a price outage, the "No prices" message can say "yet" when prices did come in earlier ([[UX-39]]).
- On the new settings page, you cannot see whether a price service token is set. Check the Configuration tab ([[UX-41]]).
- On the classic settings page, the first click on Save after editing a field can do nothing. Click again ([[UX-42]]).
- A steady overload on a 1 s meter can warn, and send the Home Assistant notification, 2 or 3 times at the start of each 15-minute period instead of once. The peak limit is still kept ([[SAFETY-122]]).
- A fixed tariff is priced once per hour, so a price window that starts or ends at :15, :30 or :45 gets the wrong price for part of that hour. Windows that start and end on the hour are right ([[TARIFF-23]]).
- Step 6 of the setup wizard stays empty because of an error in the page, in English and in Dutch ([[UX-51]]).
- On Dutch pages, refusal texts, the last-event line under the Home buttons, the installer details and the trading status sentences are still English, and a few Dutch texts read badly, such as "1 metingen geweigerd" ([[UX-52]]).
- Home can show a grid charge that the add-on will not take: the rest of a cheap run that the trade check refuses (battery modes on), or a charge after the last dear price period (battery modes off). The battery stays idle then ([[UX-53]]).
- Some price texts say "hour" where the add-on acts on a 15-minute period, such as "cheapest hour" ([[UX-47]]).
- After the add-on restarts, the Home price chart shows no price for the earlier part of today, and the setup check can say "12 of 24 hours", though the prices are known ([[UX-48]]).
- With battery modes on and only batteries on "Leftover solar", the Home price chart can mark a cheap period where no battery charges ([[UX-49]]).
- On a phone, the bars of the Home price chart are too thin to tap one 15-minute period. The arrow keys work ([[UX-50]]).
### If you are crossing from a version older than 0.10.0
`## 0.10.0` below can refuse an old config: `slew_w` above its limit, and the
withdrawn `price_provider` ids `engie_dynamic`, `totalenergies_dynamic` and
`eneco_eddy`. Read it before you update. Run `tools/predeploy_check.py` with the
bare options (`jq '.data.options'`) first.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01Bdqr7PiaHcBnzPituu2yTC
Bump version to 0.18.3 and add the 0.18.3 CHANGELOG section: DOC-8, UX-45,
SAFETY-119, SAFETY-121, UX-46, PRICE-02. A patch bump: no option added,
removed or renamed, no default changed.
Co-Authored-By: Claude <noreply@anthropic.com>
Owner chose 0.19.0 (2026-10-26) because PRICE-02 changes trading behaviour.
Version and CHANGELOG heading/first line only; no option changes.
Co-Authored-By: Claude <noreply@anthropic.com>
admin
changed title from Release 0.18.3 to Release 0.19.02026-10-26 00:15:53 +01:00
Review of 31d09eb (router T96 round 3 PASS): text findings, all fixed in b7108e5 (CHANGELOG 0.19.0 section only; config.yaml and the heading unchanged)
Checks on b7108e5: diff is config.yamlversion + the new section only, and the older sections are byte-identical to aa22806. Options 86/86, schema and every option the same as c67d0cd, no default changed. The first-parent merges are exactly the six. Offline (goodwe-addon-checks:1, --network none): test_version_gate, test_docs, test_defaults_pin, test_validate, test_tool_inputs rc 0. Predeploy --deployed-version 0.18.2 on the live options CLEARED, no warnings. Mutation: heading ## 0.19.1 fails test_version_gate, and so does version 0.19.1; restored, it passes again.
Findings:
F1 (low-medium, CHANGELOG.md:6 and :10): "trades longer" was said for all price trading. The 1.5-2.5x figure is the modes-off verdict over 16 real days. With battery modes on, the gate now refuses where only an ended cheap period cleared the spread, so the battery charges less (PRICE-02 test check 2: head 15 min of grid charge, base 28 min; DECISIONS PRICE-02 line 9). Also "still ahead" read as if the period in progress were dropped; it is kept (end <= now). Fixed: line 6 gives the reason as "price trading changes when the battery charges and gives power"; line 10 says "not over yet", scopes the longer trading to modes off with 15-minute prices, and adds "with battery modes on, it no longer charges from the grid because of a cheap period that is over".
F2 (low, CHANGELOG.md:20, UX-46 row): "setup wizard lines now show Dutch text where they showed English". The wizard's checks are drawn only in step 6 (settings.js:818), and step 6 fails on base and head alike (UX-51; UX-46 test: "the check list stays empty"). So users saw neither English nor Dutch there. Fixed: "...and so do the setup wizard's checks once UX-51 is fixed."
F3 (low, CHANGELOG.md:19, e077ae7 row): the limit was too broad and too vague. The quiet periods were measured with a jittery 15 or 20 s meter and an overload of about 100 W: up to 4 quarters (1 h). A jittery 30 s meter warned every quarter (SAFETY-121 dev and review tables, DECISIONS Limits). Fixed: "with an uneven meter of about 15 to 20 s and a small overload, it can stay quiet for up to an hour".
F4 (nit, CHANGELOG.md:5): the headline. It said "a new Home price chart", but it is the same chart in 15-minute bars, and it left out DOC-8. Fixed: "the Home price chart in 15-minute bars, more Dutch text and EMS-port wording".
Left as they are, with what I checked:
Minor bump: right. No option change; PRICE-02 changes when the battery trades (owner's call, 2026-10-26).
Known issues: keeping SAFETY-92 is right. Its case is the same hand-back mechanism on a lagging plant, but SAFETY-119/121 never tested that case, and the card is To Do. All 9 added cards are To Do and read true against their cards. I agree with leaving out SAFETY-120 (the shipped base image has tzdata), TEST-32 (rig only), SMA/HW (no code), AUDIT-01 (Done) and the findings that have no card.
Info: the e077ae7 row's "no longer appear" holds on the rig (0 of 60 edges) and with steady meters. With a jittery 15-30 s meter and the test's 2-cycle meter delay, the sim still showed the false alarm on 4-5 of 11 seeds (11 of 11 without the fix). I did not add this, because the row is already at two sentences and that case is a pessimistic sim.
The PR body's verbatim section is updated to b7108e5. I will merge, with head_commit_id pinned to b7108e5, once checks / unit (pull_request) is green on it.
**Review of 31d09eb (router T96 round 3 PASS): text findings, all fixed in b7108e5** (CHANGELOG 0.19.0 section only; `config.yaml` and the heading unchanged)
Checks on b7108e5: diff is `config.yaml` `version` + the new section only, and the older sections are byte-identical to aa22806. Options 86/86, schema and every option the same as c67d0cd, no default changed. The first-parent merges are exactly the six. Offline (`goodwe-addon-checks:1`, `--network none`): test_version_gate, test_docs, test_defaults_pin, test_validate, test_tool_inputs rc 0. Predeploy `--deployed-version 0.18.2` on the live options CLEARED, no warnings. Mutation: heading `## 0.19.1` fails test_version_gate, and so does `version` 0.19.1; restored, it passes again.
Findings:
- **F1 (low-medium, CHANGELOG.md:6 and :10): "trades longer" was said for all price trading.** The 1.5-2.5x figure is the modes-off verdict over 16 real days. With battery modes on, the gate now refuses where only an ended cheap period cleared the spread, so the battery charges less (PRICE-02 test check 2: head 15 min of grid charge, base 28 min; DECISIONS PRICE-02 line 9). Also "still ahead" read as if the period in progress were dropped; it is kept (`end <= now`). Fixed: line 6 gives the reason as "price trading changes when the battery charges and gives power"; line 10 says "not over yet", scopes the longer trading to modes off with 15-minute prices, and adds "with battery modes on, it no longer charges from the grid because of a cheap period that is over".
- **F2 (low, CHANGELOG.md:20, UX-46 row): "setup wizard lines now show Dutch text where they showed English".** The wizard's checks are drawn only in step 6 (`settings.js:818`), and step 6 fails on base and head alike (UX-51; UX-46 test: "the check list stays empty"). So users saw neither English nor Dutch there. Fixed: "...and so do the setup wizard's checks once [[UX-51]] is fixed."
- **F3 (low, CHANGELOG.md:19, e077ae7 row): the limit was too broad and too vague.** The quiet periods were measured with a jittery 15 or 20 s meter and an overload of about 100 W: up to 4 quarters (1 h). A jittery 30 s meter warned every quarter (SAFETY-121 dev and review tables, DECISIONS Limits). Fixed: "with an uneven meter of about 15 to 20 s and a small overload, it can stay quiet for up to an hour".
- **F4 (nit, CHANGELOG.md:5): the headline.** It said "a new Home price chart", but it is the same chart in 15-minute bars, and it left out DOC-8. Fixed: "the Home price chart in 15-minute bars, more Dutch text and EMS-port wording".
Left as they are, with what I checked:
- **Minor bump:** right. No option change; PRICE-02 changes when the battery trades (owner's call, 2026-10-26).
- **Known issues:** keeping SAFETY-92 is right. Its case is the same hand-back mechanism on a lagging plant, but SAFETY-119/121 never tested that case, and the card is To Do. All 9 added cards are To Do and read true against their cards. I agree with leaving out SAFETY-120 (the shipped base image has tzdata), TEST-32 (rig only), SMA/HW (no code), AUDIT-01 (Done) and the findings that have no card.
- Info: the e077ae7 row's "no longer appear" holds on the rig (0 of 60 edges) and with steady meters. With a jittery 15-30 s meter and the test's 2-cycle meter delay, the sim still showed the false alarm on 4-5 of 11 seeds (11 of 11 without the fix). I did not add this, because the row is already at two sentences and that case is a pessimistic sim.
The PR body's verbatim section is updated to b7108e5. I will merge, with `head_commit_id` pinned to b7108e5, once `checks / unit (pull_request)` is green on it.
admin
merged commit 514256923b into release/1.02026-10-26 03:10:28 +01:00
Merged with head_commit_id pinned to b7108e552d (HTTP 200). CI on b7108e5: run 1390 checks / unit (pull_request) success (real run, 02:21-03:09, attempt 1), run 1391 infra-pin / fresh success.
Merge commit 514256923b (parents aa22806, b7108e5; tree identical to b7108e5). ls-remote after the merge: release/1.0 5142569, release-0.18.3 b7108e5, master ad374ae (unchanged). No tag, no master PR, no deploy.
**Merged** with `head_commit_id` pinned to b7108e552d5e8f81d9cfb2a4cc9a11b3afa613ac (HTTP 200). CI on b7108e5: run 1390 `checks / unit (pull_request)` success (real run, 02:21-03:09, attempt 1), run 1391 `infra-pin / fresh` success.
Merge commit 514256923b668358047bc459651f489fa3e3b1bc (parents aa22806, b7108e5; tree identical to b7108e5). ls-remote after the merge: release/1.0 5142569, release-0.18.3 b7108e5, master ad374ae (unchanged). No tag, no master PR, no deploy.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Release cut after 0.18.2 (REL-0.18.3, dev; round 2: renamed to 0.19.0). Not merged; no tag, no deploy.
Version: 0.19.0 (minor), the owner's choice on 2026-10-26 because PRICE-02 changes trading behaviour.
config.yamloptions/schema are unchanged (86/86; only the description text changed), no option default changed, and the validator gained no rule that can refuse a stored options file. Existing installs need no option change.Files:
goodwe_controller/config.yaml(version:) andgoodwe_controller/CHANGELOG.md(new section). No code. The branch keeps its namerelease-0.18.3.Contents (first-parent, c67d0cd..aa22806):
243a756DOC-8 (#201),75f0804UX-45 (#202),bee7431SAFETY-119 (#203),e077ae7SAFETY-121 (#204),90bc901UX-46 (#205),aa22806PRICE-02 (#206).CHANGELOG section (verbatim; review text fixes in
b7108e5)0.19.0
A minor bump: price trading behaves differently, plus a fix for a false warning, the Home price chart in 15-minute bars, more Dutch text and EMS-port wording, and no option changes.
No option was added, removed or renamed, and no default changed (86 options). It is a minor bump because price trading changes when the battery charges and gives power; every saved setting still starts.
Existing installs need no option change: options that start 0.18.2 also
start 0.19.0. The changes below apply with one inverter or two.
Price trading skips periods that are over. When the add-on trades on price, it now picks only from price periods that are not over yet. With battery modes off and 15-minute prices, the battery therefore trades for longer (about 1.5 to 2.5 times the minutes in a simulation of 16 real days), so it cycles more; with battery modes on, it no longer charges from the grid because of a cheap period that is over. Hourly and day/night sites change too: they no longer pause at the start of each hour.
Contents of this release, in merge order since 0.18.2 (
c67d0cd):243a75675f0804bee7431e077ae790bc901aa22806Known issues
If you are crossing from a version older than 0.10.0
## 0.10.0below can refuse an old config:slew_wabove its limit, and thewithdrawn
price_provideridsengie_dynamic,totalenergies_dynamicandeneco_eddy. Read it before you update. Runtools/predeploy_check.pywith thebare options (
jq '.data.options') first.🤖 Generated with Claude Code
https://claude.ai/code/session_01Bdqr7PiaHcBnzPituu2yTC
Release 0.18.3to Release 0.19.0Review of
31d09eb(router T96 round 3 PASS): text findings, all fixed inb7108e5(CHANGELOG 0.19.0 section only;config.yamland the heading unchanged)Checks on
b7108e5: diff isconfig.yamlversion+ the new section only, and the older sections are byte-identical toaa22806. Options 86/86, schema and every option the same asc67d0cd, no default changed. The first-parent merges are exactly the six. Offline (goodwe-addon-checks:1,--network none): test_version_gate, test_docs, test_defaults_pin, test_validate, test_tool_inputs rc 0. Predeploy--deployed-version 0.18.2on the live options CLEARED, no warnings. Mutation: heading## 0.19.1fails test_version_gate, and so doesversion0.19.1; restored, it passes again.Findings:
end <= now). Fixed: line 6 gives the reason as "price trading changes when the battery charges and gives power"; line 10 says "not over yet", scopes the longer trading to modes off with 15-minute prices, and adds "with battery modes on, it no longer charges from the grid because of a cheap period that is over".settings.js:818), and step 6 fails on base and head alike (UX-51; UX-46 test: "the check list stays empty"). So users saw neither English nor Dutch there. Fixed: "...and so do the setup wizard's checks once UX-51 is fixed."e077ae7row): the limit was too broad and too vague. The quiet periods were measured with a jittery 15 or 20 s meter and an overload of about 100 W: up to 4 quarters (1 h). A jittery 30 s meter warned every quarter (SAFETY-121 dev and review tables, DECISIONS Limits). Fixed: "with an uneven meter of about 15 to 20 s and a small overload, it can stay quiet for up to an hour".Left as they are, with what I checked:
e077ae7row's "no longer appear" holds on the rig (0 of 60 edges) and with steady meters. With a jittery 15-30 s meter and the test's 2-cycle meter delay, the sim still showed the false alarm on 4-5 of 11 seeds (11 of 11 without the fix). I did not add this, because the row is already at two sentences and that case is a pessimistic sim.The PR body's verbatim section is updated to
b7108e5. I will merge, withhead_commit_idpinned tob7108e5, oncechecks / unit (pull_request)is green on it.Merged with
head_commit_idpinned tob7108e552d(HTTP 200). CI onb7108e5: run 1390checks / unit (pull_request)success (real run, 02:21-03:09, attempt 1), run 1391infra-pin / freshsuccess.Merge commit
514256923b(parentsaa22806, b7108e5; tree identical tob7108e5). ls-remote after the merge: release/1.05142569, release-0.18.3b7108e5, masterad374ae(unchanged). No tag, no master PR, no deploy.