Giter Club home page Giter Club logo

Comments (58)

dgreif avatar dgreif commented on June 4, 2024 35

image

It's happening!! I successfully got a live stream all the way into the Home app 🎉 🚀 ✨. I have a lot of clean up and testing to do before it's released, but the big thing is that I have all the base functionality working. Thank you all for you patience and support while I took a deep dive into SIP/RTP. I should have a release out by the weekend.

@bugs181 I am currently going through the Ring servers for SIP. It may be possible to use SIP directly with the camera, but I haven't looked into that at all. I might give it a try in the coming weeks but can't make any promises. For now I am focused on just getting the live stream to work period.

from ring.

dgreif avatar dgreif commented on June 4, 2024 9

The long wait is over...v4.3.0 has the first working version of live streams 📹. I put a ton of work into this over the last week and what I have is functional, but still needs some refinement. I have tested it with Doorbell Pro and Floodlight Cam, but would love feedback on how it is working with other cameras (particularly cameras with batteries). As for bugs, I'll start a list 😄

  • No sound - I may be able to get sound working, but it comes down to what codecs are supported by Ring and HomeKit. Need more time to play around and find the right configuration (if there is one).
  • Video stops after ~30 seconds - I have an idea of how Ring is doing keep-alives, but the SIP library I am using doesn't currently support it. I'll find a way to get past this soon.
  • Playback quality - My video playback is a little choppy and I have great internet/wifi. I think there are a number of tweaks that I can make to the video stream to make it flow better.
  • EADDRINUSE error crashing homebridge - This is a race condition that I've seen happen when switching between cameras quickly. It has to do with how I am selecting port numbers and shouldn't be hard to solve.

I know it's not perfect, but I wanted to get something released for all of you who have been waiting so long! Hope you all enjoy 🙇. I will be radio silent for a while as I catch up on sleep 💤

from ring.

dgreif avatar dgreif commented on June 4, 2024 8

@omerdn1 I made some really good progress today! I am successfully negotiating the SIP setup at this point (pro tip, Ring requires User-Agent be set to Device or Blink 3.2.0 (Windows). Otherwise you get a 480 Temporarily Unavailable response no matter what other config you have in your sip invite).

I've moved on to actually setting up the RTP stream between the Ring servers and homebridge. I think I'm really starting to understand how they want it set up, but unfortunately the stream is immediately stopped by homekit after I set it up. Need to do some deep debugging in the HAP node code, but I am out of time today. Will probably pick up where I left off next week. Have a great weekend everyone!

from ring.

malmentm avatar malmentm commented on June 4, 2024 3

Would be nice if it’s possible to use the snapshot as a stream or something to avoid the error messages

from ring.

dgreif avatar dgreif commented on June 4, 2024 3

@omerdn1 for SSL MITM, I had to root an android device, install XPOSED and install the SSL Unpinning 2.0 module. Then you can install the custom certs from a mitm proxy like charles and it will be accepted by the Ring app. I had some really odd behavior between the unpinning module and the Ring app where the app knew something was wrong. I had to restart the tablet, then enable ssl unpinning on the Ring app (the module only lets you unpin one app at a time), then proxy through the mitm server (or something along those lines). Otherwise the ring app would go into a spiral where it kept redirecting to the login page endlessly. Let me know if you have any questions about the setup (as long as it isn't related to installing any of those things, it's a pain in the 🦋but google will get you through it).

If you want to avoid setting up all of that, here are some links to others who have already done some of the reverse engineering for us 😄:
https://web.archive.org/web/20180403003637/http://www.kidder.io/2017/07/04/ring-doorbell-api/
https://dojo.bullguard.com/dojo-by-bullguard/blog/ring/
https://github.com/skidder/skidder.github.io/blob/master/_posts/2017-07-04-ring-doorbell-api.md
tchellomello/python-ring-doorbell#23 (comment)
tchellomello/python-ring-doorbell#23 (comment)

As for the sip setup, I can try to clean up what I have and push a branch up tomorrow. I'm not sure if I will have much time to work on it again until next week unfortunately.

from ring.

omerdn1 avatar omerdn1 commented on June 4, 2024 2

@dgreif I'd like to join in on this endeavour. can you share your Ring app SSL interception set up?
a while back I tried to intercept the SSL traffic using Charles proxy with their SSL certificate but after a short while Ring seemed to have blocked any custom certificate, not letting me perform any request to the API.

anyways, getting into what has to be done - when I was investigating the possibility of getting access to the live view I came to realize that the Ring uses SIP video initiated from the doorbell itself, so I would imagine that in order to intercept it you'd have to host your own DNS server that redirects the domain name to a server that you control, that answers the SIP call and answers correctly with their own proprietary SIP extensions to keep the call running.
you said you were able to pick up some of the audio using an SIP client, which is interesting so maybe there's a way around this.

I'd like to jump back into this as this is a very important feature for my use-case. we'll have more relevant insights once we start tackling it.
let's combine our efforts, this is a tough one..

it's sad that Ring's business model is all about locking in the user to their limited and closed system.. up until now they've been seeing projects like yours as a threat instead of seeing them as a proof that many of their customers are interested in more open-ended functionality. I hope they change their attitude about this seeing it is and will always be a cat and mouse game and they can only benefit by opening things up in a rational and secure way.

from ring.

dgreif avatar dgreif commented on June 4, 2024 2

@benfysh I'll try to get a fix out for the EADDRINUSE error in the next few days. I know what the problem is but it was happening rarely for me so I didn't tackle it yet.

