Skip to main content

Async client for Grilla Grills Alpha Connect smokers (unofficial)

Project description

aiogrilla

PyPI version Python versions CI License Ruff

Unofficial async Python client for Grilla Grills Alpha Connect smokers. It provides read-only access to live grill and probe temperatures, cook status, cook mode, and the cook timer via the vendor's cloud service.

Disclaimer

aiogrilla is an unofficial, third-party library. It is not affiliated with, endorsed by, or supported by Grilla Grills or Fahrenheit Technologies, Inc. "Grilla" is used here as a nominative reference to identify the product this library works with. This library is provided as-is and may stop working at any time if the vendor changes their cloud service. Use is entirely at your own risk, with no warranty of any kind.

Install

pip install aiogrilla

From source

git clone https://github.com/zwrose/aiogrilla.git
cd aiogrilla
pip install -e .

Usage

Run the bundled example — it prompts for your password and never stores it:

export GRILLA_EMAIL="your@email.com"   # optional; the example prompts if unset
python examples/dump_state.py

Or use the library directly. Log in once with your password to obtain a refresh token, then persist and reuse that token — the password is never needed again and never has to be stored:

import asyncio
import getpass
from aiogrilla import GrillaClient


async def main(email: str, password: str) -> None:
    client = GrillaClient()
    refresh = await client.async_login_with_password(email, password)
    # Persist `refresh` securely (e.g. a secrets manager) and reconnect later with
    # GrillaClient(refresh_token=refresh) — no password storage required.
    grills = await client.async_get_grills()
    print("grills:", grills)
    if not grills:
        return
    grill = grills[0]
    client.on_state(grill.id, lambda s: print("state:", s.mode, s.grill_temp, s.probe_temp))
    client.on_availability(grill.id, lambda a: print("available:", a))
    await client.async_connect()
    await asyncio.sleep(30)
    await client.async_disconnect()


asyncio.run(main(input("Grilla email: "), getpass.getpass("Grilla password: ")))

What it does / v1 scope

aiogrilla is intentionally read-only in its first release:

  • Live grill temperature and target temperature
  • Probe temperature(s) and target probe temperature(s)
  • Cook status / operating mode (off, igniting, running, hold, shutdown, etc.)
  • Cook timer (total and remaining seconds)
  • Grill availability (connected / disconnected)

Write operations (set temperature, start/stop cook, etc.) are out of scope for v1.

Caveats

The field mapping is best-effort and validated against a limited set of devices and firmware. Some fields (probe 2, turntable, alarm range) may not apply to all grill models or firmware versions. If you observe unexpected parsing behavior, please open an issue with a redacted (no credentials or tokens) sample.

Contributing

Contributions are welcome — see CONTRIBUTING.md. This project uses Conventional Commits and release-please, so commit messages drive versioning and the changelog.

License

Apache-2.0. See LICENSE and NOTICE.

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

aiogrilla-0.2.0.tar.gz (36.9 kB view details)

Uploaded Source

Built Distribution

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

aiogrilla-0.2.0-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file aiogrilla-0.2.0.tar.gz.

File metadata

  • Download URL: aiogrilla-0.2.0.tar.gz
  • Upload date:
  • Size: 36.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiogrilla-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1e3a0f4ae49390c7320db1d64dab3e7a5569ceffef3cc8fd77ab94aa6911e9b3
MD5 66467d1881ef67676dfc9b860ab83d41
BLAKE2b-256 3de04bebfe78caf4e3327f04f6a3c2d86c36834b07982a42cd388c296f7886c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiogrilla-0.2.0.tar.gz:

Publisher: publish.yml on zwrose/aiogrilla

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

File details

Details for the file aiogrilla-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: aiogrilla-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aiogrilla-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1086a56c88ffa6f6215f2345a9e8af3c350a519710fdbc515f0da73d606ea0d0
MD5 bb291d0a4ed2d9a0b7c31bf53cbcaa19
BLAKE2b-256 3bbb931aa68bbd58ab9f4ccd4a1afccf2f6e2c8ab2abed4289aa02c55e0d44e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiogrilla-0.2.0-py3-none-any.whl:

Publisher: publish.yml on zwrose/aiogrilla

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