|
1 | 1 | # Release Notes |
2 | 2 |
|
3 | | -## Summary |
4 | | - |
5 | | -New `Quantity` types! These types can have units (power, current, voltage, etc.) and are *type- and unit-safe* in the sense that users can't accidentally sum a power with a voltage, or a power in kW with a power in W. |
6 | | - |
7 | | -## Upgrading |
8 | | - |
9 | | -- `Sample` objects no longer hold `float`s, but rather `Quantity` or one of its subclasses, like `Power`, `Current`, `Energy`, etc. based on the type of values being streamed. |
10 | | - |
11 | | - ```python |
12 | | - sample: Sample[Power] = await battery_pool.power.new_receiver().receive() |
13 | | - power: float = sample.value.as_watts() |
14 | | - ``` |
15 | | - |
16 | | -- `BatteryPool.soc` now streams values of type `Sample[Quantity]`, and `BatteryPool.capacity` now streams values of type `Sample[Energy]`. |
17 | | - |
18 | | - ```python |
19 | | - battery_pool = microgrid.battery_pool() |
20 | | - soc_sample: Sample[Quantity] = await battery_pool.soc.new_receiver().receive() |
21 | | - soc: float = soc_sample.value.base_value |
22 | | - |
23 | | - capacity_sample: Sample[Energy] = await battery_pool.capacity.new_receiver().receive() |
24 | | - capacity: float = soc_sample.value.as_watt_hours() |
25 | | - ``` |
26 | | - |
27 | | -- `MicrogridApiClient.set_power` no longer returns a `protobuf.Empty` result, but a `None`. This won't affect you unless you are using the low level APIs of the SDK. |
28 | | - |
29 | | -## New Features |
30 | | - |
31 | | -- The logical meter has a new method that returns producer power, that is the sum of all energy producers. |
32 | | - |
33 | | -- `Quantity` types (`Power`, `Current`, `Energy`, `Voltage`) for providing type- and unit-safety when dealing with physical quantities. |
34 | | - |
35 | 3 | ## Bug Fixes |
36 | 4 |
|
37 | | -- Two bugs in the ring buffer which is used by the `MovingWindow` class were fixed: |
38 | | - - `len(buffer)` was not considering potentially existing gaps (areas without elements) in the buffer. |
39 | | - - A off-by-one error in the gap calculation logic was fixed that recorded a gap when there was none if an element with a future timestamp was added that would create a gap of exactly 1. |
40 | | - |
41 | | -- A formula engine lifetime issue, when creating higher order formula receivers without holding on to a reference to the engine, was fixed. |
| 5 | +- Fix formatting issue for `Quantity` objects with zero values. |
0 commit comments