@schmupu live streams are mainly set up for use with the homebridge-ring plugin, but they can theoretically be used with any RTP client. You can use camera.createSipSession() and pass it details on where the the RTP data should flow. I don't have it documented, but there are TypeScript types on the method that should give you and idea of what you need to pass to it. I haven't tested without a Ring subscription, but I do think it is required to get the SIP/RTP connections.

@BradMcGonigle donations are welcome 😄. There is a Sponsor button at the top of the GitHub page which links to my paypal. As for battery cameras, @malmentm said his Doorview was working so I see no reason why other battery cameras wouldn't work as well.

from ring.

dgreif avatar dgreif commented on June 4, 2024 2

@benfysh v4.3.1 has a lot better logic for choosing ports. Shouldn't have any further issues with EADDRINUSE. Let me know how it works for you!

@Klathmon I really appreciate all the info! The main use case that we are all using it for is live video in HomeKit. These are typically short-lived sessions where the user is either following up on a motion/ding notification, or just checking in on the camera. I don't think people will leave the streams connected 24/7, but I can't speak for everyone. The main reason I want keep-alives is so that I can view the stream for a couple minutes if needed, rather than it cutting out after ~30s. I'll mess around with a possible solution but if it doesn't work then users should be ok with 30 seconds at a time. From what I have seen on the python thread, it seems like Home Assistant might be capable of other big things like video storage, where 24/7 would be much more useful.

As for security, I am actually more impressed than I thought I would be. The SIP messages can be sent with TLS and the RTP packages are all being sent using SRTP which encrypts the main body of each UDP packet. Interesting fact, HomeKit actually won't work with RTP, only SRTP 🏆 🔒

from ring.

dgreif avatar dgreif commented on June 4, 2024 1

@d0n4v4nb3ck3r that message is definitely from the lack of live feed. On my iPhone, force touching into the notification only shows the snapshot without trying to show the live feed. Not sure when it decides one way or another. One thing I did to minimize that "no response" notification is to not return a live feed, which usually gives you ~20 seconds while it waits for the feed before it shows that message. The best solution would be to get live feed, but I'm not sure when that will happen. I could look into using the image as a live feed, but I probably won't focus on it any time soon as the snapshots seem to fulfill a huge part of the functionality for the plugin. Happy to take PRs if someone else has time to look into either approach

from ring.

ZoneMR avatar ZoneMR commented on June 4, 2024 1

Ideally we could have a low-FPS steam be generated by polling for snapshots...

from ring.

ifeign avatar ifeign commented on June 4, 2024 1

from ring.

mrose17 avatar mrose17 commented on June 4, 2024 1

Wonderful!!!

from ring.

ifeign avatar ifeign commented on June 4, 2024 1

from ring.

malmentm avatar malmentm commented on June 4, 2024 1

Seems to work with my Doorview Camera which is battery powered. Image quality is great. Running on a Raspberry Pi 3b

from ring.

EarthRise626 avatar EarthRise626 commented on June 4, 2024 1

Working perfectly for me now on all devices once I removed the cameras and reconfigured them in HomeKit.

from ring.

jahnkenneth avatar jahnkenneth commented on June 4, 2024 1

After a restart of all my devices (Iphones, iPads, HomePods snd ATV, it works! 😀
A donation is coming your way! Great work!

from ring.

Jborn4christ avatar Jborn4christ commented on June 4, 2024 1

Incredible work!! Working for my floodlight wired ring and my ring doorbell cam. Had to remove accessories a couple times and re-add but all si working. Sent you a few bucks. Really appreciate the work!

from ring.

wondergit113 avatar wondergit113 commented on June 4, 2024 1

Deleted my previous comments—a reboot of my iMac and everything works great. Local and remote.

Ring Doorbell 2 and Spotlight Cams work great!!!

from ring.

ifeign avatar ifeign commented on June 4, 2024

It seems that every time a new preview is loaded, homebridge crashes then immediately reboots. This happens as soon as I click on the thumbnail.

[6/22/2019, 12:21:01 AM] TypeError: Cannot read property 'type' of undefined
    at StreamController._generateSetupResponse (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/StreamController.js:658:20)
    at /usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/StreamController.js:541:12
    at CameraSource.prepareStream (/homebridge/node_modules/homebridge-ring-alarm/homebridge/camera-source.js:71:9)
    at StreamController._handleSetupWrite (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/StreamController.js:540:23)
    at Characteristic.SetupEndpoints.<anonymous> (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/StreamController.js:271:12)
    at Characteristic.SetupEndpoints.emit (events.js:189:13)
    at Characteristic.SetupEndpoints.Characteristic.setValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:321:10)
    at Accessory.<anonymous> (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:882:22)
    at Array.forEach (<anonymous>)
    at Accessory._handleSetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:822:8)
[6/22/2019, 12:21:01 AM] Got SIGTERM, shutting down Homebridge...
[6/22/2019, 12:21:11 AM] Loaded config.json with 0 accessories and 6 platforms.
[6/22/2019, 12:21:11 AM] ---

from ring.

ifeign avatar ifeign commented on June 4, 2024

I also noticed that the camera needs to be added manually from the code shown in the Homebridge log. You should probably update the readme to include this. If I have time later today I can create a pull request.

from ring.

dgreif avatar dgreif commented on June 4, 2024

I already wrote about the setup in the readme: https://github.com/dgreif/ring-alarm/tree/master/homebridge#camera-setup. Let me know if you think it needs more detail.

As for the error, you are correct that it's bombing out. @smockle has already tracked it down, see #37 for further discussion.

from ring.

ifeign avatar ifeign commented on June 4, 2024

from ring.

