Skip to main content

API Reference

This page describes the concepts and operations needed to implement a client application for the Anova Precision Cooker, independent of any specific programming language.

Core Components

Device Client

Any implementation should include a client component responsible for:

FunctionalityDescription
Device discoveryScanning for and identifying compatible devices
Connection managementEstablishing and maintaining BLE connections
Command transmissionSending properly formatted commands to the device
Response handlingReceiving and processing notification data
Model detectionDetermining the cooker model type (Wi-Fi or non-Wi-Fi)

Basic Operations

Device Discovery

Your implementation should provide a way to:

  1. Scan for nearby BLE devices
  2. Filter devices by service UUID (0000ffe0-0000-1000-8000-00805f9b34fb) or by name containing "anova"
  3. Return device identifiers for connection

Connection Management

Implement functions to:

  1. Establish connection to a device by address
  2. Enable notifications on the characteristic
  3. Properly disconnect from the device when finished

Command Handling

Create a system to:

  1. Format commands with appropriate carriage return (\r)
  2. Send commands to the characteristic
  3. Implement timeouts for response waiting (recommended: 15 seconds)

Command Formatting

Commands should be properly formatted as ASCII strings with a carriage return appended:

Basic Commands

start\r
stop\r
status\r

Temperature Commands

read set temp\r
read temp\r
read unit\r
set temp <value>\r
set unit <unit>\r

Timer Commands

read timer\r
start time\r
stop time\r
set timer <minutes>\r

Model-Specific Commands

clear alarm\r    # 900W only
version\r # 900W only
get id card\r

Response Processing

Your implementation should:

  1. Buffer incoming notification chunks
  2. Detect when a response is complete
  3. Decode and trim the assembled ASCII response
  4. Process or return the response

Error Handling

Implement appropriate error handling for:

  • Connection failures
  • Command timeouts
  • Incomplete responses
  • Disconnections
  • Unsupported commands (based on model type)

Sample Workflow

A typical interaction with the device follows this pattern:

  1. Discover compatible devices
  2. Connect to selected device
  3. Subscribe to notifications
  4. Send get id card to determine model type
  5. Send commands and process responses
  6. Properly disconnect when finished
Implementation Guidance

Structure your code to properly handle asynchronous operations, as BLE communication typically involves callbacks or promises for event handling.

Response Buffering

Your notification handler should accumulate data chunks until detecting a complete response (chunk less than 20 bytes or ending with null byte).