"Home automation" is perhaps one of the hottest topics in technology these days.
While still an emerging market, many iOS device owners now also own at least one or two "smart home" devices.
Today we'll begin looking at HomeKit, Apple's framework for communicating with and controllling these devices from inside our apps.
Before we can dive in though, there's a bit of tooling we need to learn about first. Specifically, we need to learn how to simulate HomeKit devices.
For example, we might not own any HomeKit devices ourselves. Even if we do though, we'd rather not need to phsyically change things about our home to test our app.
Not to worry, Apple provides a great solution to this challenge in the form of a HomeKit Accessory Simulator app for macOS.
In it, we can setup and configure a "simulated" set of devices in any kind of Home setup we'd like.
Sadly though, it doesn't ship with Xcode.
We'll need to head over to Apple's "More Developer Downloads" page here and search for "Hardware IO Tools for Xcode". We'll download the latest release, then install the HomeKit Accessory Simulator app.
Now, let's open it up and simulate our first accessory.
We'll click the + button in the bottom left and select New Accessory...
We'll fill out the fields with some example information. The values aren't super important, they merely need to be unique and somewhat realistic.
Neat. We've now got a (pretend) lamp. 💡
Well, sort of. There's actually one more important step, and it's speaks to the heart of how HomeKit works.
So far, HomeKit doesn't know anything about our new lamp. "Lamp" is just the name we gave it.
For HomeKit to do something useful with our device, we'll need to add a HomeKit Service to it. HomeKit Services describe the capabilities and functionality of a device
We'll click the Add Service... button on our new device, and choose Lightbulb from the dropdown menu.
We can leave the rest of the fields alone.
Neat! Not only do we now have a fully-simluted, color changing light bulb, we're also provided with some nice sliders and controls to read from, and write to, the current state of the device.
That's all for today. We'll learn more about the HomeKit Accessory Simulator as we continue to explore HomeKit. Next time we'll learn how to change this light's color in code! 🌈💡