Changelog¶
Each user-visible change, under the release it ships in.
[Unreleased]¶
[0.1.3] - 2026-10-18¶
Changed (documentation)¶
- The README, the documentation's home page, the install page and the package docstrings no longer say that the plant model stands alone; how to use it without the prices is its how-to (Use the plant model on its own).
[0.1.2] - 2026-10-18¶
Fixed (documentation)¶
- The documentation's home page: What makes it different is How it prices; the
parts name
microgrid.plant, the plant model, apart frommicrogrid.engine; the line saying to install from the git repository is gone (it is on PyPI).
[0.1.1] - 2026-10-18¶
Changed (documentation)¶
- The README, the documentation's home page and the package's summary say what the
library takes and returns, without the "data in, data out" slogan; why it does no I/O
is in Scope (
docs/methodology/scope.md).
[0.1.0] - 2026-10-18¶
The first version, under the MIT license.
Added (library)¶
- The plant model,
microgrid.plant. A plant described as data (plant/2): PV arrays of either coupling, a battery on its own inverter or on a hybrid's DC bus, loads on either bus, the grid's limits, grid-charge and export windows, hold rules and the meters.Plant.projectruns it slot by slot. It stands alone: importing it loads none of the price code. Four example plants (microgrid.plant.examples), and a port for a plant model of your own (microgrid.plant.port:PlantModel,Storage), checked bymicrogrid.engine.testing.assert_plant_model_contract. - The price model,
microgrid.engine. Marginal prices from inputs given as time series (Inputs: prices, PV forecast quantiles, the load forecast, the SOC, the battery's lots). For each slot it gives: - the marginal cost, and the same for a dull day (the PV forecast's p10);
- the regime, the certainties and the surplus;
- the supply stack;
- the value of a PV kWh and of a battery kWh diverted to a flexible load.
Engine.value gives these as a valuation (valuation/2). Engine.live_session
gives a live value between valuations.
- A battery kWh is priced at the running average cost of what the battery holds
(Pricing.battery_value = "stored_cost"), or by the make-up rule ("replacement").
- Missing or stale inputs move values toward the import price, and the valuation
names them in degraded.
- Configuration: engine/2.
- Series and units (microgrid.engine.series, microgrid.engine.units).
- Forecasts are series of issues, read as a client had them at a moment.
- Units are converted at the edge.
- Money is in the prices' currency, never converted, and no name says one.
- The battery's lots (microgrid.engine.ledger): what the battery holds by source,
and what it cost.
- Analysis (microgrid.engine.analysis): the plant model scored against its meters,
and valuations scored against what each kWh realised.
Added (command)¶
microgridon a dataset (dataset/1):value,live,replay,check-plant,ledger,fit-battery,config checkandschema. A dataset whose prices name two currencies is refused.microgridon live sources (sources/1, thesourcesextra):sources,nowandfetch. Each input comes from a provider's Home Assistant integration (TariffKit, Solcast, EMHASS, Predbat) or an entity.- The example dataset (
examples/dataset): a synthetic week of an example plant in Europe/Berlin, across the DST change, with the outputs it is expected to give.
Added (releases)¶
- Versions and releases: semantic versioning, explained beside the formats', the
API's and the model's versions (
docs/reference/versions.md);microgrid --versionprints the release with the API (engine-api/5) and the model (pricing/1.3) it carries. Releases are published to PyPI from a tag (vX.Y.Z).
Added (documentation)¶
- The documentation: the methodology and the library's requirements (R-1 to R-9),
the concepts, how-to guides and the reference, published with each release at
https://eman.github.io/microgrid/.