Ring Device integration via MQTT w/ Video Streaming

In general, while I can’t keep people from doing this, I do not recommend attempting to use this addon as a way to avoid paying for services from Ring and I do not provide specific support for use cases attempting to do this as not paying for Ring services is definitely not the intended purpose of this project. I can’t stress enough that buying an expensive camera and then depending on some random persons addon that they wrote in their spare time, that itself depends on a different random persons API and reverse engineering efforts, just isn’t the best approach.

That being said, as a generic statement, if it’s taking 12 minutes, then “something” is keeping the stream up for that time until Ring times out the stream. The logs should be really clear about what that is. Also, you don’t need to manually start and stop the stream, the record service will start an on-demand stream and the stream will stop 10 seconds after recording stops. My guess is that might be a source the problem because you have no delays between your actions so you are basically calling on/record/off, in the span of a few milliseconds. You could add delays, but really, just remove the manual on/off and let the record function do it’s thing. Again the logs show every connection and exactly what is happening.

This will be all of the advice I will offer.

I realised my intro came out wrong actually. I don’t mind paying whoever designed or bought the design of the Ring, so long as they gave me a choice of storing the data locally and do what I want with it.
Hence why I would rather contribute to a Patreon for your work, rather than the yet another recurring useless fee.

Anyways. Thanks for your answers. I will look into the logs and remove the start/stop and see where I land. From a first test, my Ring floodlight camera is now (night time) showing red dots at the top of the front screen and the lights do not come on until I reset the camera.
Debug time as something is not right.

My biggest concern is if Ring perceives this project as a way to bypass paying for their service, there are things they could do to block this project completely, or at least make it very difficult to maintain, which would make things worse, thus I do not intentionally encourage this behavior. If you just want your recording locally, you can always use the example automation I provide in the docs which can automatically download the recording from Ring after the event and you can do with what you will, but that does still require paying Ring for at least the basic service.

And to be clear, if you find a bug or misbehavior in the addon, feel free to open an issue and I’ll try to look into it, I just don’t do anything to explicitly help people try to bypass paying for Ring services. If the addon is misbehaving in some way, that’s a different issue.

2 Likes

Understood.

The red dots on the screen I reported earlier were still an effect (I had not restarted the automation correctly) of the manual start and stop livestreams I had in my automation,
As you said, now I can get the local recordings and can maintain the motion detection working without any delays, and keep the recordings in the cloud.

I am sure it has been discussed before. The local recordings, as it might have been already reported, have the first 5 seconds missing compared to the same recording in the cloud.

Yep, it’s already covered above, I mean, you’re recording a live stream, not a 5 seconds ago stream (regardless of the fact that HA buffers 5 seconds in the UI, that’s not because of Ring). Ring motion notifications generally take 1-2 seconds to be received and then it normally takes about 2-3 seconds for the live stream to start up and there’s no way to tell Ring to go back in time and start the steam from 5 seconds ago. If Ring devices supported continuous streaming you could use the HA replay buffer (or whatever it’s called), but they don’t, so that’s not useful in this case.

This is just one of the many reasons it’s not a great idea to attempt to replace Ring paid services with this addon.

FYI.
Ring was my first camera, before I got into HASS, or perhaps at the same time as getting into smart-stuff.
This was 3 years back.
Paying for the basic subscription is not a big deal (£25 per year).
I did get the floodlight version of the Ring, as it was a cool replacement for the dumb outside lights I had before.
But then within the yearly subscription I get very little which I care about. I cannot store and ditch as I please, and, more importantly, I cannot live stream from Ring via HASS, only playback the last recordings in history.

I bought other cheaper smart cameras, since then, with onboard SD-card, which I can either connect to NAS (thanks to ONVIF standard) or stream and record to HASS, flexible enough to signup a subscription with them as well (not for me).
One of these cameras also have the dual audio feature (to talk to the postman when I am at work), and outperform the Ring experience, in my case (I already changed my first Ring HW camera due to something related to the audio - and WiFi strength is quite good al through my house with high speed broadband)

I kept the Ring one, just because of the floodlight feature, really, but I saw your addon and I thought it could enhance an inflexible and expensive piece of hardware (in my personal opinion), at least when compared to the other cameras I am using.

Hopefully that gives you a better view of where I am coming from with my thought process on your addon. But I appreciate your caution against my initial naive reaction to your addon :grinning:

Sure, I get it and hopefully the addon addresses at least some of the limitations. I mean, now you can live stream in HA, so there’s that. And you can download recordings (although you could do that with the native HA Ring integration as well), so you can store and ditch as you please. That’s what I see as the goal of the addon, to enhance the capabilities of Ring devices and services, not get around them.

Of course, if people use it to record their own streams, there’s nothing technically wrong with this, and I can’t stop them, and it works well enough based on my own testing. But you do lose some things, like the first 5 seconds of events, although you could probably use another motion sensor to trigger the recording to work around even that limitation somewhat.

