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

robertklep
Tue, 29 Nov 2022 13:25:03 +0000
Apps

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

Stable: v2.4.4

Test: v2.5.3

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: GitHub · Where software is built

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

Changelog

v2.5.3 — Fixed crash issue with thermostat devices

v2.5.2 — Support thermostat devices with “onoff” capability

v2.5.1 — Removed Night mode from home alarm, since Homey doesn’t have an equivalent

v2.5.0 — Support for fan_speed capability

v2.4.4 — Fixed issue with “heater” map

v2.4.3 — Increased “settle time after reboot” to 30 minutes

v2.4.2 — Added support for “airconditioning” devices

v2.4.1 — Fixed issue with lights becoming dimmable when they weren’t

v2.4.0 — Adaptive Lighting support

v2.3.5 — Hopefully fix issues with thermostat temperature units

v2.3.4 — Set Homekit target temperature limits to match Homey’s

v2.3.3 — Also allow “other” device class to be considered for window coverings

v2.3.2 — Fixed issue with temperature units for thermostats

v2.3.1 — Tilt support for window coverings

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

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.

424 posts - 103 participants