[App][Pro] HomeKitty 😸 (aka HomeyKit 3.0)

HomeKitty (AKA HomeyKit 3.0)

HomeKitty is an almost complete rewrite of HomeyKit and serves the same purpose: expose your Homey devices to HomeKit so you can control them using iOS, Siri and Shortcuts.

Attention Homey Pro 2023 users!

You need at least version 2.0.0 of HomeKitty. Right now, those versions are available as test (see below).

Current version

You should be able to run it next to HomeyKit without getting in the way. See follow-up post for installation instructions.

Please be aware: HomeKitty is still very much in development, and its behaviour can change at any time. I can only test with a very limited amount of devices, and am reliant on community users to test it fully with their apps. There can be incompatibilities between HomeKitty and HomeyKit.

COMMON ISSUES

Please read this before creating a diagnostics report or posting an issue report on Github!

It’s very common for iOS to have issues that are not related to HomeKitty, and can therefore not fixed by me.

  • “No Response”

    Sometimes this is iOS just lying to you. I see this issue all the time, and changing the device on iOS usually works just fine. It typically can take some time after starting Homey and/or HomeKitty before iOS will show the proper state of devices. This is also one of the reasons why Apple has tried (and failed) to introduce a new HomeKit architecture, because the current architecture can be very unstable.

    Another reason for this can be misbehaving Home hubs, like an Apple TV or HomePod. If you have any of these devices, reboot them or toggle the switch where they are allowed to act as Home Hub.

    Also, make sure that your Homey has a fixed IP-address. Because this can’t be configured in Homey itself, it has to be configured in your internet router. Look for “DHCP” or “DHCP leases”.

  • App crashes
    This doesn’t happen very often (I get notified when it happens, and it doesn’t happen a lot), but the most common reason is when you have two Homey’s in the same network and both are using the same HomeKit identifier. An identifier has to be unique in the network, so when this happens, change the identifier from the app settings (after first turning off HomeKitty on the other Homey). Do be aware that changing the identifier is basically a reset, so you will have to start over with the HomeKit configuration for the new Homey.

  • iOS losing devices or places them back in the Default Room
    After Homey reboots/restarts, HomeKitty will try to wait for all devices of all your apps to be created before it starts communicating with iOS. However, if apps take a really long time before creating their devices, HomeKitty might “miss” these devices and they are added to HomeKit after communication with iOS has already started. Such devices are considered to be “new” by iOS (a major flaw in the HomeKit protocol) and will be placed in the default room.
    To make HomeKitty wait longer, starting with v2.2.0, there’s a configuration option to delay the start of HomeKitty by a fixed amount of time. If you have this issue, it’s recommended to set this option to about 10 or 15 minutes, just to make sure that all devices have been created before HomeKitty starts.

  • Unable to add HomeKitty to iOS
    Make sure that both Homey and your iDevice(s) are on the same network segment (in other words: if your Homey is part of a separate VLAN/IoT/guest network, there’s a good chance it won’t be found).

Still having issues?

You can file an issue report here: Issues ¡ robertklep/name.klep.homekitty ¡ GitHub

(also if you notice that HomeKitty does something differently from HomeyKit, and you think this is a regression)