I just don’t want the addons purpose to be perceived as some way to work around Ring’s limitations and locked ecosystem. I see Ring devices kind of like Apple, you either buy into the ecosystem or not, if you decide you don’t want to be in it any more, your prior investments into it are mostly wasted.

For me, Ring cameras were a no-brainer, not because I’m super enamored with their features, although 3+ years ago when I purchased all of this stuff I thought they were better than most, but there’s a lot more selection out there now with regard to devices and capabilities. However, even now, I also own Ring Alarm, and, at only $100 year for professional monitoring, which also includes recording for all cameras (I have 7 of them), it’s just an unbeatable deal. I mean, I used to pay about $30/mo for my prior system just for monitoring, no cameras at all. I’d have a much more difficult time justifying the payment for Ring cameras by themselves and I’d probably pick something with local recording instead.

Anyway, I hope you find the addon useful, I don’t mean to imply that you can’t use it however you wish, of course you can, I’m just very careful to encourage its use an enhancement of Ring services, not a replacement for them.

1 Like

I’ve just started using the addon and firstly wanted to say thanks @tsightler !

After installing it works easily.

I was wondering if anyone has set up an automation or similar that saves the snapshots? I have set them to grab one every 30 seconds and was thinking I would just save them all for a few days.

@DrSpaldo If you have managed to have rtsp working with the ring-mqtt addon, take a look at the frigate add-on, if you have reasonable processing power.
Frigate uses the stream you get from ring-mqtt and, with AI based algo, keeps recording until it detects a person, storing only the clips by events.
I have just started using Frigate and it is cool.
In case it is not what you are looking to do, take a look at the automation example in my post couple of days ago.

Thanks for the reply @Giuseppe_Torres, I actually already use Frigate for my actual CCTV cameras and hadn’t considered using it for ring. I might take a look at it, I’ve not had much luck in the past with constant Wi-Fi camera streaming but no harm trying I guess!

IMO, it’s not really a good idea. Ring cameras are not intended for 24x7 streaming and are not very good at it. The stream is not local, it still always goes through Ring servers, so it uses lots of data for your Internet connection (probably not too important, unless you have a data cap, in which case it can really add up) . Ring servers time out streams every 10-15 minutes and, while it might just restart, you’re missing stuff in that gap.

I have just realised that myself.
I could still see 12min of livestream recorded to Ring servers, no motion detected during that, and, as you say, small gaps between the 12 min chunks.
At a guess ~230MB for each of the 12min need to go from Ring camera to Ring servers (so 230MB uplink), then the same 230MB (in donwlink) come back to my local server to be processed by frigate.
Wow, ~55GB (between UL and DL) each day only for doing that! (assuming 24/7 recording)
That is huge amount of data which, even for unlimited fast internet, my ISP might question me about :slight_smile:

Switching swiftly to > motion detection from Ring camera.

I thought that the concern I initially had over the fact that “when ring-mqtt is enabled” → “no motion is detected via Ring App” is taunting me again.
I am using default configuration for ring-mqtt (apart the first line)

enable_cameras: **true**
snapshot_mode: disabled
livestream_user: ''
livestream_pass: ''
enable_modes: false
enable_panic: false
beam_duration: 0
disarm_code: ''
mqtt_host: <auto_detect>
mqtt_port: <auto_detect>
mqtt_user: <auto_detect>
mqtt_password: <auto_detect>
branch: addon
debug: ring-*
ring_token: ''
location_ids:
  - ''
  1. If “enable_cameras=false” (as in default configuration) ==> I get motion detected from Ring App on my phone, but I cannot detect motion via the sensor created by ring_mqtt, and I get no live stream
  2. If “enable_cameras=true”==> Motion detection is lost via Ring App, but now I can detect motion via the sensor in home assistant and I have a live stream.

I might be doing something wrong or maybe what I am trying to achieve is not feasible.

Is it possible to retain the motion detection in the Ring App on the phone (i.e. in the Ring servers), retaining also the ring-mqtt’s received live stream and motion detection sensing?

Thanks

This answer is already covered in the FAQ section if the ring-mqtt documentation. You’d likely save yourself some time if you read it.

The summary version is that Ring cameras do not perform motion detection while a live stream is active and always records the live stream. This is true whether you start the stream via the Ring phone app, the Ring web app, or via ring-mqtt.

As I’ve already stated multiple times ring-mqtt has no special magic to change the way Ring devices behave. A stream started by ring-mqtt is no different that a stream started via any other means. The goal of the addin is to integrate Ring features into other tools, it does not change how they function in any way. You should not configure your Ring cameras in HA, or with any other tool, for continuous streaming, only on-demand streaming, that way you will still get motion notifications as before.

I had already read the FAQ, though I was surprised by the answer, as a key important feature that, as you know, the Ring App provides to their customers is the 2-way comms.

How would I be able to experience that, if I have the livestream piping data via ring-mqtt?
I would not want to use HA as a way to get the live stream, while switch to RingApp if I realise there is the postman at the door.

Thanks for the reply @tsightler , I don’t think I will run it through Frigate. I really just want to save the JPG snapshots that I generate every 30 seconds to a folder. So I will have to work out a way to make that into an automation…

