Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Motion/Ding Notification Issues #933

Closed
jchristianj opened this issue May 11, 2022 · 46 comments
Closed

Motion/Ding Notification Issues #933

jchristianj opened this issue May 11, 2022 · 46 comments
Labels
bug Something isn't working

Comments

@jchristianj
Copy link

Bug Report

Describe the Bug

Since 11.0.0 (or even before, I came from 9.24.0) both motion sensors (for Ring Pro and Ring2) do no longer trigger and remain in no-motion status in homekit although there is motion. Motion based automations do not trigger.

To Reproduce

Happens since Plugin 11.0.0

Expected behavior

Should trigger as before

Screenshots/Logs

With old Plugin (If I remember correctly 9.24.0) there are multiple log entries, e.g.:
[08/05/2022, 16:45:12] [homebridge-ring] Ring Detected Motion

With latest version there is no log entry for any motion.

Homebridge Ring Config

{
"refreshToken": "secret_token",
"_bridge": {
"username": "AB:CD:EF:GH:IJ:KL",
"port": 42621
},
"platform": "Ring"
}

Environment

  • Raspbian GNU/Linux Buster (10)
  • Node.js: 16.13.1
  • NPM: 8.1.2
  • homebridge-ring: 11.0.0
@jchristianj jchristianj added the bug Something isn't working label May 11, 2022
@jchristianj
Copy link
Author

Just to reconfirm: Went back to 9.24.0 and all is fine. Log shows motion events, and all triggers in homekit as it should.

@tsightler
Copy link
Collaborator

By any chance do you not have a Ring Protect subscription? Also, the v11 plugin uses push notifications so if you are using features like Smart Alerts to restrict the notifications you receive in the Ring app it will also keep those notifications from being received by the plugin. Prior versions used an older, polling based interface and would receive motion notifications regardless of Smart Alert settings.

@jchristianj
Copy link
Author

Yes, I have a ring subscription. And you're right, I am using smart alerts, but they shall only be recorded, I don't want to be notified in the Ring App. My settings are like this:

IMG_0328

I only want to use the Ring's motion sensors for Homekit automations when people are detected, and don't wanna be notified at all in case of motion.

Is there a way to get back this functionality in v11?

@ogremustcrush
Copy link

I don't know if this issue is really a bug but rather expected functionality, but I'm going to throw my hat in on the changes leading to it.

I'm holding off on updating (using the downstream project ring-mqtt, hey @tsightler) as the requirement for push notifications to be enabled in the Ring app completely breaks how I use the motion events from the API. I probably have 5 or 6 different scenarios of how alerts are configured for various cameras, for no alerts ever, to alerts at all time, to multiple motion schedules and/or smart alert configurations, however with the old polling method I could get motion events from all of them regardless of whether there were alerts turned on.

It was actually the ones that had alerts turned off entirely I used the motion events from the API the most from, using cameras in my garage as generic motion sensors for automating lights etc, and I really don't want my phone buzzing every time those get activated. I could turn off the OS level notifications for those cameras, but I have some devices with the ring app running older OSs that don't have that functionality (category level notification control,) and there still isn't a way to handle "discretionary" alerts like the smart alerts or motions schedules where I want some but not all notifications but want all the motion events through the API.

I appreciate the elegance and technical benefits in enabling events from push notifications, but it does result in a significant loss of functionality for those that have built systems around the previous functionality. My preference would be to make this an option where you can enable the push notification based system for maximum responsiveness or use the old (slower and less reliable) polling system but get all events instead of just those that also make your phone buzz. Whether that gets implemented or not, thank you to for the maintainers and contributors for all the work building and maintaining this useful API 😄

@tsightler
Copy link
Collaborator

I pointed out this change during v10-beta in the hope of having both available as I was very concerned about the loss of functionality for ring-mqtt users. I also make significant use of smart alerts, so it was quite impacting even for me personally, although I was mostly able to work around it without too much trouble.

However, there are significant functionality benefits to push notifications with regards to battery cameras and removal of the always troublesome polling interface and, as a maintainer, I can fully understand why keeping two approaches would not be ideal. While options are great for users, they are pretty much just additional effort for maintainers and most of us already have limited time to maintain these projects at all.

The reality, from my perspective, is that I will use whatever @dgreif is willing to maintain. I expected to hear some negative feedback around this change from ring-mqtt users, and I've considered the possibility of implementing polling within ring-mqtt itself in the future (there's no reason it has to be in ring-client-api) based on how strong the demand turns out to be, although, realistically, most ring-mqtt users are also Home Assistant users and can just use the native Ring integration if they just want polling.

@jchristianj
Copy link
Author

So just speaking for my configuration I found a good and working solution:

You need to enable the required notification in the Ring App Smart Alert settings. Turn on alerts for person only or for movement or both. This will trigger the motion detection in the Homebridge Ring plugin. As soon as it is enabled, the homebridge log shows motion events and the motion detector in Homekit will be triggered and can be used for automations.

To avoid that the iPhone will notify on any motion event, it is NOT necessary to disable the notifications on iOS level; just go into the camera setting (Ring App, devices, chose device) and disable the general motion notification slider button (above the live-view button).
For me this brings back functionality as before.

@ogremustcrush
Copy link

ogremustcrush commented May 12, 2022

most ring-mqtt users are also Home Assistant users and can just use the native Ring integration if they just want polling.

Oof, nobody should do that, I would think if anyone would you would appreciate just how much better your/dgreifs implementation is than the native HA one. I guess if you were doing it for just motion sensors, but even that would probably make everything less reliable as the native integration seemed to trigger rate-limits all the time if you have more than a couple cameras.

To avoid that the iPhone will notify on any motion event, it is NOT necessary to disable the notifications on iOS level; just go into the camera setting (Ring App, devices, chose device) and disable the general motion notification slider button (above the live-view button).