Changelog

  • v2.3.0 — Don’t expose hidden/maintenance capabilities to iOS
  • v2.2.18 — Work around button.remove_node capabilities that get added to Matter devices :man_facepalming:t3:
  • v2.2.17 — Bugfix for v2.2.16
  • v2.2.16 — Added support for heatpump device class
  • v2.2.13 — Correctly set temperature display units for thermostat and heatercooler
  • v2.2.12 — Allow outlets/sockets to be dimmable
  • v2.2.11 — Fixed issue with tv’s being mapped twice
  • v2.2.10 — Added (partial) support for televisions
  • v2.2.9 — Fixed issue with Bold locks using onoff the wrong way around
  • v2.2.8 — Added support for onoff locks (Bold)
  • v2.2.7 — Fixed issue with v2.2.6
  • v2.2.6 — (unreleased) fix low battery status
  • v2.2.5 — Use alarm_battery for low battery status
  • v2.2.4 — Added optional tamper state for other types of sensors
  • v2.2.3 — Added optional tamper state for water leak sensors
  • v2.2.2 — Added support for battery levels (sensor and other) and updated homey-api to latest version
  • v2.2.1 — Added support for devices of class sensor and capability button (e.g. Heimdall Alarm switch)
  • v2.2.0 — Added option to delay start of HomeKit bridge after Homey reboot
  • v2.1.0 — Fixed issue introduced by rc88 firmware
  • v2.0.1 — Home alarm state fixes
  • v2.0.0 — Compatibility with HP2023 and homey-api@3
  • v1.4.2 — Upgraded to latest homey-api
  • v1.4.1 — Sort device list
  • v1.4.0 — Debounce changes to dim/brightness for light devices
  • v1.3.2 — Bugfix
  • v1.3.1 — Support onoff capability for sensor devices
  • v1.3.0 — This version should handle app crashes/restarts much better: devices belonging to such apps should retain their room assignments, automations, etc, once the app is back up again.
  • v1.2.10 — Work around issue in Web API related to (un)exposing devices to HomeKit
  • v1.2.9 — Hopefully fixed issues with state-only window coverings implementation
  • v1.2.8 — Updated to latest version of homey-api and allow contact sensors with “other” device class
  • v1.2.7 — Support for Eufy doorbell devices
  • v1.2.6 — Fixed issue with virtual devices losing their configuration
  • v1.2.5 — Fixed more issues with positionless window coverings
  • v1.2.1 — Fixed issue with positionless window coverings
  • v1.2.0 — Rewritten/restyled app settings, bugfixes, additional device support
  • v1.1.0 — Rewritten mapping logic and streamlined app settings page some more
  • v1.0.5 — Improved app settings
  • v1.0.4 — Bugfixes
  • v1.0.3 — Bugfixes
  • v1.0.2 — Bugfixes, more device support, and Flow Starter device
  • v1.0.1 — Bugfixes
  • v1.0.0 — Initial (test) release

Further plans

In no particular order:

  • Reach a stable version
  • Implement various virtual devices:
    • a Virtual Switch device to trigger HomeKit automations from Homey
    • a Virtual Service, basically a virtual device. See below for more info.
  • More/better device support.

Flow Starterᵇᵉᵗᵃ device

(since v1.0.2)

The Flow Starter device can be used to create a HomeKit button to trigger flows. It’s a regular Homey “button” device with the “Button Pressed” action card.

By renaming the device in HomeKit (you can rename it on Homey too, but that will not change its name in HomeKit) you can get Siri to trigger on any name you like.

Because of limitations in HomeKit, this device actually appears as a switch (on/off) which, when turned on, will turn itself off after 300ms.

This is still an experimental feature, so it might be subject to change.

Virtual Service device

(unreleased)

HomeKit supports a long list of Services (somewhat equivalant to Homey device classes).

These services have required (and possibly optional) Characteristics (somewhat equivalent to Homey device capabilities).

With a Virtual Service device you can create a HomeKit device based on a service, and set the characteristics of that service from Homey flows. Basically the same as the Virtual Devices app for Homey, but for HomeKit.

Why a rewrite?

HomeyKit is now 5 years old. During that time, it has had various “main developers”, the last one being myself (@robertklep).

It’s a relatively complex app because it has to deal as good as it can with incompatibilities between Homey devices and HomeKit devices. This complexity means there’s a lot of unstructured “special case handling” in the code, which makes it difficult to maintain.

For the upgrade of HomeyKit to SDKv3 I initially planned to also do a cleanup of the code, but ran into issues with outdated external dependencies. Updating these dependencies meant an upgrade would be backward incompatible, breaking the HomeKit setup for all HomeyKit users once they upgraded to the new version.

So I decided it was best to do a complete rewrite and release it as a separate app, HomeKitty. This also means that HomeyKit will, as of now, drop into maintenance mode, meaning that I will probably do one or two new releases (including an upgrade to SDKv3) but no more. Once HomeKitty is published as a stable v1.0.0 in the app store, I will ask Athom to hide HomeyKit from the store (meaning that new users will not be able to find it in the store anymore).

Donations

Donations are very welcome! You can make donations through Paypal.

21 Likes

HomeKitty Installation Instructions