donavanbecker avatar donavanbecker commented on June 4, 2024

@dgreif So when using the snapshot feature, I am able to see the small snapshot on the notification but when force touching it, it says camera is not responding. Is that because live feed isn't implemented yet or is that an error I'm experience? if it is because live feed isn't implemented, is there anyway to use that snapshot to show as the camera until live feed is implemented so that you can see notifications at a larger view when force touching?

from ring.

wondergit113 avatar wondergit113 commented on June 4, 2024

from ring.

dgreif avatar dgreif commented on June 4, 2024

@jamesg311 make sure that the camera and motion detector are in the same "room" in the Home app. I don't think it's possible to separate them since they are a single homebridge device, but that would be one possible cause. What value do you see in the Model section for the camera in homebridge?

from ring.

malmentm avatar malmentm commented on June 4, 2024

I have noticed that camera snapshot does not show on the Apple Watch

from ring.

ifeign avatar ifeign commented on June 4, 2024

from ring.

malmentm avatar malmentm commented on June 4, 2024

That worked :)

from ring.

dgreif avatar dgreif commented on June 4, 2024

See #63 for discussion on snapshot stream

from ring.

omerdn1 avatar omerdn1 commented on June 4, 2024

@dgreif that's awesome news! please push your code to a new branch so I can play with it as well.

from ring.

dgreif avatar dgreif commented on June 4, 2024

@omerdn1 I pushed up my current work to the live-stream branch. You can pull the branch, npm i, and then npm run test-homebridge to start up the plugin on your dev machine. You need to have homebridge config set up in ~/.homebridge/config.json with your Ring platform config in place.

As for the code, it is negotiating the sip connection just fine now, and I added srtp since it appears that is a hard requirement by homekit. It gets through the prepareStream method just fine, and then gets into handleStreamRequest with a start request. The current problem, I think, is that HomeKit is trying to use the AAC-eld audio codec. Ring appears to only support PCMU. I have been trying very hard to avoid using ffmpeg to convert the stream, but I think we might have to 😞.

from ring.

bugs181 avatar bugs181 commented on June 4, 2024

@dgreif excellent work! Anxiously following along on the progress.

Correct me if I'm wrong, it sounds like you're using Homebridge to set up a SIP server and then proxying that to Ring's servers. Because I have such a low bandwidth internet connection, I'm hoping this will be the solution to avoid using Ring's servers et all. The recordings are often out of sync, very choppy and generally unintelligible. If I could use Homebridge as a direct connection to the doorbell locally, then the recordings could be saved to my NAS with near-perfect quality.

Edit: Just re-read some of the comments, it actually looks like you're just writing a SIP client for Homebridge to connect to Ring's servers. Bummer.

Edit 2: Anyone willing to pool funds toward a SIP proxy implementation that can MITM the video and store that locally? Personally willing to put $200 toward this.

from ring.

BradMcGonigle avatar BradMcGonigle commented on June 4, 2024

It's happening!! I successfully got a live stream all the way into the Home app 🎉 🚀 ✨. I have a lot of clean up and testing to do before it's released, but the big thing is that I have all the base functionality working. Thank you all for you patience and support while I took a deep dive into SIP/RTP. I should have a release out by the weekend.

Wow. This is HUGE news and will be a real game changer for HomeKit Ring users. I've love to help test it out if you need any help. I currently only have a Doorbell Pro but have debated buying some stick-up cams (but was waiting for HomeKit support).

from ring.

malmentm avatar malmentm commented on June 4, 2024

Just Amazing!

from ring.

jfbeaumont avatar jfbeaumont commented on June 4, 2024

Congratulations on your progress @dgreif, I own a lpd_v2 and 2 hp_cam_v1. I'm also willing to help out with testing.

from ring.

benfysh avatar benfysh commented on June 4, 2024

Hi, firstly thanks for the plugin and even snapshots was way more than I ever thought we would get in HomeKit!

I am getting the EADDRINUSE issue mentioned above (snippet from the logs below) however that only seems to be happening every time with my floodlight cameras (all 3) and for my Doorbell Pro I just get "Camera not responding" after around 10 seconds. No error shows in the logs.

[2019-7-26 09:09:29] [Ring] Snapshot Requested for Back Door [2019-7-26 09:09:35] [Ring] Preparing Live Stream for Rear [2019-7-26 09:09:35] Error: bind EADDRINUSE 0.0.0.0:10000 at _handle.lookup (dgram.js:266:18) at _combinedTickCallback (internal/process/next_tick.js:142:11) at process._tickCallback (internal/process/next_tick.js:181:9) [2019-7-26 09:09:35] Error: bind EADDRINUSE 0.0.0.0:10001 at _handle.lookup (dgram.js:266:18) at _combinedTickCallback (internal/process/next_tick.js:142:11) at Immediate._tickCallback [as _onImmediate] (internal/process/next_tick.js:181:9) at runCallback (timers.js:810:20) at tryOnImmediate (timers.js:768:5) at processImmediate [as _immediateCallback] (timers.js:745:5) [2019-7-26 09:09:35] Error: bind EADDRINUSE 0.0.0.0:10002 at _handle.lookup (dgram.js:266:18) at _combinedTickCallback (internal/process/next_tick.js:142:11) at process._tickCallback (internal/process/next_tick.js:181:9) [2019-7-26 09:09:35] Got SIGTERM, shutting down Homebridge... [2019-7-26 09:09:35] Error: bind EADDRINUSE 0.0.0.0:10003 at _handle.lookup (dgram.js:266:18) at _combinedTickCallback (internal/process/next_tick.js:142:11) at process._tickCallback (internal/process/next_tick.js:181:9)

from ring.

schmupu avatar schmupu commented on June 4, 2024

How I get the Livestream and in which format? Do I need the ring cloud for this feature?

from ring.

EarthRise626 avatar EarthRise626 commented on June 4, 2024

I am on iOS 13 on both my iPad and iPhone. The streaming works perfectly in the Home app on my iPad, but times out to “Camera Not Responding” every time I request the live feed on my iPhone. Strange!

from ring.

BradMcGonigle avatar BradMcGonigle commented on June 4, 2024

I had to remove the camera from HomeKit and re-add it before it could get the live feed working. Update: I should also mention that I'm on iOS 13 Beta 4

Once I did that, it’s working great for me running homebridge in my raspberry pi 3b+.

Amazing work as always. I’d love to donate something for you work on this if you are accepting anything.

from ring.

BradMcGonigle avatar BradMcGonigle commented on June 4, 2024

If anyone has a wired and/or battery stickup cam, I'd love to know if they are working as well as the Doorbell cams are working now.

I'll probably wait for Amazon to put them on sale again but I'd like to start swapping out some of my Wyzecams.

from ring.

benfysh avatar benfysh commented on June 4, 2024

Excellent thanks. I’ll keep an eye out for it let me know if need any help testing seems to happen pretty consistently for me. I assume it’s because I have a few devices.

from ring.

Klathmon avatar Klathmon commented on June 4, 2024

@dgreif I'm coming from the python-ring-doorbell library you pinged, but a few things I learned while looking into this a while back:

  • ring has previously banned my client from connecting to the SIP streams while I was mucking with it. They seemed to be doing some kind of useragent ban or something else because the app and other "official" stuff still worked fine, just any unofficial stuff would stop working after I streamed a bunch of time with it. So be careful here, and use your best judgement. If you are trying to get 24/7 live streaming, it's just not going to work as long as you are touching Ring's servers, they'll shut it down.

  • the "keep alive" is a proprietary and undocumented SIP extension they are using, and you may need to dive really deep to get this one. This is where I gave up, but if you're looking for off-the-shelf SIP clients or libraries that will support it, I couldn't find any nor could I find any SIP or RTP standard docs that matched what they were doing.

  • All of this is sent over the internet with no encryption. The connection from the doorbell/camera to Ring servers seems to be encrypted (I never experimented with trying to get the ring to connect to a "fake" server, so that might be an avenue to explore), and the apps I looked at (windows app and the android app) don't use this SIP system for communicating but use something else (again, with encryption and key pinning making it a real pain in the ass to inspect, but kudos for the increased security from ring!). But for whatever reason the SIP url returned from their API is unencrypted, and it doesn't support any kind of "standard" SIP or RTP encryption/security. So just keep that in mind that any video and audio sent over this will be sent in the clear over the internet from Ring's servers to your endpoint.

Good luck!

from ring.

EarthRise626 avatar EarthRise626 commented on June 4, 2024

@dgreif Installed 4.3.1. I am now receiving the following when trying to start a live stream:

[7/26/2019, 8:09:26 PM] [Ring] Failed to prepare stream for Backyard Floodlight
[7/26/2019, 8:09:26 PM] [Ring] Error: Couldn't find your IP
at socketQuery.then (/usr/local/lib/node_modules/homebridge-ring/node_modules/public-ip/index.js:50:10)

from ring.

benfysh avatar benfysh commented on June 4, 2024

@dgreif I installed 4.3.1 and it seems to have resolved the EADDRINUSE Issue. However, I am getting the same error as @EarthRise626 every time I request a live view now.

Jul 27 12:24:46 raspberrypi homebridge[21997]: [201�9-7-27 12:24:46] [Ring] Preparing Live Stream for F�ront Door Jul 27 12:24:46 raspberrypi homebridge[21997]: [201�9-7-27 12:24:46] [Ring] Failed to prepare stream fo�r Front Door Jul 27 12:24:46 raspberrypi homebridge[21997]: [201�9-7-27 12:24:46] [Ring] Error: Couldn't find your I�P Jul 27 12:24:46 raspberrypi homebridge[21997]: �at socketQuery.then (/usr/lib/node_modules/homebrid�ge-ring/node_modules/public-ip/index.js:50:10) Jul 27 12:24:46 raspberrypi homebridge[21997]: �at <anonymous> Jul 27 12:25:00 raspberrypi homebridge[21997]: [201�9-7-27 12:25:00] [Ring] Snapshot Requested for Fron�t Door

from ring.

dgreif avatar dgreif commented on June 4, 2024

@EarthRise626 @benfysh try v4.3.2. In 4.3.1 I changed the way I was retrieving your public ip address to a much faster approach (public-ip package), but apparently it does not work for everyone. In 4.3.2 I added my original approach as a fallback if public-ip fails.

from ring.

benfysh avatar benfysh commented on June 4, 2024

@dgreif on 4.4.0 I still seem to be having IP issues albeit different ones

27 18:47:07 raspberrypi homebridge[1040]: [2019-7-27 18:47:07] [Ring] Preparing Live Stream for Rear Jul 27 18:48:10 raspberrypi homebridge[1040]: [2019-7-27 18:48:10] [Ring] Failed to prepare stream for Rear Jul 27 18:48:10 raspberrypi homebridge[1040]: [2019-7-27 18:48:10] [Ring] Error: Failed to retrieve public ip address Jul 27 18:48:10 raspberrypi homebridge[1040]: at Object.<anonymous> (/usr/lib/node_modules/homebridge-ring/lib/homebridge/rtp-utils.js:36�:23) Jul 27 18:48:10 raspberrypi homebridge[1040]: at Generator.throw (<anonymous>) Jul 27 18:48:10 raspberrypi homebridge[1040]: at rejected (/usr/lib/node_modules/homebridge-ring/lib/homebridge/rtp-utils.js:5:65) Jul 27 18:48:10 raspberrypi homebridge[1040]: at <anonymous> Jul 27 18:48:10 raspberrypi homebridge[1040]: at process._tickCallback (internal/process/next_tick.js:189:7)

from ring.

EarthRise626 avatar EarthRise626 commented on June 4, 2024

@dgreif 4.4.0 resolved the issue for me! Live streams are now working great and pull up very quickly.

from ring.

Frederik840 avatar Frederik840 commented on June 4, 2024

@dgreif thanx for the incredible work! However i’m Experiencing the issue that the camera loads in about 10 seconds and then immediately prompts non-responding. Same on iPad and iPhone on iOS 12 and 13. Homebridge log is showing: [2019-7-28 14:09:02] [Ring] Preparing Live Stream for Voordeur
[2019-7-28 14:09:03] [Ring] Waiting for stream data from Voordeur
[2019-7-28 14:09:13] [Ring] Stopped Live Stream for Voordeur

from ring.

Jborn4christ avatar Jborn4christ commented on June 4, 2024

from ring.

Frederik840 avatar Frederik840 commented on June 4, 2024

Try removing the cameras, closing homebridge, relaunching, and then re-add them. That worked for me after I upgraded the plugin.

No luck unfortunately. Also rebooted the homekit bridges and reinstalled homebridge. Any other tricks?

from ring.

dgreif avatar dgreif commented on June 4, 2024

After lots of feedback and troubleshooting in this thread and #74, I decided to throw together a wiki page to cover everything we know for camera troubleshooting: https://github.com/dgreif/ring/wiki/Camera-Troubleshooting. If you are still having issue, please follow that guide.

@benfysh if you are still receiving the Failed to retrieve public ip address error, please open a new GitHub issue. I'm currently using two different approaches to fetch your external IP and I'm really surprised neither works in your case.

I'm closing out this issue as Live Streams are now officially launched and working 🎉. Anything remaining is either an enhancement or bug that can be addressed in a separate issue. Thanks for all the support everyone!!

from ring.

taherkaraki avatar taherkaraki commented on June 4, 2024

Thank you @dgreif for the great work.
I'd like to note that Live streams never worked for me even though I restart every single component, subscription is active, using the latest homebridge-ring 4.5.2 on a Macbook Pro, and snapshots are working fine.

I am getting the following stdout:

[Ring] Preparing Live Stream for Front Door
[Ring] Waiting for stream data from Front Door
[Ring] Stopped Live Stream for Front Door

And since we only get private IPs from the ISP, I thought it is worth mentioning here to get some feedback on why you are retrieving the public IP address to understand if it is related.

from ring.

dgreif avatar dgreif commented on June 4, 2024

@taherkaraki sorry you are having issue. Based on your logs, it looks like the SIP session is negotiated correctly, but the video stream data (RTP over UDP) is not able to make it to your homebridge server. This is definitely network related and I haven't found a way to crack it for those who are still having issues. During SIP negotiation, I have to tell Ring where to send the RTP. To do this, I fetch your public/external IP address so that I can tell Ring where you are visible from the outside world. I use UDP "hole punching" to open the port, which is a fancy way of saying I send a UDP packet out on that port so that NAT opens the port for traffic to flow in. It sounds like you know a little more about your IP setup. Can you elaborate, and possibly suggest what I need to change to get this working in your environment?

from ring.

taherkaraki avatar taherkaraki commented on June 4, 2024

@dgreif Thank you for your response. I would assume that since we get a private IP from the ISP, we cannot configure/allow inbound ports at the router/firewall level as the packets would hit the ISP and get dropped there. However, one of the suggestions is to increase the SIP KEEP-ALIVE to around one minute as this would trick the server to respond to the same open session, however I'm not sure if this will work or end up failing as SDP requires another session after the initial handshake.

