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

Uploaded Python 3

File details

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

File metadata

  • Download URL: aiogrilla-0.2.2.tar.gz
  • Upload date:
  • Size: 38.1 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.2.tar.gz
Algorithm Hash digest
SHA256 a1f8e63bd90fb773fa83fe774d282229f2d6279393cb8efcb96164e2f68948e5
MD5 f78fb46bb054d0a429d84c13aa8c75a2
BLAKE2b-256 d2292ce01f98d1e910b240c9a2320a9b3129ea552d2fc7c117c4cd093c480fd8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: aiogrilla-0.2.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c54bc4d997859a249cbea756e28766db72941be27a50eabd2f683f25aa0399e6
MD5 451184817f61142af774ee1c45daddc1
BLAKE2b-256 7f782158aa6a1f6708605a78a5d03fb9c2d791c21a87bc5a9be08208f2f6e2a0

See more details on using hashes here.

Provenance

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