Skip to main content

Anova Precision® Cooker Mini

The Anova Precision® Cooker Mini is a compact sous vide device that can be controlled via Bluetooth Low Energy (BLE). This documentation covers the protocol and commands needed to interact with the device.

Key Features

  • BLE Connectivity: Control your cooker remotely using Bluetooth Low Energy
  • JSON-Based Protocol: Commands are JSON-encoded for reliability
  • Base64 Transmission: All messages are Base64 encoded for robust transmission
  • Temperature Control: Precise temperature setting and monitoring
  • Timer Management: Set and control cooking timers
  • Unit Conversion: Support for both Celsius and Fahrenheit
  • Clock Synchronization: Device clock can be synchronized to UTC

BLE Architecture

The Anova Precision Cooker Mini exposes a single service with multiple characteristics for different functions:

  • Service UUID: 910772a8-a5e7-49a7-bc6d-701e9a783a5c

Characteristic UUIDs

PurposeCharacteristic NameUUIDDirection
Set TemperatureSET_TEMPERATURE0f5639f7-3c4e-47d0-9496-0672c89ea48aBidirectional (Read/Write/Notify)
Read Current TemperatureCURRENT_TEMPERATURE6ffdca46-d6a8-4fb2-8fd9-c6330f1939e3RX (Read/Notify)
TimerTIMERa2b179f8-944e-436f-a246-c66caaf7061fBidirectional (Read/Write/Notify)
State / CommandSTATE54e53c60-367a-4783-a5c1-b1770c54142bBidirectional (Read/Write/Notify)
Set ClockSET_CLOCKd8a89692-cae8-4b74-96e3-0b99d3637793TX (Write) – response required
System InfoSYSTEM_INFO153c9432-7c83-4b88-9252-7588229d5473RX (Read)

Message Format

All commands and responses use a two-step encoding process:

  1. JSON Serialization:

    • Create a structured JSON object with command parameters
    • Convert to a JSON string
  2. Base64 Encoding:

    • UTF-8 encode the JSON string
    • Base64 encode the resulting bytes
    • Transmit the encoded string

Communication Workflow

  1. Device Discovery:

    • Scan for BLE devices advertising the service UUID
    • Optionally filter by device name prefix
  2. Connection:

    • Connect to the selected device
    • Verify required characteristics are present
    • Set device clock (recommended)
  3. Command Execution:

    • Create appropriate JSON command
    • Base64 encode the command
    • Write to the correct characteristic
    • For read operations, decode Base64 response to JSON
  4. Specialized Controls:

    • Use STATE characteristic for unit changes and cooking control
    • Use dedicated characteristics for setting temperature and timer

Command Examples

Setting Temperature

{
"setpoint": 65.0
}

Starting a Cook

{
"command": "start",
"payload": {
"setpoint": 65.0,
"timer": 3600,
"cookableId": "recipe123",
"cookableType": "recipe"
}
}

Changing Units

{
"command": "changeUnit",
"payload": {
"temperatureUnit": "C"
}
}

Setting Clock

{
"currentTime": "2024-02-06T12:00:00Z"
}
Pairing Note

When prompted during connection, you must accept pairing on your host device to maintain the connection.

Command Overloading

The STATE characteristic serves dual purposes - both reading device state and sending control commands. Be mindful of this when implementing your application.

Next Steps