Anova Precision Cooker (EOL) integration (server, dashboard and sensors) [WARNING advanced]

Hey Community,

I’m not sure if this will interest you, but I’ve been working on a way to keep my first-gen Anova Precision Cooker (which is reaching EOL) connected via WiFi using Home Automation.

After some deep dives into online resources, I stumbled upon anova4all—a great concept that, if I could get working, would be a solid foundation in combination with Home Assistant (HA).

:rotating_light: WARNING: This is advanced and should only be attempted if you’re comfortable with Docker, Raspberry Pi, OpenAPI, configuration editing, HA Core, and system tinkering. This setup is tailored to my environment, so proceed at your own risk! Be aware I use HA Core and this approach is when youre configuring everything yourself (and comfortable with that) and the risks⚠️

The Journey :mag:

  • Initially, I tried running the existing anova4all solution in Docker, but I couldn’t get it working despite hours spent debugging the Go code (which I had never used before!).
  • Then, I discovered Almog Baku’s first version of anova4all in Python (GitHub).
  • After reviewing various other projects, I decided to build my own version based on Almogs research using Python, designed to run on a Raspberry Pi 4 (utilizing its Bluetooth hardware).

:rocket: The Result? A fully working integration! Server, HA integration, and a custom Lovelace panel.



What You Need to Get Started

:white_check_mark: Anova Precision Cooker (WiFi + BLE) (Tested with the first-gen model)
:white_check_mark: Raspberry Pi 4 (Running Raspbian 64-bit, untested on other devices)
:white_check_mark: A Server (Can be the RPi itself, or you can run it in Docker on another machine)

If you want to onboard your Anova to a local WiFi environment, follow this repo:
:arrow_right: [Anova Server GitHub]

For Home Assistant integration & Lovelace setup:
:arrow_right: [Lovelace Panel GitHub]


Advanced: Running BLE in Docker :gear:

Since I run my home lab on a dedicated server, I wanted everything in Docker. However, getting BLE passthrough in Docker was not possible to test because I don’t have it om my amd64. If you want to try it yourself on a RPI or with a dongle, here are some the steps that could do the trick (please write back if it works):

1. Check If Your Host Detects the BLE Device

bluetoothctl list
hciconfig

If your BLE adapter appears, note the interface (e.g., hci0).

2. Run Docker with Proper Permissions

docker run -it --rm \
    --privileged \
    --net=host \
    --device=/dev/bus/usb \
    --device=/dev/ttyUSB0 \
    --device=/dev/ttyS0 \
    --volume /var/run/dbus:/var/run/dbus \
    --cap-add=NET_ADMIN \
    --cap-add=SYS_ADMIN \
    my_ble_container

3. Install BLE Tools Inside the Container

For Debian/Ubuntu-based containers:

apt update && apt install -y bluetooth bluez bluez-tools

For Alpine Linux:

apk add --no-cache bluez

4. Verify BLE Functionality

hciconfig
hciconfig hci0 up
hcitool lescan

5. Troubleshooting :wrench:

  • If hciconfig doesn’t detect hci0, restart Bluetooth:
    service bluetooth restart
    
  • Ensure dbus is running:
    systemctl start dbus
    
  • Check logs for errors:
    journalctl -u bluetooth --no-pager | tail -n 20
    

Would love to hear if anyone else is trying something similar! Drop a comment or check out the GitHub repos.

Cheers,