The HomeKit specification defines a variety of supported service types —for example, an Outlet. It also describes required and optional characteristics for each of these. An Outlet must provide “Power State” and “Outlet in Use” while optionally including a name characteristic.
An accessory manufacturer may choose to implement arbitrary custom characteristics to provide information beyond HomeKit’s specification.
Unlike Apple’s Home app, you can view those characteristics and even utilize them in your automations with Controller. Let’s look at two examples.
Laundry Finished Indicator
We want to create an automation that turns on a blue light in the living room when the laundry is done. The laundry machine is plugged into a Koogeek Power Outlet.
HomeKit’s default characteristics can tell us if an outlet is turned on and if a device is plugged in, but it doesn’t tell us anything else. By using Koogeek’s custom characteristics, it’s still possible to implement our automation.
REALTIME_ENERGY tells us how much energy the device in the outlet is currently using.
RUNNING_TIME lets us see since when the device is using energy.
We use RUNNING_TIME as the start event. Whenever it changes, HomeKit will evaluate our conditions.
The conditions make sure that the laundry machine ran for more than 60 seconds but currently uses less than 10 watts. If this is the case, we can assume that the laundry is finished.
Finally, we trigger a scene that will turn our light blue.
It’s a common use-case to turn off a device after a specific time automatically. An automation that turns on a device can also turn it off again later. However, if we turn a device on manually, this won’t work.
Luckily some manufactures make it possible. The RUNNING_TIME characteristic of Koogeek Outlets makes this easy. Every time it changes, we evaluate if it’s larger than 7200 seconds (2 hours), and if that’s the case, we turn the device off.