The easiest way of adding HomeKitty to iOS is by using the pairing code (see below): open your iDevice’s camera and show it the code. It will ask to add the HomeKitty accessory to either an existing home, or to create a new home for it (during testing I would suggest creating a “test home”).

If that doesn’t work:

  • Make sure Homey and your iDevice are on the same local network (they don’t necessarily have to use the same WiFi network, but they need to be on the same local LAN segment)
  • Open the Home app on your iDevice
  • Select the + symbol (top right) and choose “Add Accessory”
  • At this point you can also show it the pairing code; if it still doesn’t work, choose “More options…”
  • If HomeKitty is shown on the next screen, you can choose it here. If not, select “My Accessory Isn’t Shown Here”
  • Choose “Enter code…”
  • Enter the HomeKitty pairing code: 1337-8055

If iOS is still unable to find the HomeKitty bridge, the only option left is to try various resets/reboots:

  • put your iDevice’s in Flight Mode for about 10 seconds
  • reboot Homey
  • reboot iDevice

Pairing code

5 Likes

Hi, is there a difference between this one and the experimental Homekit connection already that’s been build in the Homey?

Yes, the experimental implementation is (much) more limited in which types of devices it supports, and it also doesn’t support selecting which devices you don’t want to expose to HomeKit.

That’s exactly what I was looking for. Exposing only selected devices. Great work Robert, and I’m installing as speak :wink:

Do you recommend to install the old version too as this Homekitty is only for testing?

I wouldn’t run both versions at the same time, Homekitty will be replacing Homeykit anyways so if you’re just starting Homey-Homekit integration I’d suggest to do it with Homekitty.
One thing, in the current test version there is an error where the device selection isn’t loaded correctly after an app restart but that’s already fixed in the next version.

I just pushed v1.0.2 to the app store, once it’s certified I will probably release it as the first stable version.

@Ryan I would suggest waiting for v1.0.2 to appear in the app store (hopefully today or tomorrow as test), it should be stable enough to use. Both apps are incompatible with each other so if you use the old HomeyKit and configure HomeKit with it, you have to start over once you move to HomeKitty.

2 Likes

Already been working with Homekitty as you both suggested. Would be a disaster to start all over again when moving to kitty :wink:

I noticed just one thing. I just bought the Fibaro door sensor 2. And in Homey closed is closed when it sensors the magnet. But in HomeKit closed is open when touching the magnet. Can’t fix this, can this be a fault of homekitty?

I looked in Homey and there was already an update waiting for me. But it was 1.0.3 not 1.0.2

That’s a HomeKitty fault, fixed in the next test release (v1.0.4).

1 Like

Looking forward to dig into this new version/app👍

Long time ago I actually abandoned the Homey->HomeKit integration when I by mistaken happened to sync all my Homey devices to HomeKit and basically made HomeKit a big mess.

Do you know of a way to easily remove all current Homey devices from HomeKit in one go?

Find the bridge accessory that belongs to Homey and remove it from HomeKit:

  • press the circle with three dots in the right top corner, choose “Home Settings”
  • scroll down and select “Home Hubs & Bridges”
  • select the Homey bridge
  • scroll down and choose “Remove Bridge from Home”

Hi,

i tested the new Homekitty App yesterday. I got a problem with my Philio Roller Shutters.
In the HomeyKit App they work without any problems. the HomeKitty doesn’t recognize them.

Is there any chance to integrate them ?

many thanks

If you post an issue on Github I will look at it, no need to also post your question here :slight_smile:

Hi Robert,

Just replaced HomeyKit with HomeKitty. Great work, but I noticed something odd. All devices with the question ‘What is plugged in?’ appear twice in Homekit.
I suspect that both ‘virtualClass’ and ‘class’ are exposed to Homekit.
It is not a big deal though, everything works, so no need for an extra update.

You’re right, when a device has both a class and a virtual class, it’s added twice. This issue (and some other ones) is already solved in the Github version but I’m waiting for a bit more feedback before I will publish it to the app store :slight_smile:

And the Aqara door sensor isn’t registering open or closed in HomeKity.

1 Like

Please report issues here: Issues ¡ robertklep/name.klep.homekitty ¡ GitHub

Love the new device overview in the app settings much clearer!

2 Likes