Skip to main content

A modern Python library for interacting with the Tigo Energy API

Project description

Tigo Python API Wrapper

A modern, open-source Python library for interacting with the Tigo Energy API.

Features

  • 🔑 Automatic authentication with credentials from environment
  • 📊 Raw API access and convenient DataFrame helpers
  • Built-in rate limiting and error handling
  • 🧪 Well-tested with comprehensive test suite
  • 📈 Advanced analytics including system efficiency and panel performance
  • 🛡️ Type hints for better development experience

Installation

From PyPI (when published)

pip install tigo_python

From GitHub

pip install git+https://github.com/matt-dreyer/tigo_python.git

Development Installation

git clone https://github.com/matt-dreyer/tigo_python.git
cd tigo-python
pip install -e ".[dev]"

Quick Start

1. Set up credentials

Create a .env file in your project root:

TIGO_USERNAME=your_username
TIGO_PASSWORD=your_password

Or set environment variables:

export TIGO_USERNAME=your_username
export TIGO_PASSWORD=your_password

2. Basic usage

from tigo_python import TigoClient

# Credentials loaded automatically from environment
with TigoClient() as client:
    # Get your systems
    systems = client.list_systems()
    system_id = systems["systems"][0]["system_id"]
    
    # Get current performance
    summary = client.get_summary(system_id)
    print(f"Current power: {summary['summary']['last_power_dc']} W")
    
    # Get historical data as DataFrame
    df = client.get_today_data(system_id)
    print(df.head())

3. Advanced analytics

# System efficiency analysis
efficiency = client.calculate_system_efficiency(system_id, days_back=30)
print(f"System efficiency: {efficiency['average_efficiency_percent']:.1f}%")

# Panel performance comparison
panel_perf = client.get_panel_performance(system_id)
print(panel_perf.head())

# Find underperforming panels
problems = client.find_underperforming_panels(system_id, threshold_percent=85)
for panel in problems:
    print(f"Panel {panel['panel_id']}: {panel['efficiency_percent']:.1f}% efficiency")

API Coverage

Core Endpoints

  • Authentication - Login/logout with token management
  • Users - User information and preferences
  • Systems - List systems, get details and layouts
  • Sources - Hardware sources and configurations
  • Objects - System components and hierarchy
  • Data - Combined and aggregate data endpoints
  • Alerts - System alerts and notifications

Data Formats

  • Raw API responses - Direct JSON from Tigo API
  • CSV strings - For integration with other tools
  • Pandas DataFrames - For data analysis and visualization

Error Handling

The library provides specific exceptions for different error scenarios:

from tigo_python.exceptions import TigoAPIError, TigoAuthenticationError

try:
    client = TigoClient("wrong_user", "wrong_pass")
except TigoAuthenticationError as e:
    print(f"Login failed: {e}")
except TigoAPIError as e:
    print(f"API error: {e}")

Rate Limiting

The library automatically handles API rate limits by:

  • Limiting data requests to safe time ranges (≤20,150 minutes)
  • Using appropriate data resolution (minute/hour/day) based on time span
  • Providing helpful warnings when requests are adjusted

Development

Setup

git clone https://github.com/matt-dreyer/tigo_python.git
cd tigo-python
pip install -e ".[dev]"

Running Tests

pytest tests/ -v

Code Quality

# Linting
ruff check tigo_python/

# Type checking  
mypy tigo_python/

# Formatting
ruff format tigo_python/

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes with tests
  4. Ensure code quality checks pass
  5. Submit a pull request

Requirements

  • Python ≥ 3.8
  • httpx ≥ 0.27.0
  • pandas ≥ 2.0.0
  • numpy ≥ 1.24.0

Acknowledgments

This project is inspired by the Rust tigo client by @mrustl.

License

MIT License - see LICENSE for details.


This library is not affiliated with or endorsed by Tigo Energy.

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

tigo_python-0.1.9.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

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

tigo_python-0.1.9-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file tigo_python-0.1.9.tar.gz.

File metadata

  • Download URL: tigo_python-0.1.9.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for tigo_python-0.1.9.tar.gz
Algorithm Hash digest
SHA256 79b18c7b326daa5815153d06f370396646a699245ff7aa74adc2e66ecb967d7e
MD5 dcbe9d9ce8df23ccba75b80580a41801
BLAKE2b-256 fb62d337f359929db9262df6fba9bb20cfb0d62c611c71b3a948404e2cf0493c

See more details on using hashes here.

File details

Details for the file tigo_python-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: tigo_python-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for tigo_python-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 980cb0b6917d084e46042f487502d1e406a7f82898066f4db0f5e87705510269
MD5 ee7d6f068849e4b6d9cc25b9e323c996
BLAKE2b-256 b68e9fcd9f06ccd5c912387aab8344164764b7953bff4cf4b1db86f36e6a01c0

See more details on using hashes here.

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