Python implementation of Open Charge Point Interface (OCPI) protocol based on fastapi.
Project description
Extrawest OCPI
Python implementation of Open Charge Point Interface (OCPI) protocol based on fastapi.
Requirements
Python >= 3.11.1
Installation
pip install extrawest-ocpi
Make sure to install any ASGI-server supported by fastapi:
pip install uvicorn
Environment Variables
To use this project, you will need to add the following environment variables to your .env file
API_KEY
ANOTHER_API_KEY
PROJECT_NAME
BACKEND_CORS_ORIGINS
OCPI_HOST
OCPI_PREFIX
PUSH_PREFIX
COUNTRY_CODE
PARTY_ID
Usage/Examples
- Implement and connect your db methods inside this Crud class.
crud.py
from typing import Any, Tuple
from py_ocpi.core.enums import ModuleID, RoleEnum, Action
class Crud:
@classmethod
async def get(cls, module: ModuleID, role: RoleEnum, id, *args, **kwargs) -> Any:
...
@classmethod
async def list(cls, module: ModuleID, role: RoleEnum, filters: dict, *args, **kwargs) -> Tuple[list, int, bool]:
...
@classmethod
async def create(cls, module: ModuleID, role: RoleEnum, data: dict, *args, **kwargs) -> Any:
...
@classmethod
async def update(cls, module: ModuleID, role: RoleEnum, data: dict, id, *args, **kwargs) -> Any:
...
@classmethod
async def delete(cls, module: ModuleID, role: RoleEnum, id, *args, **kwargs):
...
@classmethod
async def do(cls, module: ModuleID, role: RoleEnum, action: Action, *args, data: dict = None, **kwargs) -> Any:
...
- Implement all needed module adapters inside Adapter class.
adapter.py
from py_ocpi.modules.versions.enums import VersionNumber
from py_ocpi.modules.locations.v_2_2_1.schemas import Location
class Adapter:
@classmethod
def location_adapter(cls, data: dict, version: VersionNumber) -> Location:
"""Return location."""
return Location(**data)
- Initialize fastapi application
main.py
from py_ocpi import get_application
from py_ocpi.core.enums import RoleEnum
from py_ocpi.modules.versions.enums import VersionNumber
from adapter import Adapter
from crud import Crud
app = get_application(
version_numbers=[VersionNumber.v_2_2_1],
roles=[RoleEnum.cpo],
crud=Crud,
adapter=Adapter,
)
- Run
uvicorn main:app --reload
API Reference
As this project is based on fastapi, use /docs
or redoc/
to check the documentation after the project is running.
Example: http://127.0.0.1:8000/ocpi/docs/
Roadmap
- [in progress] Add support for OCPI v2.1.1
Related
The project was created through inspiration and adaptation of this project PY_OCPI.
License
This project is licensed under the terms of the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for extrawest_ocpi-2023.8.29-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 016b8e312d8e7d1d41ef4a321f1e82fdde58ed2cc9b6b18a1ac8c0c9556392e9 |
|
MD5 | 6e08d2c3fd40c68235e9bea6c72da894 |
|
BLAKE2b-256 | e558c094f398e88e10b05f93204683757709b2f651bfd7f49df551db90e3193d |