Skip to content

chore(deps-dev): bump ebus-panel-sim from 0.8.0 to 0.9.0 - #214

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/ebus-panel-sim-0.9.0
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/ebus-panel-sim-0.9.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 11, 2026

Copy link
Copy Markdown
Contributor

Bumps ebus-panel-sim from 0.8.0 to 0.9.0.

Release notes

Sourced from ebus-panel-sim's releases.

v0.9.0

BREAKING (wire). The BESS child's meter/active-power changes sign, unless the span variant's panel reports SPAN firmware before release 202639. A panel with no commissioned BESS no longer publishes shed or shed-forecast.

BREAKING (behavior). The emitter's own shed/asserted-islanding-state handler now behaves like a SPAN panel's: it accepts ON_GRID or OFF_GRID only while the panel's link to some battery is not known to be healthy, ignores everything else, NONE included, and clears an assertion once every link has been OK for 30 seconds of tick time. A tick that leaves out bess_communication reports every link OK, so against an unchanged producer an assertion written after the first tick, which used to be stored, is now ignored, as the panel does (#31, #60). A producer that registers its own handler is unaffected. Every published $description is unchanged.

Added

  • A producer can model the panel's link to each battery. TickInputs.bess_communication maps a configured BESS instance_id to OK, DEGRADED, LOST or UNKNOWN (the exported BESSCommunication); a battery left out is OK. The value is published as the battery's status/communication-state and drives EbusBatterySnapshot.connected and the connection status of the circuit or lugs that connects the battery. An id that is not a configured BESS, or a value outside BESSCommunication, raises EmitterStateError before anything in the tick is applied.
  • Panel definition files. PanelDefinition (manifest, variant, BESSConfigs, LoadSheddingConfig) is written and read as versioned YAML by dump_definition / load_definition, and Emitter.from_definition builds an emitter from one. Metadata is read exactly as written; config and tick fields are converted to their types and rejected when they do not fit.
  • panel-sim-capture writes a panel definition from a published panel tree, read live over MQTT or from a tree-v1 snapshot file, masking serials and IDs by default and reporting every value it had to default or could not express. Live capture verifies the broker with --cafile or explicitly skips it with --insecure, --root picks one enclosure on a shared broker, and --generic-names replaces circuit names with Circuit <n>. --record N also writes a live recording as replayable ticks, battery link state included, read back by load_ticks (and written by dump_ticks). ebus_panel_sim.capture exposes the steps as functions.
  • Circuit metadata key commissioned-system (pv | backup): the circuit a SPAN panel adds for a commissioned PV or battery system. It locks the relay and fixes load-shed/priority at NEVER, neither settable. Any other default-priority, or an unknown system, is rejected at construction. CircuitPhysics gains commissioned_system (default None) and a priority_locked property. panel-sim-capture maps such circuits back.
  • PanelPhysics.release_build: the SPAN release build the panel's firmware-version names (spanos2/r202633/02 is 202633), or None.
  • A profile overlay can remove what the base declares. A null capability or property in a profiles/span/*.json overlay removes it from the span variant, as in JSON Merge Patch (RFC 7396). Removing one the base lacks, or every property of a capability, raises ProfileValidationError.

Changed

  • The shipped example is a panel definition file and a tick file (examples/forty_tab_minimal.yaml, examples/forty_tab_minimal.ticks.yaml), loaded by load_definition / load_ticks; its own YAML profile format and loader are gone. Circuit IDs are now readable (kitchen-lights), PCS priorities are fixed in the file rather than numbered by position, the two circuits on the legacy NICE_TO_HAVE priority (published as UNKNOWN) are SOC_THRESHOLD and NEVER, and a load-shedding config plus a third, off-grid tick exercise shedding and relay-requester = LOAD_SHED.
  • BESS meter/active-power is positive while discharging. That is the battery's own frame, as devices/bess.md defines it, and makes it the negative of the panel's power-flows/battery (positive toward the battery). 0.6.0 made the two equal, matching SPAN firmware at the time; SPAN firmware makes the same reversal in release 202639. The span variant keeps the earlier sign when the panel's firmware-version names an earlier release (a /-separated segment r plus six digits, as in spanos2/r202633/02), while the reference variant, and a firmware string naming no release such as the example's example/v0.1.0, always publish the new one.
  • shed and shed-forecast are published only when at least one BESS is commissioned, as devices/distribution-enclosure.md specifies, in both variants.
  • config/user-max-charge-current is unpublished until a user sets it. A /set must be an integer and is clamped into [6, max-charge-current]; anything else is refused and the value left unchanged. $format is the per-EVSE range 6:<max-current-a>. Under the same firmware rule as the BESS sign, a panel on SPAN firmware before release 202639 publishes it at max-current-a until a user sets one, as that firmware did.
  • The example has two PV inverters, each on a commissioned-system: pv circuit and each IDed <panel>-<serial or model> (lowercased, non-alphanumerics as hyphens) with a per-inverter discriminator, as a SPAN panel IDs them.
  • The islanding assertion follows the battery link, as described above: accepted before the first tick when a battery is configured, since no link has been observed yet, and afterwards only while some battery's link is not OK; NONE and other values ignored; cleared after ASSERTION_CLEAR_AFTER_S (30 s) with every link OK. Any unhealthy tick restarts that wait.
  • A connection status reports the link the way the variant's panel does. The circuit or lugs connecting a battery publishes the link health on feeds-device-status or fed-by-device-status. The span variant reports DEGRADED and UNKNOWN there as LOST, as a SPAN panel does while still declaring the catalog's OK,LOST,DEGRADED; the reference variant publishes DEGRADED as is and only UNKNOWN, which no connection catalog declares, as LOST.
  • EbusBatterySnapshot.communication admits UNKNOWN, the fourth value of the status catalog's communication-state.
Changelog

Sourced from ebus-panel-sim's changelog.

[0.9.0] - 2026-10-06

BREAKING (wire). The BESS child's meter/active-power changes sign, unless the span variant's panel reports SPAN firmware before release 202639. A panel with no commissioned BESS no longer publishes shed or shed-forecast.

BREAKING (behavior). The emitter's own shed/asserted-islanding-state handler now behaves like a SPAN panel's: it accepts ON_GRID or OFF_GRID only while the panel's link to some battery is not known to be healthy, ignores everything else, NONE included, and clears an assertion once every link has been OK for 30 seconds of tick time. A tick that leaves out bess_communication reports every link OK, so against an unchanged producer an assertion written after the first tick, which used to be stored, is now ignored, as the panel does (#31, #60). A producer that registers its own handler is unaffected. Every published $description is unchanged.

Added

  • A producer can model the panel's link to each battery. TickInputs.bess_communication maps a configured BESS instance_id to OK, DEGRADED, LOST or UNKNOWN (the exported BESSCommunication); a battery left out is OK. The value is published as the battery's status/communication-state and drives EbusBatterySnapshot.connected and the connection status of the circuit or lugs that connects the battery. An id that is not a configured BESS, or a value outside BESSCommunication, raises EmitterStateError before anything in the tick is applied.
  • Panel definition files. PanelDefinition (manifest, variant, BESSConfigs, LoadSheddingConfig) is written and read as versioned YAML by dump_definition / load_definition, and Emitter.from_definition builds an emitter from one. Metadata is read exactly as written; config and tick fields are converted to their types and rejected when they do not fit.
  • panel-sim-capture writes a panel definition from a published panel tree, read live over MQTT or from a tree-v1 snapshot file, masking serials and IDs by default and reporting every value it had to default or could not express. Live capture verifies the broker with --cafile or explicitly skips it with --insecure, --root picks one enclosure on a shared broker, and --generic-names replaces circuit names with Circuit <n>. --record N also writes a live recording as replayable ticks, battery link state included, read back by load_ticks (and written by dump_ticks). ebus_panel_sim.capture exposes the steps as functions.
  • Circuit metadata key commissioned-system (pv | backup): the circuit a SPAN panel adds for a commissioned PV or battery system. It locks the relay and fixes load-shed/priority at NEVER, neither settable. Any other default-priority, or an unknown system, is rejected at construction. CircuitPhysics gains commissioned_system (default None) and a priority_locked property. panel-sim-capture maps such circuits back.
  • PanelPhysics.release_build: the SPAN release build the panel's firmware-version names (spanos2/r202633/02 is 202633), or None.
  • A profile overlay can remove what the base declares. A null capability or property in a profiles/span/*.json overlay removes it from the span variant, as in JSON Merge Patch (RFC 7396). Removing one the base lacks, or every property of a capability, raises ProfileValidationError.

Changed

  • The shipped example is a panel definition file and a tick file (examples/forty_tab_minimal.yaml, examples/forty_tab_minimal.ticks.yaml), loaded by load_definition / load_ticks; its own YAML profile format and loader are gone. Circuit IDs are now readable (kitchen-lights), PCS priorities are fixed in the file rather than numbered by position, the two circuits on the legacy NICE_TO_HAVE priority (published as UNKNOWN) are SOC_THRESHOLD and NEVER, and a load-shedding config plus a third, off-grid tick exercise shedding and relay-requester = LOAD_SHED.
  • BESS meter/active-power is positive while discharging. That is the battery's own frame, as devices/bess.md defines it, and makes it the negative of the panel's power-flows/battery (positive toward the battery). 0.6.0 made the two equal, matching SPAN firmware at the time; SPAN firmware makes the same reversal in release 202639. The span variant keeps the earlier sign when the panel's firmware-version names an earlier release (a /-separated segment r plus six digits, as in spanos2/r202633/02), while the reference variant, and a firmware string naming no release such as the example's example/v0.1.0, always publish the new one.
  • shed and shed-forecast are published only when at least one BESS is commissioned, as devices/distribution-enclosure.md specifies, in both variants.
  • config/user-max-charge-current is unpublished until a user sets it. A /set must be an integer and is clamped into [6, max-charge-current]; anything else is refused and the value left unchanged. $format is the per-EVSE range 6:<max-current-a>. Under the same firmware rule as the BESS sign, a panel on SPAN firmware before release 202639 publishes it at max-current-a until a user sets one, as that firmware did.
  • The example has two PV inverters, each on a commissioned-system: pv circuit and each IDed <panel>-<serial or model> (lowercased, non-alphanumerics as hyphens) with a per-inverter discriminator, as a SPAN panel IDs them.
  • The islanding assertion follows the battery link, as described above: accepted before the first tick when a battery is configured, since no link has been observed yet, and afterwards only while some battery's link is not OK; NONE and other values ignored; cleared after ASSERTION_CLEAR_AFTER_S (30 s) with every link OK. Any unhealthy tick restarts that wait.
  • A connection status reports the link the way the variant's panel does. The circuit or lugs connecting a battery publishes the link health on feeds-device-status or fed-by-device-status. The span variant reports DEGRADED and UNKNOWN there as LOST, as a SPAN panel does while still declaring the catalog's OK,LOST,DEGRADED; the reference variant publishes DEGRADED as is and only UNKNOWN, which no connection catalog declares, as LOST.
  • EbusBatterySnapshot.communication admits UNKNOWN, the fourth value of the status catalog's communication-state.
Commits
  • 2dbddf7 Merge pull request #67 from electrification-bus/release/0.9.0
  • cb910c7 release: 0.9.0 (SPAN release 202639 conventions, commissioned-system circuits...
  • 9bc0a6b Merge pull request #65 from electrification-bus/feat/span-r202639-conventions
  • e453d64 test: captures of a MAIN 32 on SPAN release 202639
  • c3b3d3b docs: point the BESS sign rule at the firmware-keyed resolver
  • 2e1d0f0 feat: key the BESS meter sign and EVSE user limit on the panel firmware
  • 9e18720 docs: CHANGELOG entry for the unreleased SPAN-tracking changes
  • 26745c5 fix: publish shed and shed-forecast only with a commissioned BESS
  • e9a6ce5 feat: clamp EVSE user-max-charge-current writes and advertise the range
  • 7156c0d feat(capture): map commissioned-system circuits back
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [ebus-panel-sim](https://github.com/electrification-bus/distribution-enclosure-simulator) from 0.8.0 to 0.9.0.
- [Release notes](https://github.com/electrification-bus/distribution-enclosure-simulator/releases)
- [Changelog](https://github.com/electrification-bus/distribution-enclosure-simulator/blob/main/CHANGELOG.md)
- [Commits](electrification-bus/distribution-enclosure-simulator@v0.8.0...v0.9.0)

---
updated-dependencies:
- dependency-name: ebus-panel-sim
  dependency-version: 0.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Oct 11, 2026
@github-actions

Copy link
Copy Markdown
Contributor

ebus-panel-sim is not auto-merged.

It produces the schema_1 reference capture. Re-run scripts/capture_parent_child_reference.py on this branch, commit the capture, and review what moved on the wire before merging.

@dependabot @github

dependabot Bot commented on behalf of github Oct 14, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/pip/ebus-panel-sim-0.9.0 branch October 14, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant