Async client for Grilla Grills Alpha Connect smokers (unofficial)
Project description
aiogrilla
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e3a0f4ae49390c7320db1d64dab3e7a5569ceffef3cc8fd77ab94aa6911e9b3
|
|
| MD5 |
66467d1881ef67676dfc9b860ab83d41
|
|
| BLAKE2b-256 |
3de04bebfe78caf4e3327f04f6a3c2d86c36834b07982a42cd388c296f7886c8
|
Provenance
The following attestation bundles were made for aiogrilla-0.2.0.tar.gz:
Publisher:
publish.yml on zwrose/aiogrilla
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiogrilla-0.2.0.tar.gz -
Subject digest:
1e3a0f4ae49390c7320db1d64dab3e7a5569ceffef3cc8fd77ab94aa6911e9b3 - Sigstore transparency entry: 1753791423
- Sigstore integration time:
-
Permalink:
zwrose/aiogrilla@5de9bc4a2b083240e5487caebf2b7c9d7c2c6e76 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/zwrose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5de9bc4a2b083240e5487caebf2b7c9d7c2c6e76 -
Trigger Event:
workflow_dispatch
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1086a56c88ffa6f6215f2345a9e8af3c350a519710fdbc515f0da73d606ea0d0
|
|
| MD5 |
bb291d0a4ed2d9a0b7c31bf53cbcaa19
|
|
| BLAKE2b-256 |
3bbb931aa68bbd58ab9f4ccd4a1afccf2f6e2c8ab2abed4289aa02c55e0d44e9
|
Provenance
The following attestation bundles were made for aiogrilla-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on zwrose/aiogrilla
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aiogrilla-0.2.0-py3-none-any.whl -
Subject digest:
1086a56c88ffa6f6215f2345a9e8af3c350a519710fdbc515f0da73d606ea0d0 - Sigstore transparency entry: 1753791437
- Sigstore integration time:
-
Permalink:
zwrose/aiogrilla@5de9bc4a2b083240e5487caebf2b7c9d7c2c6e76 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/zwrose
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5de9bc4a2b083240e5487caebf2b7c9d7c2c6e76 -
Trigger Event:
workflow_dispatch
-
Statement type: