Skip to content

flexiblepower/s2-python

Repository files navigation

Python Wrapper for S2 Flexibility Protocol

PyPI - Version

PyPI - Python Version

PyPI - License

This Python package implements the message validation for the EN50491-12-2 "S2" standard for home and building energy management. This implementation is based on the asyncapi description of the protocol provided in the s2-ws-json repository.

To Install

You can install this package using pip or any Python dependency manager that collects the packages from PyPI:

pip install s2-python
pip install s2-python[ws]  # for S2 over WebSockets

The packages on PyPI may be found here

Mypy support

s2-python uses pydantic at its core to define the various S2 messages. As such, the pydantic mypy plugin is required for type checking to succeed.

Add to your pyproject.toml:

[tool.mypy]
plugins = ['pydantic.mypy']

Example

from s2python.common import PowerRange, CommodityQuantity

# create s2 messages as Python objects
number_range = PowerRange(
    start_of_range=4.0,
    end_of_range=5.0,
    commodity_quantity=CommodityQuantity.ELECTRIC_POWER_L1,
)
# serialize s2 messages
number_range.to_json()
# deserialize s2 messages
json_str = '{"start_of_range": 4.0, "end_of_range": 5.0, "commodity_quantity": "ELECTRIC.POWER.L1"}'
PowerRange.from_json(json_str)

Development

For development, you can install the required dependencies using the following command:

pip install -e .[testing,development,ws]

The tests can be run using tox:

tox

To build the package, you can use tox as well:

tox -e build,clean

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6