A modern, open-source Python library for interacting with the Tigo Energy API.
- 🔑 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
pip install tigo_python
pip install git+https://github.com/matt-dreyer/tigo_python.git
git clone https://github.com/matt-dreyer/tigo_python.git
cd tigo-python
pip install -e ".[dev]"
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
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())
# 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")
- ✅ 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
- Raw API responses - Direct JSON from Tigo API
- CSV strings - For integration with other tools
- Pandas DataFrames - For data analysis and visualization
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}")
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
git clone https://github.com/matt-dreyer/tigo_python.git
cd tigo-python
pip install -e ".[dev]"
pytest tests/ -v
# Linting
ruff check tigo_python/
# Type checking
mypy tigo_python/
# Formatting
ruff format tigo_python/
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes with tests
- Ensure code quality checks pass
- Submit a pull request
- Python ≥ 3.8
- httpx ≥ 0.27.0
- pandas ≥ 2.0.0
- numpy ≥ 1.24.0
This project is inspired by the Rust tigo client by @mrustl.
MIT License - see LICENSE for details.
This library is not affiliated with or endorsed by Tigo Energy.