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.1.tar.gz (38.0 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.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiogrilla-0.2.1.tar.gz
  • Upload date:
  • Size: 38.0 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.1.tar.gz
Algorithm Hash digest
SHA256 eae13ea133d28523abd3f917873060ce45a58cab9c20b35a4f9ed546ee13a360
MD5 cc96d932f5aaf4cddedb99adb2c5d650
BLAKE2b-256 01485ad58bec87f92e9bf150958ccd0018a31a4273b06efb27b1d9f89a737a32

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiogrilla-0.2.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: aiogrilla-0.2.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5bbd494a20e07ca28196dec5bbe9df1064d38aecbe40c3e2d7ff1a31236ac0ef
MD5 0cf0fcd946a17059e124496e9db9547f
BLAKE2b-256 1fff323251c175e48798f981f18c8a7b336986740fe44f8efc79361de3db7b89

See more details on using hashes here.

Provenance

The following attestation bundles were made for aiogrilla-0.2.1-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