Interesting, I haven't played with this actual implementation yet, is that slider handled client-side so the device (and therefore the API) still gets a push notification but simply doesn't handle it making the phone notify? Wonder if the motion schedules do the same thing, since they also toggle that slider in the app. Still unfortunate to have to lose smart alert settings and not be able to filter some of those notifications to the phone, but it's at least a smaller loss since the smart alerts don't really work that well anyway, get lots of person alerts for cats, spiders, and drops of water.

@tsightler
Copy link
Collaborator

tsightler commented May 12, 2022

Oof, nobody should do that, I would think if anyone would you would appreciate just how much better your/dgreifs implementation is than the native HA one. I guess if you were doing it for just motion sensors, but even that would probably make everything less reliable as the native integration seemed to trigger rate-limits all the time if you have more than a couple cameras.

Yeah, that's what I mean, just use the native HA integration for motion sensors/dings. I mean, it just uses the same polling interface, there's nothing really special about it, although I do think it polls separately per-camera, while ring-client-api polled once for all cameras. Over the last few months I've learned quite a bit more Python so I keep thinking I should move at least some of these enhacenments to the native integration, as I believe it is without a maintainer, but there's no way I'm going to actually have time for that!

I mostly worked around the new behavior with the same methods mentioned above, so I'm hoping most ring-mqtt will be OK with it. We'll see I guess.

@ogremustcrush
Copy link

Yeah, that's what I mean, just use the native HA integration for motion sensors/dings.

Unfortunately there's no way to configure HA to just get the motion/dings anymore, it create entities for and polls for everything the integration supports. You can of course not use them or disable them, but if it is causing rate-limits to trip due to the way it polls, it's potentially going to affect ring-client-api/ring-mqtt running on same account/IP as well. You can't even configure the polling frequency anymore, it all got deprecated/removed when they went to UI configuration only. I was getting rate-limit timeouts with the HA integration back when I only had like 5 cameras, now I have 13 + all the stuff tied into the alarm system so it's pretty much unusable. When I dropped the native integration and switched exclusively to ring-mqtt once it added enhanced camera support (previously used HA for cameras and ring-mqtt for alarm) I found the whole experience was much more robust and reliable. Now that I have more devices I can only imagine how bad the native integration would be.

