Skip to main content

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.

Tested hardware

aiogrilla has so far been verified against a single grill:

Model Controller Firmware
Grilla Silverbac 2.0 XL Built-In Alpha Connect 2.0 1.0.70

Other Alpha Connect grills share the same cloud API and should work, but are unverified. If you have a different model, please try it and open an issue with your findings — model, firmware, and any fields that look off (a redacted state sample helps — see Caveats). Other owners' reports are how compatibility gets confirmed.

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.

The vendor's AWS IoT policy (observed 2026-08) authorizes exactly one MQTT client id per account: the UUID portion of the Cognito identity id. aiogrilla uses that id, which is necessarily the same one the vendor's mobile app uses — AWS IoT allows only one live connection per client id, so aiogrilla and an open app can bump each other offline. aiogrilla reconnects with generous backoff to keep that contention bounded; expect brief availability flaps while the app is in active use. GrillaClient(client_suffix=...) is deprecated and ignored.

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.

Metadata

Release files for aiogrilla 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aiogrilla 0.2.4
File Size Uploaded
aiogrilla-0.2.4.tar.gz 42.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aiogrilla 0.2.4
File Interpreter ABI Platform
aiogrilla-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 66.4 kB

Release files / aiogrilla-0.2.4.tar.gz

Download URL aiogrilla-0.2.4.tar.gz
Size 42.9 kB
Tags Source
SHA-256 checksum
How to use checksums
6ac9f3b427a4c448591ed4ff46e291a0a0e3bed4049e22a829ffd3b39c614d1e
BLAKE2b-256 checksum
How to use checksums
bef39148efc79e12aed145c17e883a6f791585f2aa652f67426b96dae77462a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Release files / aiogrilla-0.2.4-py3-none-any.whl

Download URL aiogrilla-0.2.4-py3-none-any.whl
Size 23.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2afce9fd71306880a1b1253517b20e5e160545b0c4aa340a66a325a36e68d015
BLAKE2b-256 checksum
How to use checksums
0ccc0ce6ca6b381bfa749b1faa6e633a61c582012830fdf8766d1552cecd6ad9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page