Just integrated full HomeKit support! Here's how...

Hi guys! This is a cross post from my post on Reddit, but I thought it might be of interest here too.

So, first thing you guys will need is a Raspberry Pi (or similar that can run Node Red, perhaps just a permanently on Linux computer with a wifi/Bluetooth LE adaptor?). Once you have this, that’s all your hardware sorted, apart from the Anova of course. I use the Wifi model, but this should apply just fine to the Bluetooth version as this is only using Bluetooth Low Energy to control.

LINK TO ZIP FILE

So, to get it working, just follow these steps:

  1. Install Node-Red

  2. Install Node-Red-Contrib-Homekit (you’ll need to replace one of the files in this with some I’ve uploaded into the zip file later on - change this file after you’ve installed it). Set this to run at boot - there are instructions online for this.

  3. Install Pycirculate

  4. Open Terminal on the Raspberry Pi/Linux box and run the command sudo hcitool lescan and note the MAC address of the Anova. You’ll need to change the MAC address in the rest.py file that is included in the zip file.

  5. Set this rest.py file to run at boot. You do this by entering Terminal on the Raspberry Pi/Linux box and running the command crontab -e and then placing something like @reboot /usr/bin/python /home/pi/rest.py at the end of the file and saving/exiting crontab. Make sure you use the correct path to your python installation and the correct path to wherever your rest.py is placed.

  6. Finally, run Node Red in your browser, either 127.0.0.1 on the Raspberry Pi/Linux box direct, or 192.x.x.x from a computer on the same network and import the flow contained in the zip file.

  7. Deploy the Node Red!

That’s it! I think this thing is pretty dang well built, logic-wise. When you turn on the Anova and open HomeKit, as soon as you select a temperature it turns the Anova on. It understands the units that you have set on the Anova and sets the correct temperatures within HomeKit. It knows if the temperature you set is higher than the current water temperature, and so displays ‘heating’, or if it’s lower it sets ‘cooling’ and if reached displays ‘set’. It even works perfectly with Siri!

So go ahead, HomeKit-ify your Anova, and let me know how you get on in the comments. If you have any improvements, I’d love to hear about them!

This is interesting. Not sure I see the point though. I’m a software engineer, and I have no problems understanding how the above works. But I’m not interested. When I use the Anova, I want to cook, not need a browser to talk to the Anova. (The app is bad enough, which is why I don’t use that either.)

I’m a technophile. I have tons of experience with networking software and the like, and I am a firm believer in using technology to improve our lot. But sometimes, I wonder whether it’s time to come back down to earth…

I get what you’re saying, but it’s so nice to be able to say, “Hey Siri, set the anova to 130 degrees Fahrenheit” and off it’ll go. Or I can set a geofence activation in Siri to say ‘when leaving work, set anova to 130’, and using the ice bath technique with food in there all cooked by the time I get home. I’m sure there is further IFTTT integration I haven’t even thought of yet.

Heh, it’s been awhile since I played with geo-fenced reminders in iOS - does it actually work now? Every time I tried using them, they failed to kick off.

Has anyone compiled this for MacOS? It’s BSD based after all - would make sense to just have it run as a daemon on your mac rather than linux for most Apple users.

The trouble with that is your mac might not always be on, and so booting up the mac just to use voice commands might be irritating. Also, another thing is that when you close down a node server it often resets the HomeKit device meaning you have to delete and re-add the new Anova unit to HomeKit.

Anyone still got a copy of this zip file posted? It looks like the file has expired. If anyone still has it, I’d love to check it out. Thanks!