Getting Non-HomeKit Devices Working in HomeKit

My Homebridge UI with the current installed plugins for my smart devices

Google Home as my Hub

All my smart home devices end up connecting via Google Home. It was an easy entry point at the time via the inexpensive Google Home devices, and it turned out that voice activation was the key to usability.

Even being an Apple household, we never got into HomeKit. I figured that switching to HomePods was a bit too costly… and also some of my smart devices didn’t connect to HomeKit.

Apple Watch and HomeKit

I’ve recently connected a smart switch for the lamp in my youngest son’s room. When my wife puts him down she’ll be laying with him, and wants an easy way to turn his lamp off (as it is across the room), I know… first-world problems. If she has her phone she can use that, but often she just has her Apple Watch.

I looked around, and it seemed to like controlling devices via HomeKit would be an ideal solution, and with WatchOS it is possible. Now to connect my non-HomeKit devices somehow…

Exploring Homebridge

A quick investigation led me to Homebridge.

Homebridge allows you to integrate with smart home devices that do not natively support HomeKit. There are over 2,000 Homebridge plugins supporting thousands of different smart accessories.

With my recently new Unraid server, I was able to spin up a Homebridge Docker container and had the majority of my devices working quickly!

Tweaks and Cameras

Homebridge lets you install plugins to then act as the bridge between said devices and HomeKit.

As of now, I’m currently using the following plugins:

  • Homebridge TPLink Smarthome
    • My Kasa outlets/switches/lights.
    • Worked out of the box and just auto-discovered existing devices on the network.
  • Homebridge YoLink
    • My YoLink door/water/motion sensors.
    • Worked out of the box after inputting the required credentials.
  • Homebridge Nest Cam
    • My Nest Hello Doorbell (older model)
      • After getting past the authentication (as I haven’t migrated my Nest account to Google) this worked. The one addition I did in the config.json was specifying "ffmpegCodec": "copy" to avoid encoding the stream on my server (fewer resources).
  • Homebridge Camera FFmpeg
    • My Wyze Cameras to keep an eye on the kids at night
    • This one was a bit more involved…
      • I used docker-wyze-bridge to first expose an RTSP (Real Time Streaming Protocol) stream for the Wyze cameras.
      • I then was able to specify the RTSP and Snapshot URLs in the homebridge-camera-ffmpeg settings.
      • The last thing was to specify copy under Advanced > Video Codec, again to avoid encoding.

The Aftermath

After all was said and done, everything works as expected. We’re able to use our non-HomeKit devices in HomeKit and leverage it on our Apple Devices.

Benefits

  • Smart devices are exposed in HomeKit.
  • Better iOS/WatchOS/macOS integration due to Home app.
  • Siri’s capabilities are so nice given I use an iPhone and Apple Watch.
  • The Google Home application continues to function as a Hub.

Frustrations

  • Smart device names when changed on the source application don’t reflect in HomeKit.
  • If the Homebridge service has an issue then nothing works via HomeKit.
  • Another place to put automations (granted options are nice, but having automations spread across different systems is harder to keep track of.)

Next Steps

I did stumble across Home Assistant, which looks like an even more powerful automation system. This might be something I poke around with, as there is also a HomeKit Integration for this (amongst many others). One thing at a time though, too much change can be hard to cope with.