Should be easy, a simple automation that triggers on changes of the snapshot timestamp attribute and calls the camera.snapshot service is all that’s really needed (crude example)

alias: Save Front Porch Snapshots
description: ''
trigger:
  - platform: state
    entity_id: camera.front_porch_snapshot
    attribute: timestamp
condition: []
action:
  - service: camera.snapshot
    target:
      entity_id: camera.front_porch_snapshot
    data:
      filename: /media/front_porch/{{ now().strftime( '%Y%m%dT%H%M%S.jpg' ) }}
mode: single

If you wanted to only capture during motion or during a specific timezone you can just add that as a condition. Good luck!

I really don’t know how to help you any more. You say you read the FAQ, but still asked the question, did you expect a different answer here? It makes no sense.

How would I be able to experience that, if I have the livestream piping data via ring-mqtt?
I would not want to use HA as a way to get the live stream, while switch to RingApp if I realise there is the postman at the door.

Experience what? HA doesn’t support two way audio, so you’d have to switch to the Ring app to do that anyway. You can still receive motion alerts as long as a stream is not active in HA, so just don’t setup HA to stream 24x7 and you can use it.

Thanks so much @tsightler , I will give it a go

@tsightler Thanks for your ring-mqtt app. It was working fine for a couple of weeks until I rebooted my docker today. After which I keep getting the following error so I can’t access my RTSP stream anymore. I has configured it to stream to my Synology Surveillance Station and it was working fine until today. I updated to your latest build and the issue is still happening and created a new docker image without avail.

The below keeps repeating

ring-rtsp I [0/0] [RTSP] [conn 192.168.1.68:42906] opened +101ms
ring-rtsp I [0/0] [RTSP] [conn 192.168.1.68:42906] ERR: invalid URL (/54e019c6f241_live) +1
ring-rtsp I [0/0] [RTSP] [conn 192.168.1.68:42906] closed +0ms
ring-rtsp I [0/0] [RTSP] [conn 192.168.1.68:42908] opened +185ms
ring-rtsp I [0/0] [RTSP] [conn 192.168.1.68:42908] ERR: no one is publishing to path ‘54e019c6f241_live’ +1ms

My settings are:

{
“cmd” : “”,
“cpu_priority” : 50,
“enable_publish_all_ports” : false,
“enable_restart_policy” : true,
“enabled” : false,
“entrypoint_default” : “/init”,
“env_variables” : [
{
“key” : “SNAPSHOTMODE”,
“value” : “all”
},
{
“key” : “ENABLECAMERAS”,
“value” : “true”
},
{
“key” : “MQTTHOST”,
“value” : “192.168.1.212”
},
{
“key” : “LIVESTREAMPASSWORD”,
“value” : “”
},
{
“key” : “LIVESTREAMUSER”,
“value” : “”
},
{
“key” : “RINGTOKEN”,
“value” : “REMOVED for this Post”
},
{
“key” : “PATH”,
“value” : “/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
},
{
“key” : “LANG”,
“value” : “C.UTF-8”
},
{
“key” : “PS1”,
“value” : "$(whoami)@$(hostname):$(pwd)$ "
},
{
“key” : “S6_BEHAVIOUR_IF_STAGE2_FAILS”,
“value” : “2”
},
{
“key” : “S6_CMD_WAIT_FOR_SERVICES”,
“value” : “1”
},
{
“key” : “TERM”,
“value” : “xterm-256color”
}
],
“exporting” : false,
“id” : “15104e570c3eaeb781b0aba6110591d609835b3b3074980d4531a31e69bd7780”,
“image” : “tsightler/ring-mqtt:latest”,
“is_ddsm” : false,
“is_package” : false,
“links” : [],
“memory_limit” : 0,
“name” : “tsightler-ring-mqtt1”,
“network” : [
{
“driver” : “bridge”,
“name” : “bridge”
}
],
“network_mode” : “bridge”,
“port_bindings” : [
{
“container_port” : 8554,
“host_port” : 8554,
“type” : “tcp”
}
],
“privileged” : false,
“shortcut” : {
“enable_shortcut” : false,
“enable_status_page” : false,
“enable_web_page” : false,
“web_page_url” : “”
},
“use_host_network” : false,
“volume_bindings” : []
}

Hope you can help me ping point what is going on thanks!

First off appreciate your contribution.
I would like to integrate this for my docker based home assistant and I saw this in the instructions:

If you are running Home Assistant Core via Docker or manual install into a Python virtual environment then there is no support for the addon store but you can still run the ring-mqtt project directly to get the same capabilities.

I’m not sure how I would get the same capabilities without the addon. Do I need to set up something manually under home assistant? I’m thinking that there must be something that the addon is doing that will need to be done manually when using home assistant core unless all the addon is doing is to run the script manually.
Second question: I have MQTT running with TLS enabled in insecure mode to have the data encrypted and I could not find anything in the instructions page on how to specify the keys and the option for insecure mode. Can you point me to the right place for those instructions?
BTW, I am trying to follow instructions from Githug page.
Thanks.