I’ve setup Homekit Brigde integration and it’s working perfectly on my iphone. I cannot say the same for my Apple Watch: I noticed that when I open app on AW it’s not responding or undefintely updation 50% of the time (no matter if I’m at home connected to same wifi or not).
The only “solution” I’ve found so far is to force app closure and reopen it but I’m sure there’s a more preferrable option to achive the same result.
I was having this issue. I restarted the watch and phone with no progress. Then I simply called homekit.reload from the Developer Tools section of HA and things are back to normal. Not sure what could be causing one client to stop working while others work.
I have a small hunch. What brand WiFi AP/Router do you have?
What do you mean background updates? Do you mean ‘Background App Refresh’ on the phone or something else?
I also have Unifi gear. Do you have IGMPv3 enabled? I’ve noticed that sometimes the watch will use the phone’s MAC address (perhaps when it’s connected to the phone’s Bluetooth). I wonder if that confuses IGMPv3 (which attempts to only route broadcast traffic to interested clients). Perhaps the Bonjour broadcast traffic for HomeKit doesn’t always route correctly for the watch. Just a theory at this point.
Yeah possible I have a different issue than you. So disabling ‘Background App Refresh’ for the Home app on your Watch solved it for you? You no longer have any problems? I’ll try that. I’ll also catalog all of the steps I’ve taken here too in case someone ends up with a similar/same issue (and I’ll update it in place as I think of new things).
My observations so far:
My watch (Series 6) and my wife’s watch (Series 3) both get the ‘Not Responding’ issue.
HomeKit/Siri works flawlessly on all other devices in the house (3 iPhones, iPad, 2 Macs).
When Apple Watch stops working with HomeKit (usually via Siri), I can still open the Home app on the Watch and see all the (correct) states of everything. Once I try to tap something to change it, then I get the ‘Not Responding’ text
homekit.reloadalways fixes the issue temporarily. Then the issue happens again 2-48hrs later.
When the issue occurs I can still use my watch to control my Ecobee thermostat which is directly connected through HomeKit (not HA)
(from watching logs) It seems like my watch and my wife’s watch always go through the Apple TV (my Home Hub) even when connected to WiFi. This seems to be the case both using Siri as well as using the Home app. This was unexpected, as I thought it would try going directly over the LAN like the phones. When my Home Hub is disabled, the watch routes HomeKit traffic through my iPhone.
HomeKit on the Watch does not work if both my HomeKit hub and my phone are off. (Perhaps this is normal? Does the watch never directly connect to HomeKit accessories? Perhaps they’re too chatty and would run down the battery?)
Things I’ve tried (that haven’t worked):
Running homekit.reload daily with an automation
Disabling WiFi on the watch
Disabling IGMPv3 on my Unifi APs
Resetting my watch to factory settings and re-syncing with my phone
Disabling ‘Background App Refresh’ for the Home app on the watch.
Switching my watch to a different phone (I bought a new phone)
Installing the new UAP-AC-PRO firmware that just got released that is supposed to “Fix intermittent broadcast and multicast packet drop… [for] IoT devices that rely on multicast for discovery.” (Weird that this would only affect my watch though if it were an AP issue)
Disabling ‘Background App Refresh’ for all apps on the watch.
Disable IGMP Snooping on my Unifi switches
Figure out a way to log HomeKit requests in HA to look for clues
Sign out and sign back into iCloud on my Apple TV
Disabling my AppleTV as the Home Hub (worked well, but obviously only on my local network)
Calling homekit.reload hourly (Didn’t help, also creates a predictable blip in operation hourly)
Things I’m trying next:
Removing all Unavailable HA devices from HomeKit (@squirtbrnr’s theory)
Completely delete/reset my HomeKit home (I really don’t want to do this)
Conclusions
Since homekit.reload fixes the issue (at least temporarily), there must be EITHER a subtle bug in Home Assistant OR a bug somewhere else (ie in the phone/watch, or my networking gear) that gets alleviated when homekit.reload is called. This gives me some confidence that maybe this can be fixed or worked around in HA if the above things don’t solve my issue.
The fact that I can still control my Ecobee directly through HomeKit also seems to point to a subtle HA bug.
well I tested some days before responding and no: the issue is still there. I have to manually force close app in watch and reopen it in order to see real status of the lights.
Have you tried an automation to load homekit.reload more often (hourly maybe)?
Manually force closing the app on the watch doesn’t solve it for me. I’m trying to disable IGMP snooping on my switches and then my last effort will be to do the hourly homekit.reload. After that I’m out of ideas! I might need to dig in and see if I can log requests from my Watch to Home Assistant to see if I can find a pattern.
Interestingly, my Apple Watch seems to only communicate with Home Assistant’s HomeKit via the AppleTV (my home hub) I think that’s probably a clue. Looks like a others were reporting issues with the Apple Watch and AppleTV starting last September:
https://discussions.apple.com/thread/251825621 - Someone reporting as of September 2020 their Apple TV does this – removing the Apple TV as a home hub solved the issue (but of course breaks remote HomeKit access)
If I disable my Apple TV as the home hub then HomeKit changes made on my watch come from my phone’s IP even though the watch is on WiFi. Not sure if this is normal or not. If I disconnect my phone from WiFi, HomeKit no longer works on the watch. Again not sure if that’s normal or not.
Ooh I managed to get into the not working state right now. Interestingly, it seems like when I’m in the “Not Responding” state on my watch, I do see a GET request come through when I push the buttons in the Home app, but no PUT request. This matches what I’m seeing as it seems the state of the devices on the watch look correct but I’m not able to change anything. I get something like this when I try to change the state of devices (10.0.0.254 is my Apple TV).
2021-02-21 22:44:31 DEBUG (Thread-178) [pyhap.hap_server] Request GET from address '('10.0.0.254', 51835)' for path '/characteristics?id=3647789233.10,3647789233.9'.
2021-02-21 22:44:31 DEBUG (Thread-178) [pyhap.accessory_driver] Get chars response: [{'aid': 3647789233, 'iid': 10, 'status': 0, 'value': 100}, {'aid': 3647789233, 'iid': 9, 'status': 0, 'value': 1}]
2021-02-21 22:44:31 INFO (Thread-178) [pyhap.hap_server] 10.0.0.254 - "GET /characteristics?id=3647789233.10,3647789233.9 HTTP/1.1" 207 -
Turning off the AppleTV as the Home Hub does seem to restore the watch to working with HomeKit again.
Hallo, I’m Italian (newbe) user (so sorry for my bad english).
I have same issue with my apple watch 4! Disable Apple TV homekit hub resolve the problem but is a very annoying thing, homekit do not working out of home!
Please condivide future solution (or Apple/HA fix) that can resolve problem definitively.
Thnaks
I’m trying a new solution… disable private address on Wi-Fi configuration of home Wi-Fi in Apple Watch … this seam resolve issue since 15/20 min … I will let you know
I periodically get this issue. iPhone and Mac work fine controlling HomeKit devices, but Apple Watch will say not responding. Restarting the phone and watch sometimes fixes the issue. Restarting HA sometimes fixes the issue if restarting the phone and watch doesn’t fix it. I have not tried the homekit.reload service call which seems to be a less drastic measure than restarting HA. I have UniFi APs, USG, and a UniFi switch. IGMP snooping is enabled, and IGMPv3 multicast enhancement is enabled. One thing I have noticed is if one device in my HomeKit Bridge in HA goes not responding or unavailable (MyQ garage doors are a frequent occurrence) then everything goes “No Response”. As soon as the inital devices are responsive again, everything responds normally. I only have one HomeKit Bridge configured via YAML.
Welcome @Fly98 and @squirtbrnr! I’m glad to have some more eyes on this! Can everyone here enable request logging for HomeKit as described above and paste what you see when you try to control something from your watch and it says ‘Not Responding’? The Log Viewer addon is how I view my logs for this. Once we get a few logs from different folks I think we’ll be in a good place to start a GitHub issue and engage a HAP-Python dev.
Thanks for trying this @Fly98! This had been in the back of my mind to try as well.
I’ve had private address disabled for my home network basically since the feature came out and I still have the issue.
I now think it’s unlikely to be Unifi related – from looking at request logs, when I get into the state where things stop working I continue to see GET requests (loads state) from the AppleTV when I try to turn things on and off but I don’t see PUT requests (changes state). To me this indicates that mDNS/Bonjour discovery is working fine and the AppleTV can find Home Assistant without issue (related to the IGMP settings) but there’s a higher level glitch happening, probably in the AppleTV.
BTW I’ve had my AppleTV disabled as a HomeKit hub for about a week and my watch has been working great. I’ve gotten maybe a couple ‘something went wrong’ or ‘not responding’ errors but always the second attempt will work – perhaps just a momentary disruption in my watch’s connection with my phone.