Skip to main content

Anova Precision® Cooker Nano

The Anova Precision® Cooker Nano is a compact sous vide device with Bluetooth Low Energy (BLE) connectivity. 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
  • Protocol Buffer Format: Commands and responses use Protocol Buffers for efficient data exchange
  • COBS Encoding: Message framing uses Consistent Overhead Byte Stuffing for reliable transmission
  • Temperature Control: Precise temperature setting and monitoring
  • Timer Management: Set and control cooking timers
  • Unit Conversion: Support for both Celsius and Fahrenheit
  • Sensor Readings: Access to multiple device sensor readings

BLE Architecture

The Anova Precision Cooker Nano communicates through a dedicated BLE service with three primary characteristics:

  • Service UUID: 0e140000-0af1-4582-a242-773e63054c68

Characteristic UUIDs

PurposeCharacteristic NameUUIDDirection
TX CharacteristicTX0e140001-0af1-4582-a242-773e63054c68Write (Send commands)
RX CharacteristicRX0e140002-0af1-4582-a242-773e63054c68Receive (Command responses)
Async CharacteristicASYNC0e140003-0af1-4582-a242-773e63054c68Receive (Status updates)

Command Structure

Each command follows a consistent format:

[Domain Byte][Message Type Byte][Optional Protobuf Payload]
  • Domain Byte: Indicates command category (e.g., Configuration)
  • Message Type: Specific command within the domain
  • Payload: Optional Protocol Buffer encoded data (for commands that require parameters)

COBS Encoding

All commands use COBS (Consistent Overhead Byte Stuffing) encoding:

  1. Construct the raw command bytes (domain + message type + payload)
  2. COBS encode to remove all zero bytes from the data
  3. Append a zero byte terminator (0x00)
  4. Split into chunks for BLE transmission

Communication Workflow

  1. Device Discovery:

    • Scan for devices advertising the Nano service UUID
    • Select a device from scan results
  2. Connection:

    • Connect to the selected device
    • Subscribe to notifications on RX and Async characteristics
  3. Command Execution:

    • Create command with appropriate domain and message type
    • Add Protocol Buffer payload if needed
    • COBS encode the command
    • Send to TX characteristic
    • Process response from RX characteristic
  4. Response Handling:

    • Collect notification chunks until message is complete
    • COBS decode the complete message
    • Extract and parse the Protocol Buffer response

Command Examples

Temperature Units

// Get temperature units
[CONFIG_DOMAIN][GET_TEMP_UNITS]

// Set to Celsius
[CONFIG_DOMAIN][SET_TEMP_UNITS][IntegerValue(0)]

// Set to Fahrenheit
[CONFIG_DOMAIN][SET_TEMP_UNITS][IntegerValue(1)]

Temperature Control

// Get current temperature setpoint
[CONFIG_DOMAIN][GET_TEMP_SETPOINT]

// Set temperature to 65.5°C (scaled by 10 = 655)
[CONFIG_DOMAIN][SET_TEMP_SETPOINT][IntegerValue(655)]

// Read all sensor values (including current temperature)
[CONFIG_DOMAIN][GET_SENSORS]

Cooking Control

// Start cooking
[CONFIG_DOMAIN][START_COOKING]

// Stop cooking
[CONFIG_DOMAIN][STOP_COOKING]

Temperature Scaling

The Nano uses integer values scaled by 10 for temperature:

Actual TemperatureScaled Value
65.5°C655
134.6°F1346
Message Framing

Always append a zero byte (0x00) terminator after COBS encoding to mark the end of a command frame.

Chunked Transmission

Due to BLE limitations, commands exceeding 20 bytes must be split into chunks for transmission. Responses are also received in chunks that must be reassembled.

Next Steps