Skip to main content

Python client for the documented Tigo REST API v3

Project description

pytigo

pytigo is a Python client for Tigo solar monitoring systems, focused on near-real-time monitoring for time-series systems like Prometheus.

Two backends are provided, both satisfying TigoClientProtocol:

TigoClient (cloud) TigoCCAClient (local)
Transport HTTPS to api2.tigoenergy.com HTTP to CCA device on LAN
Auth Bearer token (username + password login) HTTP Basic Auth
System ID From cloud account Read from device summary_config
Telemetry params Pin, Vin, Iin, RSSI, Temp, Tmod, Tcell, Tamb Pin and Vin only
Lifetime energy Yes Not available (returns None)
YTD energy Yes Not available (returns None)
Daily energy Yes Yes (~12-day rolling window)
MPPT layer Yes (from cloud layout) Synthesized — one per string
Alerts Yes Not available (empty page)
Serial / panel type Yes Not available
Timestamps UTC-aware from cloud Local device time; adjust with tz_offset_seconds

Install

pip install pytigo

Quick start — cloud

from pytigo import TigoClient

client = TigoClient(username="you@example.com", password="super-secret")
auth = client.login()

systems = client.list_systems()
system = systems.items[0]

layout = client.get_layout(system.system_id)
objects = client.get_objects(system.system_id)
sources = client.get_sources(system.system_id)
summary = client.get_summary(system.system_id)
aggregate = client.get_aggregate(
    system.system_id,
    start="2026-03-31T00:00:00",
    end="2026-03-31T23:59:59",
    level="day",
    param="Pin",
)
combined = client.get_combined(
    system.system_id,
    start="2026-03-31T00:00:00",
    end="2026-03-31T23:59:59",
    agg="day",
)
alerts = client.get_alerts(system.system_id, limit=10)
alert_types = client.get_alert_types()

Quick start — local CCA

from pytigo import TigoCCAClient

# tz_offset_seconds = local clock offset from UTC
# e.g. UTC-5 (EST) = -18000, UTC+1 = 3600, UTC = 0
client = TigoCCAClient(
    host="192.168.1.100",
    username="Tigo",
    password="$olar",
    tz_offset_seconds=-18000,
)
client.login()  # probes the device and builds topology cache

systems = client.list_systems()
system = systems.items[0]  # always one entry for the local device

layout = client.get_layout(system.system_id)
summary = client.get_summary(system.system_id)

# Only Pin (power) and Vin (voltage) are available locally
aggregate = client.get_aggregate(
    system.system_id,
    start="2026-04-06T12:00:00",
    end="2026-04-06T12:15:00",
    param="Pin",
)

Writing code against both backends

Use TigoClientProtocol as the type hint so your code works with either client:

from pytigo import TigoClient, TigoCCAClient, TigoClientProtocol

def build_client(mode: str, **kwargs) -> TigoClientProtocol:
    if mode == "local":
        return TigoCCAClient(**kwargs)
    return TigoClient(**kwargs)

def fetch_summary(client: TigoClientProtocol, system_id: int):
    client.login()
    return client.get_summary(system_id)

Cloud API areas supported (TigoClient)

  • users/login, users/logout, users/get
  • systems/list, systems/view, systems/layout
  • objects/system, objects/types
  • sources/system
  • data/summary, data/aggregate, data/combined
  • alerts/system, alerts/types

Notes

The library returns typed Python dataclasses for JSON endpoints and a parsed TigoCSVTable for timestamped telemetry (data/aggregate, data/combined). The table format is designed for easy flattening into Prometheus, Grafana, or ETL pipelines.

For local CCA use, lifetime_energy_dc and ytd_energy_dc on TigoSummary will always be None — this data is not exposed by the device. Consumers should handle None gracefully for these fields when operating in local mode.

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

pytigo-0.3.1.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

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

pytigo-0.3.1-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file pytigo-0.3.1.tar.gz.

File metadata

  • Download URL: pytigo-0.3.1.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pytigo-0.3.1.tar.gz
Algorithm Hash digest
SHA256 3f4f9fa8c49758c0433bcc7fc9b22e23d1ab09bb7d83f72e9e0eecf7bf01a2c3
MD5 5d718132c4d729eedff15eb6bbca7817
BLAKE2b-256 2aaa2cc3751b7c4f32be21d6399c1957efa1bcfc204f3e659334ffa86ec9b16f

See more details on using hashes here.

File details

Details for the file pytigo-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: pytigo-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pytigo-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ca709acf2779a75510d2d4097c878f624b698c5ba0b18e9e055ce0cc8bdd8c1
MD5 5d1164858e2bdb8d98e457eb70bbbfa2
BLAKE2b-256 0ece0a919d7135021df601acfb917b547eace4852ff72988a6adfb3b2811b270

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