BLE Communication Protocol
BLE Architecture Overview
The Anova Precision Cooker exposes a single Bluetooth Low Energy service that handles both command transmission (TX) and response reception (RX). Communication is bidirectional through a single characteristic.
Service & Characteristic UUIDs
All BTLE operations for the cooker use the following 128-bit UUIDs:
- Service UUID:
0000ffe0-0000-1000-8000-00805f9b34fb
- Characteristic UUID (TX/RX):
0000ffe1-0000-1000-8000-00805f9b34fb
Communication Flow
Command Format (TX)
- Commands are sent as ASCII strings
- Each command must end with a carriage return (
\r
) - Commands are written to the designated characteristic
- The write operation does not require an immediate response
Response Handling (RX)
- Responses are received through BLE notifications
- Data is accumulated in chunks (typically up to 20 bytes)
- A response is considered complete when either:
- A chunk less than 20 bytes is received
- The data ends with a null byte (0x00)
- The complete response should be decoded from ASCII and trimmed of extraneous whitespace
Device Discovery and Connection
-
Device Discovery
- Scan for BLE devices advertising the specified service UUID
- Alternatively, filter devices by name containing "anova" (case-insensitive)
- Select the matching device
-
Connection Setup
- Establish BLE connection to the device address
- Enable notifications on the TX/RX characteristic
- Send initial identification command to determine model type
-
Model Detection
- Send
get id card
command - Parse response to determine if device is 800W or 900W model
- If response begins with "anova f56-", it's a Wi-Fi-enabled (900W) model
- Send
Best Practices
- Timeout Handling: Implement appropriate timeouts for commands (recommended: 15 seconds)
- Notification Management: Always enable notifications before sending commands
- Error Handling: Be prepared for connection loss and implement reconnection logic
- Command Rate: Avoid sending commands too rapidly; space them appropriately
- Response Parsing: Handle partial and incomplete responses by correctly buffering notifications
Example Workflow
- Scan for devices advertising the service UUID or with names containing "anova"
- Connect to the selected device
- Subscribe to notifications on the characteristic
- Send commands with appended carriage return
- Process responses by accumulating notification chunks
- Disconnect cleanly when finished
Device Name
When scanning for devices, look for names containing "anova" to identify compatible devices. The search is case-insensitive for broader compatibility.
Connection Management
Always properly disconnect from the device when your application exits to ensure the device is ready for future connections.