Skip to main content

API Reference

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

Core Components​

Any implementation should include these key components:

Device Scanner​

Functionality for discovering compatible devices:

OperationDescription
Scan for devicesLook for devices advertising the Gen 3 service UUID
Filter devicesOptional filtering by device name
Select deviceSelect appropriate device from scan results

Device Client​

Core functionality for device communication:

OperationDescription
ConnectEstablish connection and verify characteristics
DisconnectSafely disconnect from device
Encode commandConvert command object to Base64 encoded format
Decode responseConvert Base64 encoded response to object
Read characteristicRead data from specified characteristic
Write characteristicWrite data to specified characteristic

Command Handler​

Higher-level operations for device control:

OperationDescription
Get system infoRead and decode system information
Get device stateRead current device state
Get current temperatureRead current temperature value
Get timerRead timer status
Get full stateCollect and merge all state information
Set clockSet device clock to current time
Set unitChange temperature unit
Set temperatureSet target temperature
Start cookStart cooking process
Stop cookStop cooking process

Device Operations​

Device Discovery​

1. Create BLE scanner
2. Filter for service UUID "910772a8-a5e7-49a7-bc6d-701e9a783a5c"
3. Optional: Filter by device name prefix
4. Return list of matching devices

Connection​

1. Select device from discovery results
2. Establish connection
3. Verify all required characteristics
4. Set device clock

Command/Response Flow​

1. Create command object
2. Convert to JSON
3. Base64 encode
4. Write to appropriate characteristic
5. For read operations:
a. Read from characteristic
b. Base64 decode
c. Parse JSON
d. Return result object

Command Formats​

System Info Read​

Read from SYSTEM_INFO characteristic:

Response:

{
"deviceName": "Anova Precision Cooker Mini",
"firmwareVersion": "1.2.3",
"serialNumber": "ANV00123456789",
// Additional system information
}

Device State Read​

Read from STATE characteristic:

Response:

{
"state": "idle|cooking|...",
"temperatureUnit": "C|F",
// Additional state fields
}

Current Temperature Read​

Read from CURRENT_TEMPERATURE characteristic:

Response:

{
"current": 65.0
}

Timer Read​

Read from TIMER characteristic:

Response:

{
"running": true|false,
"remaining": 3600
}

Set Temperature​

Write to SET_TEMPERATURE characteristic:

Request:

{
"setpoint": 65.0
}

Set Clock​

Write to SET_CLOCK characteristic:

Request:

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

Change Unit​

Write to STATE characteristic:

Request:

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

Start Cook​

Write to STATE characteristic:

Request:

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

Stop Cook​

Write to STATE characteristic:

Request:

{
"command": "stop"
}

UUID Reference​

Service UUID​

GEN_3_SERVICE_UUID = "910772a8-a5e7-49a7-bc6d-701e9a783a5c"

Characteristic UUIDs​

SET_TEMPERATURE: "0f5639f7-3c4e-47d0-9496-0672c89ea48a"
CURRENT_TEMPERATURE: "6ffdca46-d6a8-4fb2-8fd9-c6330f1939e3"
TIMER: "a2b179f8-944e-436f-a246-c66caaf7061f"
STATE: "54e53c60-367a-4783-a5c1-b1770c54142b"
SET_CLOCK: "d8a89692-cae8-4b74-96e3-0b99d3637793"
SYSTEM_INFO: "153c9432-7c83-4b88-9252-7588229d5473"
Message Encoding

Remember that all communications use Base64 encoding of JSON payloads. Implement robust encoding/decoding functions to handle this consistently.

Error Handling

Implement appropriate error handling, especially for encoding/decoding operations and connection issues. Be prepared to handle timeouts and retry operations when appropriate.

State Characteristic

Note that the STATE characteristic serves dual purposes - both reading the device state and sending control commands. Context is important when interacting with this characteristic.