Python library for controlling Anova Precision Cookers via Bluetooth LE
Project description
Anovable
Python library for controlling Anova Precision Cookers via Bluetooth LE.
Installation
pip install matonb-anovable
Configuration
Create an anovable.yaml configuration file (Home Assistant compatible format):
# Anovable Configuration File
anova:
mac_address: "01:02:03:04:05:06" # Your Anova device MAC address
connection:
timeout: 5.0
retry_attempts: 3
temperature:
default_unit: "celsius"
logging:
level: "INFO"
Python Usage
import asyncio
from anovable import AnovaBLE
async def main():
# Auto-discovers device or uses config file
anova = AnovaBLE()
if await anova.connect():
# Get status
status = await anova.get_status()
print(f"Status: {status}")
# Set temperature
await anova.set_temperature(60.0)
# Start cooking
await anova.start_cooking()
# Set timer (auto-starts by default, but only if cooker is running)
await anova.set_timer(120) # 120 minutes, auto-starts if cooker running
# Or set timer without auto-starting
await anova.set_timer(120, auto_start=False)
await anova.disconnect()
asyncio.run(main())
CLI Usage
The CLI automatically uses your MAC address from anovable.yaml:
Status Commands
# Get comprehensive device status
anova-cli status
# or
anova-cli state
# Get current temperature
anova-cli temp
# Get target temperature
anova-cli target
# Get timer status
anova-cli timer
# Get temperature unit
anova-cli unit
Control Commands
# Typical workflow
anova-cli set-temp 60.0 # Set target temperature
anova-cli start # Start cooking
anova-cli set-timer 120 # Set timer (auto-starts since cooker is running)
# Individual commands
anova-cli start # Start cooking
anova-cli stop # Stop cooking
# Set target temperature (°C or °F) - uses positional argument
anova-cli set-temp 60.0
# Set timer (minutes) - automatically starts timer if cooker is running
anova-cli set-timer 120
# Set timer without auto-starting
anova-cli set-timer 120 --no-auto-start
# Manual timer control (requires cooker to be running)
anova-cli start-timer
anova-cli stop-timer
Options
# Override MAC address
anova-cli --mac-address aa:bb:cc:dd:ee:ff status
anova-cli -m aa:bb:cc:dd:ee:ff status
# Use custom config file
anova-cli --config /path/to/config.yaml status
anova-cli -c /path/to/config.yaml status
# Enable debug logging
anova-cli --debug status
anova-cli -d status
# Show version
anova-cli --version
# Get help for any command
anova-cli --help
anova-cli status --help
# Enable shell completion (bash, zsh, fish, PowerShell)
anova-cli --install-completion
anova-cli --show-completion # Show completion script to copy manually
Device Discovery
If you don't know your Anova's MAC address:
import asyncio
from anovable import AnovaBLE
async def find_device():
anova = AnovaBLE()
mac_address = await anova.discover_device()
if mac_address:
print(f"Found Anova at: {mac_address}")
else:
print("No Anova device found")
asyncio.run(find_device())
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
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 matonb_anovable-1.5.0.tar.gz.
File metadata
- Download URL: matonb_anovable-1.5.0.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3779af32d3226636cf861740676d32ebacfeffd02ed6905c4b17b3638277fb3
|
|
| MD5 |
7c0152654fc54cacec5a5850e3719315
|
|
| BLAKE2b-256 |
45adb1a19739fb80d43d2bbc91ee49c506ed8a0441a3831aad2203f3c170e2d3
|
Provenance
The following attestation bundles were made for matonb_anovable-1.5.0.tar.gz:
Publisher:
ci.yml on matonb/anovable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
matonb_anovable-1.5.0.tar.gz -
Subject digest:
b3779af32d3226636cf861740676d32ebacfeffd02ed6905c4b17b3638277fb3 - Sigstore transparency entry: 401519196
- Sigstore integration time:
-
Permalink:
matonb/anovable@7ff6f0900c7450ac5d8ce56e4f3348fe558c0d9a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/matonb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@7ff6f0900c7450ac5d8ce56e4f3348fe558c0d9a -
Trigger Event:
push
-
Statement type:
File details
Details for the file matonb_anovable-1.5.0-py3-none-any.whl.
File metadata
- Download URL: matonb_anovable-1.5.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d450a395d33fca35e33f94af9ab495e9dbf2aa3b863e08f2888a597899235a76
|
|
| MD5 |
5a8b0eeb9d7fcfa3adf954d3811e850d
|
|
| BLAKE2b-256 |
8ea9fb01dcff6b6588f26284330fda55bcd8f8785e0e76e24c58871b21895a25
|
Provenance
The following attestation bundles were made for matonb_anovable-1.5.0-py3-none-any.whl:
Publisher:
ci.yml on matonb/anovable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
matonb_anovable-1.5.0-py3-none-any.whl -
Subject digest:
d450a395d33fca35e33f94af9ab495e9dbf2aa3b863e08f2888a597899235a76 - Sigstore transparency entry: 401519209
- Sigstore integration time:
-
Permalink:
matonb/anovable@7ff6f0900c7450ac5d8ce56e4f3348fe558c0d9a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/matonb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@7ff6f0900c7450ac5d8ce56e4f3348fe558c0d9a -
Trigger Event:
push
-
Statement type: