Announcing some improvements to the Homekit plugin for openHAB 2

I am getting the same message re META-INF and MANIFEST when loading the ios13.jar

Take the org.openhab.io.homekit-2.5.0-SNAPSHOT.jar that might work.
With the iOS13 version I got the same issues (2.5.M4).

Yes, I’m using that snapshot without ios 13 . Kind of works, but I get notifications about security system changes only half of the time. With HomeAssitant it was always 100%

Also I see errors like that:

[ERROR] [kit.internal.HomekitAccessoryUpdater] - Received duplicate subscription on HomekitSecurityCurrentState
[ERROR] [kit.internal.HomekitAccessoryUpdater] - Received duplicate subscription on HomekitSecurityTargetState

I’ve updated the release with a org.openhab.io.homekit-2.5.0-SNAPSHOT-ios13-2.jar that is properly packed, and no longer complains about MANIFEST.MF file. It’s working for me in 2.5.0-M5 now (and I immediately starting getting that error when I updated to M5 from S1555).

i am unable to connect my stable openhabian 2.4 with homekit (ios 13) binding from PaperUI.
here is my thread and i tried all “tricks”, but nothing helped me.

Any ideas ? thank you

apple has changed with ios13 the behaviour of the home app with regard of bridge discovery.

you need to use latest snapshot of homekit add on, e.g. org.openhab.io.homekit-2.5.0-SNAPSHOT-ios13-2.jar for openhab 2.5 or
this one https://1drv.ms/u/s!AqqiEfFRr6WAgYYCiET6gqfsd9L_Sw?e=Uo4wvK for openhab 2.4

1 Like

ios13-2.jar doesn’t have a working humidity. It keeps reporting 100% to homekit, even though OH shows the correct value.

hi @ccutrer,

I’m running OH 2.5.1-2 with Homekit IOS 13 as add-on.
I keep getting errors on the Smokedetectors - although they are working as expected and are reporting alerts in Homekit. Error appears every time I open the “Home” app on my phone.

[ERROR] [p.characteristics.BaseCharacteristic] - Could not retrieve value com.beowulfe.hap.impl.characteristics.smokesensor.SmokeDetectedCharacteristic

java.util.concurrent.CompletionException: java.lang.NullPointerException

at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:273) ~[?:1.8.0_222]

at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:280) ~[?:1.8.0_222]

at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:604) [?:1.8.0_222]

at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614) [?:1.8.0_222]

at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983) [?:1.8.0_222]

at com.beowulfe.hap.impl.characteristics.smokesensor.SmokeDetectedCharacteristic.getValue(SmokeDetectedCharacteristic.java:22) ~[hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.characteristics.BaseCharacteristic.makeBuilder(BaseCharacteristic.java:71) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.characteristics.EnumCharacteristic.makeBuilder(EnumCharacteristic.java:39) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.characteristics.BaseCharacteristic.toJson(BaseCharacteristic.java:61) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.json.AccessoryController.toJson(AccessoryController.java:76) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.json.AccessoryController.listing(AccessoryController.java:37) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.connections.HttpSession.handleAuthenticatedRequest(HttpSession.java:72) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.connections.ConnectionImpl.doHandleRequest(ConnectionImpl.java:53) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.connections.ConnectionImpl.handleRequest(ConnectionImpl.java:47) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.http.impl.AccessoryHandler.channelRead0(AccessoryHandler.java:52) [hap-1.1.5-SNAPSHOT.jar:?]

at com.beowulfe.hap.impl.http.impl.AccessoryHandler.channelRead0(AccessoryHandler.java:17) [hap-1.1.5-SNAPSHOT.jar:?]

at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:32) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:299) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:36) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) [io.netty.netty-all-4.0.32.Final.jar:4.0.32.Final]

at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]

Caused by: java.lang.NullPointerException

at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:602) ~[?:1.8.0_222]

... 21 more

Any ideas ?

What’s the current value of your item? I think you’ll get that error if it is NULL, but not if it’s ON/OFF or OPEN/CLOSED (depending on if you’re using a Switch or a Contact). If you have devices that don’t report state very often, and it’s NULL after restarting OpenHAB, you should look into setting up a persistence service to be able to restore the prior state.

hi Cody

yes ! That did it ! I added an initialization rule ‘when system started’ to change the NULL-value.
Thx !

Hi Cody, is there a Homekit version which fix the thermostat temperature in iOS 13.3 and works also with Opnehhab 2.4.Your “org.openhab.io.homekit-2.5.0-SNAPSHOT-ios13-2.jar” doesn´t work for me.

I have no intention of compiling the latest code against OpenHAB 2.4.0. You could try unzipping the -ios13-2.jar and and grabbing the HAP .jar out of it, and then putting it into the older org.openhab.io.homekit .jar.

Does anyone have any idea how one would create a functioning Thermostat Setup when the Thermostat requires both a heatPoint and a coolPoint? It doesn’t work like normal thermostats because there is not TargetTemperature as it has been split into both heating temperatures and cooling temperatures. Suggestions?

@ndye What about having a virtual item and rules that update heat or cold setpoint depending on mode ? This is what I’m doing for my Daikin

Did you ever resolve this problem? I currently have the same setup and try to find a solution how to merge those two items into one item.

We merged a toning improvements, please check with tomorrow’s snapshot.

1 Like

I see there is an Garagedoor item now available. Haven’t had time to test yet, but will try it soon :smiley:

someone knows how to program the garagedoor
the icon appears in homekit but has no function

1 Like

First, thanks for the great rework of the homekit plugin.
I’ve tried it last night and stumbled over groups.

This works:

Switch ledStripeSwitchTest "Test Switch" {homekit="Lighting"}

This not:

Group ledStripe "LED Stripe" {homekit="Lighting"}
Switch ledStripeSwitch "Switch" (ledStripe) {homekit="OnState"}

Both switches came up in homekit. The Trace Logs show activity by both switched. But the Item ledStripeSwitch never changed (and tracelog is shorter).
It does not matter if I use Lighting.OnState or the short form.

Or do I missunderstand the new documentation?

But like the documentation, this should work, but it doesn’t.

Color ledStripeColor "Color" {homekit="Lighting, Lighting.Hue, Lighting.Brightness, Lighting.Saturation"}

I use 2.5.5 release on Debian.

Hi Daniel,

i have added these lines to my config (copy&paste)

Group ledStripe "LED Stripe" {homekit="Lighting"}
Switch ledStripeSwitch "Switch" (ledStripe) {homekit="OnState"}
Color ledStripeColor "Color" {homekit="Lighting, Lighting.Hue, Lighting.Brightness, 
Lighting.Saturation"}

and it works as expected. in both direction - if i change state in basic ui, i see changes in home app and other way around. can you paste you trace log?