Anyway, I guess I can try turning off smart alerts and see if that drives me bonkers or not before transitioning to the new code, looked like there was another issue (#934) with push notifications stopping after a few days so not in a huge rush since the old codebase still works for my needs for now.

@bensuthers-au
Copy link

I’ve rolled back to 9.24. The motion sensitive doorbell trigger is where it’s all at for me.

@jordanmerrick
Copy link

I've been experiencing the same issue with dropped notifications with both Homebridge Ring and Scrypted. There was a post in the Scrypted discord yesterday about an update that uses a different implementation of push events that seems to be resolving this issue?

I'm going to switch some cameras to Scrypted and see if it's any better. Hopefully this can help with the Homebridge plug-in.

@grouchystitch
Copy link

I’ve rolled back to 9.24. The motion sensitive doorbell trigger is where it’s all at for me.

Same over here . Automations stopped working after updating , rolled back to 9.24 and everything started working again

@dgreif
Copy link
Owner

dgreif commented Oct 6, 2022

For anyone having issue here, would you mind trying the latest version? There was an update to the Push Notification dependency that I was hoping would help with this problem, but I can't recreate it to find out for sure

@grouchystitch
Copy link

I also tried the latest version 11.3.0 when it was release but I can try again.

@tsightler
Copy link
Collaborator

@grouchystitch You seem to be saying that automation just stopped working completely immediately after the upgrade, that's not really what this issue is about. This issue is referring to the problem where notifications are initially working, and then stop working randomly at some point. Can you clarify the specific problem you are having?

This issue with push notifications stopping after a while common and known problem with firebase messaging where it can't detect things like and unexpectedly closed socket (for example due to a firewall NAT mapping timeout). The most recent version of push-receiver implements heartbeat pings to keep the connection alive thus hopefully avoiding those types of timeouts, but also making it possible to detect such things are re-establish the connection.

@dgreif Just FYI, about a month ago I built a version of push-receiver that included the heartbeat changes and also had a beta version of ring-mqtt that used a modified version of ring-client-api to use this forked push-receiver package. I've personally only had push notifications stop maybe once or twice, even without the heartbeat feature, but I did have several users that were having consistent problems with lost push notifications, in some cases even just after a few hours, and the push-receiver heartbeat change seem to have solved those problems. I was really happy to see this change make it upstream and appreciative that you've managed to get a new version of ring-client-api that uses it out so quickly. Now I just need to push out a new ring-mqtt version, hopefully in the next few days. Just wanted to say thanks!

@dgreif
Copy link
Owner

dgreif commented Oct 6, 2022

Thanks for the info @tsightler! Good to know your users have seen improvements with the heartbeat change. I am hoping it will resolve this issue for homebridge as well, but it really comes down to waiting to hear back on this thread. I may add one more change that hides the HEARTBEAT logging, but otherwise I'm hoping this is just resolved now.

@syeltuor
Copy link

syeltuor commented Oct 9, 2022

Hi, just following up on the first response here which asked…
By any chance do you not have a Ring Protect subscription?
Can someone enlighten me why having a Ring Protect subscription is needed here?
I am looking to receive standard motion or doorbell alerts but these are now very inconsistent
Setup is currently a node js app based on the example in this git repo to action based on motion. Thanks in advance.

@tsightler
Copy link
Collaborator

tsightler commented Oct 9, 2022

A Ring Protect plan is not required but, if you have one, some of the additional features, like Smart Alerts, might impact the behavior of notifications. Basically, if you use any features that suppress notifications to the Ring app, it can also impact notifications to ring-client-api.

@grouchystitch
Copy link

grouchystitch commented Oct 9, 2022

@grouchystitch You seem to be saying that automation just stopped working completely immediately after the upgrade, that's not really what this issue is about. This issue is referring to the problem where notifications are initially working, and then stop working randomly at some point. Can you clarify the specific problem you are having?

This issue with push notifications stopping after a while common and known problem with firebase messaging where it can't detect things like and unexpectedly closed socket (for example due to a firewall NAT mapping timeout). The most recent version of push-receiver implements heartbeat pings to keep the connection alive thus hopefully avoiding those types of timeouts, but also making it possible to detect such things are re-establish the connection.

@dgreif Just FYI, about a month ago I built a version of push-receiver that included the heartbeat changes and also had a beta version of ring-mqtt that used a modified version of ring-client-api to use this forked push-receiver package. I've personally only had push notifications stop maybe once or twice, even without the heartbeat feature, but I did have several users that were having consistent problems with lost push notifications, in some cases even just after a few hours, and the push-receiver heartbeat change seem to have solved those problems. I was really happy to see this change make it upstream and appreciative that you've managed to get a new version of ring-client-api that uses it out so quickly. Now I just need to push out a new ring-mqtt version, hopefully in the next few days. Just wanted to say thanks!

@tsightler - it was the same thing I was saying or at at least trying to convey. Maybe it was miss understood Anyway now it’s seem to be working after updating to the latest version.

@dgreif - Thank you for the update . It seems like updating the dependencies fixed the issue for me .

@dgreif
Copy link
Owner

dgreif commented Oct 15, 2022

v11.3.1 should remove the HEARTBEAT logs. Based on feedback so far, it sounds like this issue is now resolved. @jchristianj let me know if you are still having issues.

@dgreif dgreif closed this as completed Oct 15, 2022
@Gotcha182
Copy link

I too have been having issues with no motion detection notifications from a pro 2 and stick up camera linked currently. Updated dependencies, checked smart alerts, checked all updates, unbound cameras and still no dice. Additionally no view on Apple TV when the doorbell button is pressed or chimes on the HomePods.

@Gotcha182
Copy link

I too have been having issues with no motion detection notifications from a pro 2 and stick up camera linked currently. Updated dependencies, checked smart alerts, checked all updates, unbound cameras and still no dice. Additionally no view on Apple TV when the doorbell button is pressed or chimes on the HomePods.

I still had intermittent issues with the Motion detection. It’s an Apple HomeKit issue. Believe it or not I had to remove all the devices from my home kit, delete my home and also delete the HomeKit app, rebooted and reinstalled the HomeKit app. Once I added all my devices everything started working flawlessly.

Ugh! I really hope to not have to do that but definitely odd when my automations do not work on any motion at this point whether it’s the motion from any of the ring cameras or the motion detectors for the ring alarm integrated in. I do not want to have to reload in 100+ devices to get this working again

@Gotcha182
Copy link

@dgreif Are there any other options as there is no motion detection at all from two different cameras as well as camera types

@dgreif
Copy link
Owner

dgreif commented Oct 24, 2022

There are many factors that could cause that to happen, and it's not simple to debug. Do the notifications immediately after a homebridge reboot?

@Gotcha182
Copy link

There are many factors that could cause that to happen, and it's not simple to debug. Do the notifications immediately after a homebridge reboot?

No I get zero notifications for motions. I have a Seaver lock tied into my alarm and those notifications come in but nothing for motion at all

@chinedu40
Copy link

I would like to chime in (no pun intended), I'm on the latest version of the plugin and currently receive notifications on my phone when the doorbell is pressed (Ring video doorbell 4), but there is no chime played on homepods. Is there anyway to fix this issue? I've restarting the homepods in question but no luck.

@bensuthers-au
Copy link

bensuthers-au commented Nov 15, 2022 via email

@townsen
Copy link

townsen commented Jan 5, 2023

The core problem is still there. On reading through the various issues people have reported there is a common thread that @dgreif you'd be well placed to address. It is very simple: How do you get the new push notifications delivered? Here's the simplest possible illustration of the problem that I and others clearly have:

  1. The doorbell notifications in HomeKit (via Homebridge) worked perfectly in version 9.24. Upon upgrading to the latest releases (11.7.1) they simply stopped. They don't even appear in the Homebridge log in debug mode. That includes chiming on homepods.
  2. No other setup changes have been made, not to HomePods, HomeBridge nor Ring App.
  3. I, like many others do not have any Ring subscriptions so the issue of configuring 'Smart Alerts' (which require a subscription) is irrelevant.
  4. Correct functionality is restored immediately on re-installing 9.24. No need for resets, deletions, Ring app configurations or any of the other 'delete everything from the Home app and start again' actions people have suggested.
  5. This tells me there is a problem receiving the push notifications that is common for those folks who just have the simplest setup (one doorbell, no customizations, no subscriptions, etc.)

I'm happy to do any debugging you may need to solve the problem.

@dgreif
Copy link
Owner

dgreif commented Jan 5, 2023

@townsen there were intentional changes to the way motion/dings are detected between v9 and v10/11. Instead of polling (requesting the info from the server every few seconds), we are now subscribing to push notifications. This means Ring will actually send us the data right when it happens. It's way more efficient network-wise, you get the data asap, and as a bonus the push events usually include a snapshot id which can be used to provide a snapshot in HomeKit.

The downside with push notifications from Ring is that they don't seem to work for 100% of users. They also may be impacted by smart notification settings. That's where all of the workarounds you mentioned come into play. It's not a simple matter of fixing a bug, it's an entirely different strategy for getting notifications.

One solution would be to use both polling and push notifications, but there are downsides. You get the network inefficiency back, and for users who can only use polling, snapshots likely won't be included in the HomeKit notification. This means many more obscure and less obvious bugs. Rather than dealing with that headache, I'd prefer to stick with just push notifications. I understand they aren't working for everyone, and I welcome PRs from anyone who can figure out how to make them more reliable. Until then, I suggest you try some of the workarounds. I think the most promising is to try removing all the active sessions from the Ring Security Center, and then logging back in.

@townsen
Copy link

townsen commented Jan 5, 2023

I get the whole polling/push thing and have no issues with moving towards it, though for people with one single doorbell it's maybe not too much of an overhead. However you should put in bold type somewhere the following:

The downside with push notifications from Ring is that they don't seem to work for 100% of users

and you could add we're not sure why!

Like many others I'm sure, I have never visited the Ring website, I just don't need or want anything that it offers. I registered when I first got the doorbell and have forgotten about it ever since. Prompted by your comment:

I think the most promising is to try removing all the active sessions from the Ring Security Center, and then logging back in.

I logged in, and lo and behold there is a button and a pop-up relating to Push notifications, asking if I want to Enable them:

Screenshot 2023-01-05 at 19 19 13

I said yes and it at first refused saying my iPad Safari browser wouldn't cut it. So I logged into my Mac Mini and did the same from there. It enabled them:

Screenshot 2023-01-05 at 19 20 01

It also said that if I wanted them disabled I'd have to log out of the browser! This is interesting as my Homebridge instance is on a headless Raspberry Pi in a cupboard.

Screenshot 2023-01-05 at 19 28 22

Then I upgraded from 9.24 to 11.7.1 and tested it...

Nothing. No Homepod chime, no Homebridge log event. Not even a notification in the Safari browser on my Mac (and I checked all the macOS notification settings, all good).

Screenshot 2023-01-05 at 19 24 36

Then I thought about your suggestion "removing all active sessions". I couldn't find anything like this on the site. The closest was the Control Centre page, accessed by clicking on the Account dropdown. I did find this article but that only talks about browsers. It also states they must be logged in. How is that supposed to work with a headless Homebridge instance? I guess you could issue the same subscription commands from your code. Thinking this might be the issue I hit Generate New Refresh Token in the plugin configuration. After doing the 2FA with Ring.com it updated it and I saved the configuration before restarting the child bridge containing Ring, and testing it...

Nothing. Not from the browser, nor visible in the Homebridge logs (same as above screenshot).

Note also that the list of Authorized Client Devices shown in Control centre was NOT updated after the token refresh.

Finally I reverted to 9.24 making no other changes just npm install homebridge-ring@9.24 followed by restart of the child bridge. Success:

Screenshot 2023-01-05 at 20 01 55

In finishing I think that it's highly possible that a Ring subscription may be required to enable this functionality, despite it not actually being called out anywhere in the doc. Do you know of a user that has got this working without a subscription? In any event I think that you could create a document showing people how to configure their push notifications, you're welcome to use the screenshots I took if they help.

It also might be useful to create a small debugging tool that just does the webpush stuff, that people could test on their setup. It can be as verbose as you like as it'll just be a diagnostic.

I hope this helps, 9.24 is a great plugin and I really respect your hard work in creating it.

@tsightler
Copy link
Collaborator

@townsen Enabling web push notifications in the Ring web dashboard UI is not related to push notifications overall. Enabling push notifications in the browser interface means that you can get notifications to your desktop browser (as everything you posted indicates), but this is not required to receive push notifications in the Ring app. For example, I definitely don't enable push notifications in the browser, but push notifications still work fine in the Ring app and with ring-client-api, no problem.

I get the whole polling/push thing and have no issues with moving towards it, though for people with one single doorbell it's maybe not too much of an overhead.

That's actually part of the issue, it's exactly the same amount of overhead no matter how few or many devices you have. It's simply a heavy and slow interface.

In finishing I think that it's highly possible that a Ring subscription may be required to enable this functionality, despite it not actually being called out anywhere in the doc. Do you know of a user that has got this working without a subscription? In any event I think that you could create a document showing people how to configure their push notifications, you're welcome to use the screenshots I took if they help.

I maintain the ring-mqtt project which uses the ring-client-api maintained here by @dgreif. The project has about 5000 users (not as many as this project), many of whom have no subscription, and 95% of users are leveraging a version that uses the push notification and there have been basically no reports of issues in the last months. There were some minor issues with notifications stopping randomly before the heartbeat fixes were introduced, but nothing at all lately.

Also, the Ring apps themselves use push notifications. A subscription is required for "Rich" notifications, that is absolutely true, but not for generic push notifications in general.

Do you have the Ring app installed on any of your devices? If so, do you get push notifications there? That's the first thing I ask users to test if they report an issue because, effectively, the code here is just doing the same thing that the Ring apps do, subscribing to push notifications from the Firebase messaging service.

@smockle
Copy link
Sponsor Collaborator

smockle commented Jan 5, 2023

I thought about your suggestion "removing all active sessions". I couldn't find anything like this on the site.

If you can access https://account.ring.com/account/control-center/authorized-devices, there’s a “Remove All Devices” button on that page.

Alternatively, if you’re logged into the Ring iOS app, you can reach this via the menu button (≡) > Control Center > Authorized Client Devices.

@townsen
Copy link

townsen commented Jan 5, 2023

@tsightler Well the fact that you have successful users is great, and the fact that you do no special configuration to get push notifications is great too. I have the Ring app on several devices, the rest of the family have iPhones, and they all work. They’re also pretty clearly called out on the Authorized Devices page that @smockle mentioned. I did see this, and it does have entries marked as ‘android’ - devices which I don’t possess, but could possible be the Raspberry Pi homebridge instances I use (there is not a lot of information to determine the device itself). I didn’t deauthorize any of those devices because a. I don’t want to have to reconfigure the Ring app on my family’s phones, and b. the date attached to them didn’t refresh when I got a new token. Perhaps that was a mistake, it’s late here in the UK so I’ll try delete the androids tomorrow.

Speaking of the UK, could the push stuff just be available in the US? Recall that I did not get any notifications in Safari either, despite it being correctly configured (and showing up as an Authorized Device with today’s timestamp). @tsightler do you have any UK users with no subscriptions?

@tsightler
Copy link
Collaborator

tsightler commented Jan 5, 2023

@townsen I can't be 100% sure that there are ring-mqtt users in the UK that don't have a subscription, as I don't track any metrics on users. The only reason I have visbility into the approximate number of users is because most users leverage ring-mqtt via the Home Assistant addon, and that reports via the HA analytics. That being said, the HA forum thread has over 1000 posts, and I've had 100's of issues and discussions opened on Github, and these are from users all over the world. It would be unlikely, although not impossible, that none of those are in the UK.

That being said, you have users with iPhones, and they receive push notifications, so that would imply that push notifications are available without any subscription. The code in ring-client-api that handles push notifications is more akin the Ring app vs web based push notifications, although I'll admit I haven't dug into the Ring web app that deeply to see how push notifications actually work there as I just don't care about it. However, it is interesting that you didn't receive any notification in your Safari browser even after enabling push notifications there.

I'm curious if you login to the Ring app on one of the iPhones, using the same account you are using with the ring-homebridge plugin, if it would show that motion alerts are enabled on the camera settings page.

It's certainly a mystery why, for some people, push notifications just don't work at all. It could be some bug or issue for sure, but it's really difficult to troubleshoot without access to the account in question.

@townsen
Copy link

townsen commented Jan 6, 2023

Success! I removed all of the authorized client devices except for the Safari browser and it started to report Motion and Doorbell events. Is it significant that the first entry was a 404? See below:

[1/6/2023, 11:16:31 AM] [Ring] 404 from endpoint https://api.ring.com/clients_api/ring_devices
[1/6/2023, 11:16:31 AM] [Ring] Session hardware_id not found.  Creating a new session and trying again.
[1/6/2023, 11:16:32 AM] [Ring] Found the following locations:
[1/6/2023, 11:16:32 AM] [Ring]   locationId: 8adb88a5-edc1-487a-82ce-776a185da19c - Torquay
[1/6/2023, 11:16:32 AM] [Ring] Configuring 1 cameras and 2 devices for location "Torquay" - locationId: 8adb88a5-edc1-487a-82ce-776a185da19c
[1/6/2023, 11:16:32 AM] [Ring] Pruning unused service

I added one iPhone back and it was still working. Over the coming hours I'll add them all back to see if push stops working. Perhaps the server side limits you to N devices where N is somewhere between 2 and 15. Perhaps it was the fact that I had an Authorized Client which had a name 'homebridge-ring', something that hasn't come back. (After refreshing the token I simply had an unknown client - see below). Whatever it is I think a prominent health warning is in order in the README.md for upgraders: just get people to remove all their devices and re-register them giving them the location in the Ring Control Center to do that.

Screenshot 2023-01-06 at 12 31 46

However it wasn't all sunshine, the actual trigger into HomeKit is very slow, around 15 seconds while it tries to get a snapshot:

[1/6/2023, 12:16:54 PM] [Ring] Front Door Detected Motion. Loading snapshot before sending event to HomeKit
[1/6/2023, 12:16:54 PM] [Ring] Loading new snapshot into cache for Front Door
[1/6/2023, 12:17:09 PM] [Ring] Failed to cache snapshot for Front Door (15.004s), The camera currently reports that it is online
[1/6/2023, 12:17:09 PM] [Ring] Snapshot for Front Door (doorbell_graham_cracker - Doorbell Wired) failed to refresh after 15 seconds
[1/6/2023, 12:17:10 PM] [Ring] Front Door Doorbell Pressed. Loading snapshot before sending event to HomeKit
[1/6/2023, 12:17:10 PM] [Ring] Loading new snapshot into cache for Front Door
[1/6/2023, 12:17:25 PM] [Ring] Failed to cache snapshot for Front Door (15.002s), The camera currently reports that it is online
[1/6/2023, 12:17:25 PM] [Ring] Snapshot for Front Door (doorbell_graham_cracker - Doorbell Wired) failed to refresh after 15 seconds
[1/6/2023, 12:17:25 PM] [Ring] No snapshot cached for Front Door
[1/6/2023, 12:17:25 PM] [Ring] Loading new snapshot into cache for Front Door
[1/6/2023, 12:17:26 PM] [Ring] No snapshot cached for Front Door
[1/6/2023, 12:17:26 PM] [Ring] No snapshot cached for Front Door
[1/6/2023, 12:17:26 PM] [Ring] No snapshot cached for Front Door
[1/6/2023, 12:17:26 PM] [Ring] No snapshot cached for Front Door

The notification was then delivered to my iPhone and I clicked on it which brought up the camera:

[1/6/2023, 12:17:32 PM] [Ring] Preparing Live Stream for Front Door
[1/6/2023, 12:17:32 PM] [Ring] Stream Prepared for Front Door (0.545s)
[1/6/2023, 12:17:32 PM] [Ring] WebSocket connected for Front Door
[1/6/2023, 12:17:32 PM] [Ring] iceConnectionStateChange: completed
[1/6/2023, 12:17:33 PM] [Ring] connectionStateChange: connecting
[1/6/2023, 12:17:33 PM] [Ring] iceConnectionStateChange: new
[1/6/2023, 12:17:33 PM] [Ring] iceConnectionStateChange: checking
[1/6/2023, 12:17:33 PM] [Ring] Activating Session
[1/6/2023, 12:17:33 PM] [Ring] iceConnectionStateChange: new
[1/6/2023, 12:17:33 PM] [Ring] iceConnectionStateChange: connected
[1/6/2023, 12:17:33 PM] [Ring] received first audio packet
[1/6/2023, 12:17:33 PM] [Ring] Stopped Live Stream for Front Door
[1/6/2023, 12:17:34 PM] [Ring] connectionStateChange: closed
[1/6/2023, 12:17:34 PM] [Ring] iceConnectionStateChange: closed
[1/6/2023, 12:17:35 PM] [Ring] No snapshot cached for Front Door
[1/6/2023, 12:17:35 PM] [Ring] Preparing Live Stream for Front Door
[1/6/2023, 12:17:36 PM] [Ring] Stream Prepared for Front Door (0.616s)
[1/6/2023, 12:17:36 PM] [Ring] WebSocket connected for Front Door
[1/6/2023, 12:17:36 PM] [Ring] Activating stream for Front Door (0.799s)
[1/6/2023, 12:17:36 PM] [Ring] iceConnectionStateChange: completed
[1/6/2023, 12:17:36 PM] [Ring] connectionStateChange: connecting
[1/6/2023, 12:17:36 PM] [Ring] iceConnectionStateChange: new
[1/6/2023, 12:17:36 PM] [Ring] iceConnectionStateChange: checking
[1/6/2023, 12:17:36 PM] [Ring] Activating Session
[1/6/2023, 12:17:37 PM] [Ring] Streaming active for Front Door (1.156s)
[1/6/2023, 12:17:37 PM] [Ring] iceConnectionStateChange: new
[1/6/2023, 12:17:37 PM] [Ring] iceConnectionStateChange: connected
[1/6/2023, 12:17:37 PM] [Ring] received first audio packet
[1/6/2023, 12:17:37 PM] [Ring] From Ring (Front Door): Input #0, sdp, from 'pipe:':
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0: Audio: opus, 48000 Hz, stereo, s16
Stream mapping:
  Stream #0:0 -> #0:0 (opus (libopus) -> aac (libfdk_aac))
Output #0, rtp, to 'rtp://127.0.0.1:49945?pkt_size=188':
  Metadata:
    encoder         : Lavf59.16.100
  Stream #0:0: Audio: aac (ELD), 16000 Hz, mono, s16, 24 kb/s
    Metadata:
      encoder         : Lavc59.18.100 libfdk_aac
size=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    
[1/6/2023, 12:17:37 PM] [Ring] connectionStateChange: connected
[1/6/2023, 12:17:37 PM] [Ring] Received stream data from Front Door (1.511s)
[1/6/2023, 12:17:37 PM] [Ring] received first video packet
[1/6/2023, 12:17:37 PM] [Ring] From Ring (Front Door): size=       3kB time=00:00:00.77 bitrate=  30.9kbits/s speed=1.49x    
[1/6/2023, 12:17:38 PM] [Ring] From Ring (Front Door): size=       5kB time=00:00:01.28 bitrate=  29.7kbits/s speed=1.23x    
[1/6/2023, 12:17:39 PM] [Ring] From Ring (Front Door): size=       7kB time=00:00:01.82 bitrate=  29.2kbits/s speed=1.16x    
[1/6/2023, 12:17:39 PM] [Ring] From Ring (Front Door): size=       8kB time=00:00:02.24 bitrate=  29.0kbits/s speed=1.07x    
[1/6/2023, 12:17:40 PM] [Ring] Failed to cache snapshot for Front Door (15.001s), The camera currently reports that it is online
[1/6/2023, 12:17:40 PM] [Ring] Snapshot for Front Door (doorbell_graham_cracker - Doorbell Wired) failed to refresh after 15 seconds
[1/6/2023, 12:17:40 PM] [Ring] Stopped Live Stream for Front Door
[1/6/2023, 12:17:40 PM] [Ring] connectionStateChange: closed
[1/6/2023, 12:17:40 PM] [Ring] iceConnectionStateChange: closed
[1/6/2023, 12:17:40 PM] [Ring] Return Audio (Front Door): stopped gracefully
[1/6/2023, 12:17:40 PM] [Ring] Return Audio (Front Door): Guessed Channel Layout for Input Stream #0.0 : mono
Input #0, sdp, from 'pipe:':
  Metadata:
    title           : Talk
  Duration: N/A, bitrate: N/A
  Stream #0:0: Audio: aac, 16000 Hz, mono, s16
Stream mapping:
  Stream #0:0 -> #0:0 (aac (libfdk_aac) -> opus (libopus))
Finishing stream 0:0 without any data written to it.
[libopus @ 0xaaaada5452f0] No bit rate set. Defaulting to 96000 bps.
Output #0, rtp, to 'rtp://127.0.0.1:35105':
  Metadata:
    title           : Talk
    encoder         : Lavf59.16.100
  Stream #0:0: Audio: opus, 48000 Hz, stereo, s16, 96 kb/s
    Metadata:
      encoder         : Lavc59.18.100 libopus
size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Exiting normally, received signal 15.
[1/6/2023, 12:17:49 PM] [Ring] From Ring (Front Door): stopped gracefully
[1/6/2023, 12:17:49 PM] [Ring] From Ring (Front Door): pipe:: Connection timed out
[1/6/2023, 12:17:49 PM] [Ring] From Ring (Front Door): size=      10kB time=00:00:02.75 bitrate=  28.9kbits/s speed=0.22x    
video:0kB audio:8kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 17.027281%
[1/6/2023, 12:17:49 PM] [Ring] From Ring (Front Door): Exiting normally, received signal 15.

All looks ok there and it streams fine. I'll search other issues for snapshot problems, but if you know of anything please let me know.

@townsen
Copy link

townsen commented Jan 6, 2023

I should add that I just re-checked the Control Center Authorized devices and homebridge-ring is back. It must have happened after token refresh, perhaps after the 404? Anyway for completeness I include it:

Screenshot 2023-01-06 at 14 03 30

@tsightler
Copy link
Collaborator

tsightler commented Jan 6, 2023

However it wasn't all sunshine, the actual trigger into HomeKit is very slow, around 15 seconds while it tries to get a snapshot:

I could be wrong, but I believe this has to do with the fact that you have a Doorbell Wired, which is effectively a battery camera without a battery. Ring used to have either battery or wired power cameras, with a few models that could operate in either battery or wired power mode, and the behavior of snapshots is different between these devices. Battery cameras are unable to take snapshots while recording, so you can only get snapshots in notifications if you have a Ring subscription that includes the UUID for the snapshot image in the notification. Unfortunately, it's become even more confusing now because Ring has introduced low priced doorbells that are "wired" but that have the same snapshot restrictions that previously applied only to cameras running on battery power. I've taken to calling them "low-power" vs "high-power" cameras instead.

The Doorbell Wired is basically a Ring battery camera without a battery (I assume it has perhaps a super capacitor or something that is charged by the doorbell power), so, even though it is "wired", it has all the limitations of a Ring battery camera, including not being able to take a snapshot while recording. The ring-homebridge code attempts to detect this case here:

if (this.device.operatingOnBattery && !imageUuid) {
  // battery cameras cannot fetch a new snapshot while recording is in progress
  logInfo(this.device.name + ' ' + eventDescription)
  return characteristicValue
}

Since you don't have a Ring subscription you will never have an imageUuid, because that is only included with rich notifications, but I think, because it's a Doorbell Wired, the check for operatingOnBattery still evaluates to false, and the code falls through to attempting to grab a snapshot.

I think the proper fix is probably to create a new device flag, perhaps isLowPower which would include not just cameras operatingOnBattery, but also those that are explicitly flagged as low power devices, like the Doorbell Wired.

Note I have not fully audited the ring-homebridge code, so my analysis could be incorrect, but that's what it looks like is happening based on a cursory overview so @dgreif may very likely come along and correct me.

@dgreif
Copy link
Owner

dgreif commented Jan 6, 2023

Wow, thanks for all the input @townsen @tsightler @smockle! It seems like clearing the device list in the Control Center really is the fix. I'm not sure what the actual limit is, but it makes sense that Ring would limit the number of devices able to receive push notifications.

Is it significant that the first entry was a 404

This is normal behavior. The first time you use a refresh token, the plugin also has to create a "session" with a unique hardware id. This is a one-time thing.

I think the proper fix is probably to create a new device flag, perhaps isLowPower which would include not just cameras operatingOnBattery, but also those that are explicitly flagged as low power devices, like the Doorbell Wired.

I didn't realize they had this new class of devices 😞. I'm sure there is some way that Ring is determining which devices fall into a given category, but the current check must not be matching it perfectly. @townsen would you be willing to follow the steps in https://github.com/dgreif/ring/wiki/Data-Discovery and upload the data from that camera here? That should give me a little more visibility

@townsen
Copy link

townsen commented Jan 7, 2023

Here it is. I jqd it and there's a lot of information in there, I hope it helps. Let me know if there's any further testing you need doing, happy to help:

{"locations":[{"name":"Torquay","cameras":[{"description":"Front Door","subscribed":true,"subscribed_motions":false,"battery_life":null,"external_connection":true,"firmware_version":"Up to Date","kind":"doorbell_graham_cracker","settings":{"cv_settings":{"detection_types":{"human":{"enabled":false,"mode":"none","record":null,"notification":false},"loitering":{"enabled":false,"mode":"none","record":null,"notification":false},"motion":{"enabled":true,"mode":"edge","record":null,"notification":true},"moving_vehicle":{"enabled":false,"mode":"none","record":null,"notification":false},"other_motion":{"enabled":false,"mode":"none","record":null,"notification":false},"package_delivery":{"enabled":false,"mode":"none","record":null,"notification":false},"package_pickup":{"enabled":false,"mode":"none","record":null,"notification":false}},"threshold":{"loitering":10,"package_delivery":2},"triggers":[]},"cv_paid_features":{"human":false,"loitering":false,"motion":false,"other_motion":false,"package_delivery":false,"package_pickup":false,"cv_triggers":false},"concierge_settings":{"mode":"disabled"},"other_paid_features":{"alexa_concierge":false,"sheila_cv":false,"sheila_recording":false},"sheila_settings":{"cv_processing_enabled":false,"local_storage_enabled":false},"server_settings":{"ring_media_server_enabled":true,"ring_media_server_host":"rms-eu-west-1.rapi.us-east-1.prod.client.cap.ring.devices.a2z.com"},"zone_settings":{"motion":[{"name":"Default Zone","state":"enabled","properties":{"detection_types":["motion"]},"vertices":[{"x":0.15628417,"y":0.6721088},{"x":0.34317982,"y":0.34649807},{"x":0.67759496,"y":0.29115644},{"x":0.72975934,"y":0.38540855},{"x":0.6824437,"y":1},{"x":0.58415234,"y":1},{"x":0.333333,"y":1},{"x":0.021446593,"y":0.995139}]}]},"offline_motion_event_settings":{"subscribed":false,"enabled":false,"max_upload_kb":5000,"resolution_p":360,"frequency_after_secs":2,"period_after_secs":30},"lite_24x7":{"subscribed":false,"enabled":true,"frequency_secs":180,"resolution_p":360},"enable_vod":1,"exposure_control":2,"motion_zones":[0,0,0,0,0],"motion_snooze_preset_profile":"low","motion_snooze_presets":["none","low","medium","high"],"live_view_preset_profile":"middle","live_view_presets":["low","middle","high","highest"],"pir_sensitivity_1":5,"vod_suspended":0,"doorbell_volume":8,"chime_settings":{"type":2,"enable":true,"duration":10},"video_settings":{"encryption_enabled":false,"encryption_method":null},"advanced_motion_detection_enabled":true,"advanced_motion_zones":{"zone1":{"name":"Default Zone","state":2,"vertex1":{"x":0.15628417,"y":0.6721088},"vertex2":{"x":0.34317982,"y":0.34649807},"vertex3":{"x":0.67759496,"y":0.29115644},"vertex4":{"x":0.72975934,"y":0.38540855},"vertex5":{"x":0.6824437,"y":1},"vertex6":{"x":0.58415234,"y":1},"vertex7":{"x":0.333333,"y":1},"vertex8":{"x":0.021446593,"y":0.995139}},"zone2":{"name":"Zone 2","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0},"vertex3":{"x":0,"y":0},"vertex4":{"x":0,"y":0},"vertex5":{"x":0,"y":0},"vertex6":{"x":0,"y":0},"vertex7":{"x":0,"y":0},"vertex8":{"x":0,"y":0}},"zone3":{"name":"Zone 3","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0},"vertex3":{"x":0,"y":0},"vertex4":{"x":0,"y":0},"vertex5":{"x":0,"y":0},"vertex6":{"x":0,"y":0},"vertex7":{"x":0,"y":0},"vertex8":{"x":0,"y":0}}},"advanced_motion_detection_human_only_mode":false,"enable_audio_recording":true,"people_detection_eligible":false,"live_view_disabled":false,"ignore_zones":{"zone1":{"name":"undefined","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0}},"zone2":{"name":"undefined","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0}},"zone3":{"name":"undefined","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0}},"zone4":{"name":"undefined","state":0,"vertex1":{"x":0,"y":0},"vertex2":{"x":0,"y":0}}},"enable_rich_notifications":true,"rich_notifications_billing_eligible":false,"loitering_threshold":10,"advanced_motion_detection_types":[],"motion_detection_enabled":true,"rich_notifications_scene_source":"cloud","advanced_motion_zones_enabled":true,"advanced_motion_zones_type":"8vertices","advanced_pir_motion_zones":{"zone1_sensitivity":5,"zone2_sensitivity":5,"zone3_sensitivity":5,"zone4_sensitivity":5,"zone5_sensitivity":5,"zone6_sensitivity":5},"motion_sensitivity_profile":1,"motion_announcement":false,"stark_enrolled":null,"rich_notifica-uuid":false},"features":{"motion_zone_recommendation":false,"motions_enabled":true,"show_recordings":false,"show_vod_settings":true,"rich_notifications_eligible":true,"show_24x7_lite":true,"show_offline_motion_events":false,"cfes_eligible":false,"sheila_camera_eligible":true,"sheila_camera_processing_eligible":true,"motion_message_enabled":false},"owned":true,"alerts":{"connection":"online","rssi":"low","ota_status":"timeout"},"motion_snooze":null,"stolen":false,"is_sidewalk_gateway":false,"created_at":"2021-11-20T09:36:25Z","shared_at":null,"active_schedule_uuid":null,"health":{"device_type":"doorbell_graham_cracker","last_update_time":1673062252,"connected":true,"rss_connected":true,"vod_enabled":true,"sidewalk_connection":false,"floodlight_on":false,"white_led_on":false,"night_mode_on":false,"hatch_open":false,"packet_loss":0,"packet_loss_category":"good","rssi":-71,"transformer_voltage":19.522,"transformer_voltage_category":"good","wifi_is_ring_network":false,"ota_status":"timeout","network_connection_value":"wifi","external_connection":false,"battery_percentage_category":"unknown","battery_voltage_category":"unknown","firmware_version":"10.0.33","rssi_category":"poor","rssi_risk_level":"low","second_battery_percentage_category":"unknown","second_battery_voltage_category":"unknown","firmware_version_status":"Up to Date","stream_resolution":100,"status_time":54822903833527,"firmware_avg_bitrate":"0","video_packets_total":"1730"},"deactivated_at":null,"ext_power_state":null}],"chimes":[],"devices":[]}],"amazonKeyLocks":[]}

@Kaiserben
Copy link

All looks ok there and it streams fine. I'll search other issues for snapshot problems, but if you know of anything please let me know.

here is a possible solution for your snapshots issues : #1124 (comment)

@townsen
Copy link

townsen commented Jan 7, 2023

here is a possible solution for your snapshots issues : #1124 (comment)

Thanks @Kaiserben, I downgraded to node 16.19.0 but that made no difference to me, the 15 second delay was still there and the log messages were identical. It must be the fact that I've got a battery one running wired on 24v (it was the cheapest doorbell!). Seems I need to wait for @dgreif to update the devices and perhaps omit the snapshot on the notification for my type of device.

@surreyfull
Copy link

Hello, should this issue be closed? I have the same problem. Since recent updates Ring Video 4 Doorbell and Ring Pro floodlight do not give any motion notifications or motion tigger in HomeKit even though there is motion.
Ringing the doorbell also no longer chimes on any of the HomePods. Everything works fine in the Ring App.
Any solution to this?
thanks

@dgreif
Copy link
Owner

dgreif commented Jun 2, 2023

@surreyfull See #1218

townsen added a commit to townsen/ring that referenced this issue Aug 2, 2023
* The low cost wired Ring doorbell cannot take snapshots whilst recording
  which leads to a ~15sec delay in the HomeKit notifications. This patch
  bypasses the snapshot load for these devices only.
  See issue dgreif#933.
@oliverjane305
Copy link

oliverjane305 commented Aug 29, 2023

Try restarting your HomePods and any HomeKit hubs you have. This can sometimes help refresh the connections and resolve communication issues.

@Pskyrunner
Copy link

I don’t think this issue should be closed. I still have the Same problem. Whenever i delete the device at the Ring APP and refresh the token, it works only for a few days.

All Bridges (HomePod, AppleTV) are having the newest Software.

My Router (FritzBox 7590) is up to Date.

And I‘m subscribing ring

i realy don‘t know, why it only works a few days.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests