Skip to main content

Python client library for automation and control of an EV Wallbox charger via local API or cloud endpoints

Project description

Drivee Client

A Python client library for automation and control of EV Wallbox chargers via the Drivee cloud API.

PyPI version Python Support License: MIT

Installation

pip install drivee-client

Quick Start

import asyncio
from drivee_client import DriveeClient

async def main():
    async with DriveeClient("username", "password") as client:
        await client.init()
        
        # Get charge point info
        charge_point = await client.get_charge_point()
        print(f"Charge point: {charge_point.name}")
        print(f"Status: {charge_point.evse.status}")
        
        # Start charging
        response = await client.start_charging()
        print(f"Started session: {response.session.id}")
        
        # Get charging history
        history = await client.get_charging_history()
        for session in history.sessions:
            print(f"Session {session.id}: {session.energy/1000:.2f}kWh")

if __name__ == "__main__":
    asyncio.run(main())

Features

  • Async/await support - Built with aiohttp for non-blocking I/O
  • Type-safe - Full type hints with Pydantic models
  • Error handling - Comprehensive error handling with custom exceptions
  • Rate limiting - Built-in retry logic with exponential backoff
  • Clean architecture - Separation of DTOs and business models
  • Domain validation - Business rule validation in model layer

Architecture

The client library follows a clear separation of concerns with three main layers:

Data Transfer Objects (DTOs)

Located in dtos/, these are pure data classes that:

  • Match the exact structure of API responses
  • Use Pydantic for validation and serialization
  • Have no business logic
  • Follow naming convention: All DTO classes end with 'DTO' suffix
  • Are only used within the model layer

Business Models

Located in models/, these classes:

  • Encapsulate DTOs and provide business logic
  • Expose only business-relevant properties and methods
  • Use Protocol-based typing for DTO interfaces
  • Handle all business rules and validations
  • Are the only classes exposed to the Home Assistant integration

API Client

The drivee_client.py handles:

  • REST API communication
  • Authentication
  • Request/response mapping to DTOs
  • Error handling and retries

Installation

  1. Copy the custom_components/drivee folder to your Home Assistant's custom_components directory.
  2. Restart Home Assistant.

Configuration

  1. Go to Home Assistant's Settings > Devices & Services
  2. Click "Add Integration"
  3. Search for "Drivee"
  4. Enter your Drivee API base URL
  5. (Optional) Enter your API key if required

Usage

After configuration, you can control your Drivee device through Home Assistant's interface. The integration will create a switch entity that you can use to control your device.

Development

To develop or modify this integration:

  1. Clone this repository

  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Make your changes

  4. Test the integration locally

  5. Copy the modified files to your Home Assistant's custom_components directory

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

driveeclient-0.1.4.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

driveeclient-0.1.4-py3-none-any.whl (26.6 kB view details)

Uploaded Python 3

File details

Details for the file driveeclient-0.1.4.tar.gz.

File metadata

  • Download URL: driveeclient-0.1.4.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for driveeclient-0.1.4.tar.gz
Algorithm Hash digest
SHA256 bb0c8dd960bebed493df2262e815da84731fb013f8ceab818410d34b18c0853d
MD5 b13e6c1fd8e0d10401a8e216e6dd3ea6
BLAKE2b-256 3b56b4c24dd12a05aef932a264b4ef199cb465f8b63ea16bf921ac7c5547259f

See more details on using hashes here.

Provenance

The following attestation bundles were made for driveeclient-0.1.4.tar.gz:

Publisher: python-publish.yml on thomas3650/driveeClient

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file driveeclient-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: driveeclient-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 26.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for driveeclient-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6d097c6c56f1f244124d555394c7bb45fb5f52396e2239267b25978ca58d0858
MD5 7e5f49aee7f5826cc04af060be42361e
BLAKE2b-256 5c08742f0085cb64fc94c924570dfc0d4333b0b2506623136e7e004a98e751b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for driveeclient-0.1.4-py3-none-any.whl:

Publisher: python-publish.yml on thomas3650/driveeClient

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page