Therefore, the only thing I imagine would work in such a scenario is to fallback to a relay server. I see you've used google's STUN server to detect public IP address. I guess you can also use a TURN (Traversal Using Relays around NAT) server. Numb (https://numb.viagenie.ca/) is a free STUN/TURN server if you don't mind relaying your camera feeds through a 3rd party.

Another thing I might think of is IPv6. Although I have very very basic knowledge of IPv6, I know that many ISPs provide you with a reachable IPv6 address as opposed to the IPv4 addresses which are depleted. So I'm thinking if maybe we can get our public IPv6 from the STUN server, and SIP INVITE to have it call our IPv6 address, then we might have something?

from ring.

dgreif avatar dgreif commented on June 4, 2024

@taherkaraki NAT should allow the traffic through to your private IP. Give v5.0.0 a try and let me know if live streams work for you now. I added a module that communicates with your router to open the needed port. There shouldn't be a need for a TURN server since we know the remote address/port, and I'm only using STUN as a fallback method to get your public IP.

from ring.

taherkaraki avatar taherkaraki commented on June 4, 2024

@dgreif Same thing.
[8/1/2019, 9:26:21 PM] [Ring] Preparing Live Stream for Front Door
[8/1/2019, 9:26:31 PM] [Ring] Waiting for stream data from Front Door
[8/1/2019, 9:26:32 PM] [Ring] Stopped Live Stream for Front Door

Debug mode doesn't reveal much too:

EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /characteristics?id=1.22,1.15 +1s
HAPServer [A6:A6:09:51:E5:29] HAP Request: GET /characteristics?id=1.22,1.15 +0ms
Accessory [Front Door] Getting value for Characteristic "Streaming Status" +0ms
Accessory [Front Door] Got Characteristic "Streaming Status" value: AQEA +1ms
Accessory [Front Door] Getting value for Characteristic "Streaming Status" +0ms
Accessory [Front Door] Got Characteristic "Streaming Status" value: AQEA +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +1ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /characteristics +36ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: PUT /characteristics +0ms
Accessory [Front Door] Processing characteristic set: [{"aid":1,"iid":23,"value":"ARD1/ANl4NJFfZVzG+qLGn4kAxkBAQACDDEwLjExOS4xLjIxNQMCetMEAsPZBCUCEF33cK2UPxG05AUZu9MYIsUDDsu521nw/xKpGAjPpvj9AQEABSUCEBuhYr1JBOFxEWG6VmB68gQDDpWnWICRgdCyYmVTpb87AQEA"}] +0ms
Accessory [Front Door] Setting Characteristic "Setup Endpoints" to value ARD1/ANl4NJFfZVzG+qLGn4kAxkBAQACDDEwLjExOS4xLjIxNQMCetMEAsPZBCUCEF33cK2UPxG05AUZu9MYIsUDDsu521nw/xKpGAjPpvj9AQEABSUCEBuhYr1JBOFxEWG6VmB68gQDDpWnWICRgdCyYmVTpb87AQEA +0ms
StreamController
StreamController Session: <Buffer f5 fc 03 65 e0 d2 45 7d 95 73 1b ea 8b 1a 7e 24>
ControllerAddress: 10.119.1.215
VideoPort: 54138
AudioPort: 55747
Video Crypto: 0
Video Master Key: <Buffer 5d f7 70 ad 94 3f 11 b4 e4 05 19 bb d3 18 22 c5>
Video Master Salt: <Buffer cb b9 db 59 f0 ff 12 a9 18 08 cf a6 f8 fd>
Audio Crypto: 0
Audio Master Key: <Buffer 1b a1 62 bd 49 04 e1 71 11 61 ba 56 60 7a f2 04>
Audio Master Salt: <Buffer 95 a7 58 80 91 81 d0 b2 62 65 53 a5 bf 3b> +1ms
[8/1/2019, 8:56:08 PM] [Ring] Preparing Live Stream for Front Door
ring Making request: {
ring "method": "POST",
ring "url": "https://api.ring.com/clients_api/doorbots/806918/vod",
ring "data": "",
ring "headers": {
ring "content-type": "application/x-www-form-urlencoded",
ring "authorization": "Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ",
ring "hardware_id": "5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30"
ring }
ring } +85ms
follow-redirects options {
protocol: 'https:',
maxRedirects: 21,
maxBodyLength: 10485760,
path: '/clients_api/doorbots/806918/vod',
method: 'POST',
headers: {
Accept: 'application/json, text/plain, /',
'Content-Type': 'application/x-www-form-urlencoded',
authorization: 'Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ',
hardware_id: '5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30',
'User-Agent': 'axios/0.19.0'
},
agent: undefined,
auth: undefined,
hostname: 'api.ring.com',
port: null,
nativeProtocols: {
'http:': {
_connectionListener: [Function: connectionListener],
METHODS: [Array],
STATUS_CODES: [Object],
Agent: [Function],
ClientRequest: [Function: ClientRequest],
IncomingMessage: [Function: IncomingMessage],
OutgoingMessage: [Function: OutgoingMessage],
Server: [Function: Server],
ServerResponse: [Function: ServerResponse],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request],
maxHeaderSize: [Getter],
globalAgent: [Getter/Setter]
},
'https:': {
Agent: [Function: Agent],
globalAgent: [Agent],
Server: [Function: Server],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request]
}
}
} +85ms
ring Making request: {
ring "method": "GET",
ring "url": "https://api.ring.com/clients_api/dings/active",
ring "data": "",
ring "headers": {
ring "content-type": "application/x-www-form-urlencoded",
ring "authorization": "Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ",
ring "hardware_id": "5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30"
ring }
ring } +812ms
follow-redirects options {
protocol: 'https:',
maxRedirects: 21,
maxBodyLength: 10485760,
path: '/clients_api/dings/active',
method: 'GET',
headers: {
Accept: 'application/json, text/plain, /',
authorization: 'Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ',
hardware_id: '5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.19.0'
},
agent: undefined,
auth: undefined,
hostname: 'api.ring.com',
port: null,
nativeProtocols: {
'http:': {
_connectionListener: [Function: connectionListener],
METHODS: [Array],
STATUS_CODES: [Object],
Agent: [Function],
ClientRequest: [Function: ClientRequest],
IncomingMessage: [Function: IncomingMessage],
OutgoingMessage: [Function: OutgoingMessage],
Server: [Function: Server],
ServerResponse: [Function: ServerResponse],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request],
maxHeaderSize: [Getter],
globalAgent: [Getter/Setter]
},
'https:': {
Agent: [Function: Agent],
globalAgent: [Agent],
Server: [Function: Server],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request]
}
}
} +812ms
socket.io:client writing packet {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} +5s
socket.io-parser encoding packet {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} +5s
socket.io-parser encoded {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} as 2/status,["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}] +1ms
engine:socket sending packet "message" (2/status,["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}]) +5s
engine:socket flushing buffer to transport +0ms
engine:ws writing "42/status,["system-status",{"memory":{"total":"8.00","used":"7.07","free":"0.93"},"cpu":"37.45","uptime":{"delta":572,"days":0,"hours":1,"minutes":9},"cputemp":null}]" +5s
[8/1/2019, 8:56:11 PM] [Ring] Waiting for stream data from Front Door
ring Making request: {
ring "method": "GET",
ring "url": "https://api.ring.com/clients_api/dings/active",
ring "data": "",
ring "headers": {
ring "content-type": "application/x-www-form-urlencoded",
ring "authorization": "Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ",
ring "hardware_id": "5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30"
ring }
ring } +3s
follow-redirects options {
protocol: 'https:',
maxRedirects: 21,
maxBodyLength: 10485760,
path: '/clients_api/dings/active',
method: 'GET',
headers: {
Accept: 'application/json, text/plain, /',
authorization: 'Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ',
hardware_id: '5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.19.0'
},
agent: undefined,
auth: undefined,
hostname: 'api.ring.com',
port: null,
nativeProtocols: {
'http:': {
_connectionListener: [Function: connectionListener],
METHODS: [Array],
STATUS_CODES: [Object],
Agent: [Function],
ClientRequest: [Function: ClientRequest],
IncomingMessage: [Function: IncomingMessage],
OutgoingMessage: [Function: OutgoingMessage],
Server: [Function: Server],
ServerResponse: [Function: ServerResponse],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request],
maxHeaderSize: [Getter],
globalAgent: [Getter/Setter]
},
'https:': {
Agent: [Function: Agent],
globalAgent: [Agent],
Server: [Function: Server],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request]
}
}
} +3s
ring Making request: {
ring "method": "GET",
ring "url": "https://api.ring.com/clients_api/dings/active",
ring "data": "",
ring "headers": {
ring "content-type": "application/x-www-form-urlencoded",
ring "authorization": "Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ",
ring "hardware_id": "5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30"
ring }
ring } +3s
follow-redirects options {
protocol: 'https:',
maxRedirects: 21,
maxBodyLength: 10485760,
path: '/clients_api/dings/active',
method: 'GET',
headers: {
Accept: 'application/json, text/plain, /',
authorization: 'Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ',
hardware_id: '5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.19.0'
},
agent: undefined,
auth: undefined,
hostname: 'api.ring.com',
port: null,
nativeProtocols: {
'http:': {
_connectionListener: [Function: connectionListener],
METHODS: [Array],
STATUS_CODES: [Object],
Agent: [Function],
ClientRequest: [Function: ClientRequest],
IncomingMessage: [Function: IncomingMessage],
OutgoingMessage: [Function: OutgoingMessage],
Server: [Function: Server],
ServerResponse: [Function: ServerResponse],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request],
maxHeaderSize: [Getter],
globalAgent: [Getter/Setter]
},
'https:': {
Agent: [Function: Agent],
globalAgent: [Agent],
Server: [Function: Server],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request]
}
}
} +3s
EventedHTTPServer [::ffff:127.0.0.1] New connection from client +6s
EventedHTTPServer [::ffff:127.0.0.1] HTTP server listening on port 52085 +0ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP request: / +2ms
HAPServer [CC:22:3D:E3:CE:30] HAP Request: GET / +0ms
HAPServer [CC:22:3D:E3:CE:30] WARNING: Handler for / not implemented +0ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP Response is finished +0ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP connection was closed +0ms
EventedHTTPServer [::ffff:127.0.0.1] HTTP server was closed +1ms
EventedHTTPServer [::ffff:127.0.0.1] Client connection closed +0ms
socket.io:client writing packet {"type":2,"data":["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}],"nsp":"/status"} +5s
socket.io-parser encoding packet {"type":2,"data":["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}],"nsp":"/status"} +5s
socket.io-parser encoded {"type":2,"data":["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}],"nsp":"/status"} as 2/status,["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}] +0ms
engine:socket sending packet "message" (2/status,["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}]) +5s
engine:socket flushing buffer to transport +0ms
engine:ws writing "42/status,["homebridge-status",{"consolePort":8080,"port":51826,"pin":"666-99-666","packageVersion":"4.5.1","status":"up"}]" +5s
socket.io:client writing packet {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} +2ms
socket.io-parser encoding packet {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} +2ms
socket.io-parser encoded {"type":2,"data":["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}],"nsp":"/status"} as 2/status,["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}] +0ms
engine:socket sending packet "message" (2/status,["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}]) +2ms
engine:socket flushing buffer to transport +0ms
engine:ws writing "42/status,["system-status",{"memory":{"total":"8.00","used":"7.08","free":"0.92"},"cpu":"38.45","uptime":{"delta":577,"days":0,"hours":1,"minutes":9},"cputemp":null}]" +2ms
ring Making request: {
ring "method": "GET",
ring "url": "https://api.ring.com/clients_api/dings/active",
ring "data": "",
ring "headers": {
ring "content-type": "application/x-www-form-urlencoded",
ring "authorization": "Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ",
ring "hardware_id": "5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30"
ring }
ring } +4s
follow-redirects options {
protocol: 'https:',
maxRedirects: 21,
maxBodyLength: 10485760,
path: '/clients_api/dings/active',
method: 'GET',
headers: {
Accept: 'application/json, text/plain, /',
authorization: 'Bearer eyJhbGciOiJIUzUxMiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhcHBfaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJjaWQiOiJyaW5nX29mZmljaWFsX2FuZHJvaWQiLCJleHAiOjE1NjQ2ODU3MzMsImhhcmR3YXJlX2lkIjoiNWExYmExYzItYzM0ZS00ZmFmLWI5YjktMzFmODYyYmEzYTMwIiwiaWF0IjoxNTY0NjgyMTMzLCJybmQiOiJpSmd1dmVhaWU3bWh2QSIsInNjb3BlcyI6WyJjbGllbnQiXSwidXNlcl9pZCI6NzI4MTAsInVzZXJuYW1lIjoiaXRhaGVyQG1lLmNvbSJ9.4_btWQeNkaECL_EpRk3X8eHftSrwHj3T_wYY9KB0BotPO5VBzFRFAZ5mSbWQ-iv8kOH0PffcoH5PN52Ft87ATQ',
hardware_id: '5a1ba1c2-c34e-4faf-b9b9-31f862ba3a30',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'axios/0.19.0'
},
agent: undefined,
auth: undefined,
hostname: 'api.ring.com',
port: null,
nativeProtocols: {
'http:': {
_connectionListener: [Function: connectionListener],
METHODS: [Array],
STATUS_CODES: [Object],
Agent: [Function],
ClientRequest: [Function: ClientRequest],
IncomingMessage: [Function: IncomingMessage],
OutgoingMessage: [Function: OutgoingMessage],
Server: [Function: Server],
ServerResponse: [Function: ServerResponse],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request],
maxHeaderSize: [Getter],
globalAgent: [Getter/Setter]
},
'https:': {
Agent: [Function: Agent],
globalAgent: [Agent],
Server: [Function: Server],
createServer: [Function: createServer],
get: [Function: get],
request: [Function: request]
}
}
} +4s
EventedHTTPServer [::ffff:10.119.1.215] Client connection closed +4s
EventedHTTPServer [::ffff:10.119.1.215] HTTP connection was closed +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP server was closed +0ms
EventedHTTPServer [::ffff:10.119.1.215] New connection from client +20ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP server listening on port 52089 +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /pair-verify +2ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: POST /pair-verify +0ms
HAPServer [A6:A6:09:51:E5:29] Pair verify step 1/2 +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +10ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /pair-verify +18ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: POST /pair-verify +0ms
HAPServer [A6:A6:09:51:E5:29] Pair verify step 2/2 +1ms
HAPServer [A6:A6:09:51:E5:29] Client 9BDEAA54-2725-4550-84B9-88296A7BDC36 verification complete +14ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +1ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /accessories +8ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: GET /accessories +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +1ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /characteristics +32ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: PUT /characteristics +0ms
Accessory [Front Door] Processing characteristic set: [{"aid":1,"iid":21,"value":"ARUCAQABEPX8A2Xg0kV9lXMb6osafiQ="}] +0ms
Accessory [Front Door] Setting Characteristic "Selected RTP Stream Configuration" to value ARUCAQABEPX8A2Xg0kV9lXMb6osafiQ= +0ms
StreamController Write SelectedStreamConfiguration +1ms
[8/1/2019, 8:56:19 PM] [Ring] Stopped Live Stream for Front Door
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +5ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /characteristics +56ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: PUT /characteristics +0ms
Accessory [Front Door] Processing characteristic set: [{"aid":1,"iid":26,"ev":true},{"aid":1,"iid":29,"ev":true},{"aid":1,"iid":32,"ev":true},{"aid":1,"iid":35,"ev":true},{"aid":1,"iid":37,"ev":true},{"aid":1,"iid":36,"ev":true}] +0ms
Accessory [Front Door] Registering Characteristic "Motion Detected" for events +0ms
Accessory [Front Door] Registering Characteristic "Programmable Switch Event" for events +0ms
Accessory [Front Door] Registering Characteristic "Programmable Switch Event" for events +0ms
Accessory [Front Door] Registering Characteristic "Battery Level" for events +0ms
Accessory [Front Door] Registering Characteristic "Status Low Battery" for events +0ms
Accessory [Front Door] Registering Characteristic "Charging State" for events +1ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP request: /characteristics +7ms
HAPServer [A6:A6:09:51:E5:29] HAP Request: PUT /characteristics +1ms
Accessory [Front Door] Processing characteristic set: [{"aid":1,"iid":26,"ev":true},{"aid":1,"iid":29,"ev":true},{"aid":1,"iid":32,"ev":true},{"aid":1,"iid":35,"ev":true},{"aid":1,"iid":37,"ev":true},{"aid":1,"iid":36,"ev":true}] +0ms
Accessory [Front Door] Registering Characteristic "Motion Detected" for events +0ms
Accessory [Front Door] Registering Characteristic "Programmable Switch Event" for events +0ms
Accessory [Front Door] Registering Characteristic "Programmable Switch Event" for events +2ms
Accessory [Front Door] Registering Characteristic "Battery Level" for events +0ms
Accessory [Front Door] Registering Characteristic "Status Low Battery" for events +0ms
Accessory [Front Door] Registering Characteristic "Charging State" for events +0ms
EventedHTTPServer [::ffff:10.119.1.215] HTTP Response is finished +1ms

from ring.

taherkaraki avatar taherkaraki commented on June 4, 2024

@dgreif Additionally, sometimes snapshots don't work and in debug it looks like hardware_id was not fetched (due to connectivity issues, expired plan, or whatever...). But it seems like when this happens, session response rate limit reaches and snapshots won't update for some time:

Session hardware_id not found. Creating a new session and trying again. +387ms
Session response rate limited. Waiting to retry for 180 seconds

from ring.

dgreif avatar dgreif commented on June 4, 2024

@taherkaraki can you please open a new issue? I'm going to lock this issue so that we don't get any more live stream issues spammed to everyone. For anyone having issues with live streams, please first go through the Camera Troubleshooting Wiki. If you still have issues, open a new GitHub issue.

from ring.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.