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.3.tar.gz (22.4 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.3-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: driveeclient-0.1.3.tar.gz
  • Upload date:
  • Size: 22.4 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.3.tar.gz
Algorithm Hash digest
SHA256 15120855f36d4f180d3b25ef460ab355592c245307423b46511576f2571e350a
MD5 dc2802d18fb6cd6ad319f5211c992349
BLAKE2b-256 6fbfbea2dccbff4cbe530aef37cc7540c8a4432b43b24dd8c8491efc87f06b87

See more details on using hashes here.

Provenance

The following attestation bundles were made for driveeclient-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: driveeclient-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 26.3 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b2c42a3fa772b5ae1adb8271e31d87a300a85b877a10d1798c215002e33918d6
MD5 165e735a6c46ab5b343746be029c7857
BLAKE2b-256 58fa64b3e87f03c4c638bd35821b56ed35f53bf65a9e280a89252bffbd8ddf10

See more details on using hashes here.

Provenance

The following attestation bundles were made for driveeclient-0.1.3-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