Ring Device integration via MQTT w/ Video Streaming

I finally got it working. A friend of mine got it working by fixing mqtt settings.

Greetings,

I myself have been trying to make this work on my HA, thus i have only been partly succesful.
It took me 3 days to manage what i done so far, so i am quite impressed with the 0,5% knowledge that i posses regarding this kind of acvitities.

I have installed MTTQ, after that Mosqueeto, created a new user in HA, used these credentials and managed to run Ring. So far i managed to see all my Ring devices (sensors, doorbells, alarm system) working in Devices/MTTQ. I even saw the AlarmSystem switch popping up in HA.

Right now i am unable to add the camera/feed to HA/Homekit, and i am wondering whether i have to add everything to the Dashboard, which is currently not woriking also. I havent touched any other part of the config, did not changed/added code… as i do not fully understand this.

Could someone be so kind to show me the way to complete and perfection my half baked Ring situation?

I, too, am really struggling here. I don’t know if I am just ignorant of skill I need or am missing something in the instructions, but I could really use some help.

All my Ring devices, and more specifically, the cameras that I am interested in connecting to, show up in the device list as MQTT devices. When I select a specific Ring camera from the device list, I see a panel for Controls and Sensors. It is my understanding of the instructions that I need to go to the Info Sensor and click on it to find the link to the camera. However, this sensor and all the other sensors show up as “Unavailable.” I’ve restarted HA multiple times and I have also manually restarted the Ring-MQTT addon. But nothing changes. Funny thing is, the sensor info does show that it was available for a moment, a short time in the past, but hasn’t been available since it dropped.

I am not sure what is wrong, or if I have configured something incorrectly. Given the fact that that camera is showing up as an MQTT device, I believe I have configured my MQTT settings correctly, but that could be a poor assumption.

I do have go2rtc installed and running, but it does not appear that camera shows up there, either. I am unclear if that add-on needs additional configuration, also.

Can anyone please help with this?

EDIT:
I resolved this! I had my core-mosquitto server, for some reason, input with the mqtt:// prefix after “@” in the configuration. On a whim, I removed that prefix and EVERYTHING has been humming along ever since. No help is necessary here, but thought I would update this in case others ran into a similar problem. Happy New Year!

Thanks!
Dan

Hello!
Thank you for creating this add-on and for your hard work in keeping it updated and helping people implement it.

I am curious about the birth message. Is this still necessary in the latest version? I wonder because while my devices do show up as mqtt devices (using Mosquitto), they are all “unavailable.”

Is the birth message is still helpfu/necessary, could you post the necessary configuration.yaml code to get that going? I am struggling to find instructions on how to do that. I’m new to home assistant as of the last two weeks, and I am still learning a lot. So I apologize in advance if this is a basic skill I should already know about. Nevertheless, if you could help me with this, I would be grateful! Thanks!!


EDIT:
Resolved. After more poking around and reading, I learned that it seems with the latest versions of HA, this has been automatically added. So no reply necessary, but I wanted to leave this post up because I really do appreciate all you have done for the community with this add-on and the support you have given.

The only problem I am running into now, is that I installed RSTPtoWebRTC to reduce the latency, but since Ring has removed the ability to activate legacy mode, and they won’t even do it when you call support, then that addon creates an error for the stream. Well, that is what I am assuming because I am stuck with a server error that only pops up with that add-on installed. And since I cannot turn legacy mode on to see if that resolves the issue, I am not sure what to do next.

I am open to any insight you have about that, but I know that is not your add-on, so it’s ok if you don’t have anything to add! Thanks again!

I have a dashboard that shows snapshots from several of the Ring cameras. The cards are from the generic camera integration.

Can someone point me in a direction of how to overlay the time of the snapshot (or time of the motion alert) on the snapshot that I display on the dashboard? My search skills aren’t serving me well so far.

Thank you!

I’ve been using this integration for about six months and it’s been fantastic.

I’m interested in ideas for monitoring my Ring devices. Specifically, my Ring Pro doorbell died a few days ago and I didn’t notice. This is a wired-only doorbell/camera. I verified with a voltmeter that it’s connected to power – but the doorbell just was not powering up.

That got me wondering if there’s a way in HA to monitor that it’s alive. I looked at the associated entities and nothing jumped out. I thought maybe the “info” entities might eventually give an indication, but doesn’t seem like it.

Any suggestions?

Perhaps a feature request. Is it possible to have a switch for controlling motion-activated light? It is this toggle in the Ring app:

This would be useful when you don’t want to trigger the light (not motion detection) when outside at night.

Thanks,

I am having an issue setting up the generic. the instructions in github seem to be for an older version of Home assistant.

I was able to find the stream source and still image URL by doing the following path (is this correct?)
MQTT => Devices => [select camera - mine is “Front Door”] => 3 dots next to MQTT Info => Download Diagnositc

I used notedpad++ to find the stream source and still_image_URL on line 387.

After this, i tried to create a new device “Generic Camera” where I am supposed to enter the stream source and still_image. I copy and pasted the stream source and still image above and received an error.

What am I doing wrong? Do I need to set up the generic camera a specific way? Any help would be appreciated, thank you

note: i see my “device” here. Is this my camera_id?
“device”: {
“id”: “2dbbdc58cf7a18fd1d86f540b886d442”,
“name”: “Front Door”,

last question: do I need to set up the go2rtc project for this to work?

UPDATE:

the stream_source = rtsp ending in _live worked when adding a generic camera!

Now onto the still image. I still can not get the still image URL to work.

Is there a different still image URL I am supposed to use?

Now that I have RTSP working, is there a way to get notified when the button is dinged or that it takes a snap shot of the person who is there?

Here’s my settings for the generic camera:

Still Image URL:
http://192.168.0.199:8123{{ states.camera.myring_snapshot.attributes.entity_picture }}

Stream Source URL:
rtsp://192.168.0.199:8554/xxxxxxxxxxxx_live

Basically the “192.168.0.199” is my HA’s IP address.
E.g. I replaced the “homeassistant:8123” with “<HA ip address>:8123”
And I also replaced “https” with “http” to get the still URL to work (don’t ask me why).

You should be able to find the ring mqtt motion entity under
http://<HA ip address>:8123/config/entities
search for MQTT and look something like “ring_motion”
e.g. for my case:
binary_sensor.myring_motion_2

You can use this to trigger any automation in HA.

For my ring battery camera (Ring Doorbell V2), I used these 2 commands to capture snapshot image and also a 30 sec video, which can be run at the same time on the ring camera:

Capture a snapshot after 0.2 sec:

          - service: shell_command.ffmpeg_cmd
            data:
              cmd_options: >-
                -rtsp_transport tcp -i rtsp://localhost:8554/xxxxxxxxxxxx_live
                -ss 0.2 -frames:v 1 -y /media/img.jpg

Save 30s video:

      - service: shell_command.ffmpeg_cmd
        data:
          cmd_options: >-
            -rtsp_transport tcp -i rtsp://localhost:8554/xxxxxxxxxxxx_live -c
            copy -t 30 -y /media/vid.mp4

Replace “xxxxxxxxxxxx_live” with the one for your ring camera.

Add this to your HA configuration.yaml:

shell_command:
  ffmpeg_cmd: ffmpeg {{ cmd_options }}

camera:
  - platform: local_file
    file_path: /media/img.jpg
    name: "ring-mqtt-snapshot-img"

I then send the snapshot image as notification to my phone and the 30s video as a telegram message to my telegram account.

EDIT: FYI - I do not have subscription to a Ring protect account

EDIT 2:
To add the snapshot image to your dashboard:
go to dashboard > Edit dashboard (right corner) > + ADD CARD > Search cards “Picture entity”
In “Picture entity Card configuration” > Entity > type “ring-mqtt-snapshot-img” (which is the camera name defined above in the configuration.yaml file > change “Image path” to blank > SAVE
This should show the snapshot image on the dashboard.

EDIT 3:
The above ffmpeg commands are to work around getting a snapshot + video clip on my battery-powered camera. Read about limitation of snapshot support in battery-powered cameras:

is there a reason once I got the rtsp configured I stopped receiving notifications for my ring device on my iphone? When someone pressed the doorbell, I stopped receiving the popup notifications once the RTSP stream was enabled

This wiki page from the ring-mqtt author has a lot of details:
https://github.com/tsightler/ring-mqtt/wiki/Video-Streaming

Do you have a battery powered doorbell like mine?

If so, then if live stream is running, the doorbell cannot trigger motion alert at the same time. This is probably why you don’t get Ring notification on your phone. Also, live stream on mine tends to run for a few minutes (5 minutes?) even when I tried to turn it off. I think it is just the quirkiness of the battery-powered ring devices. I have no experience with other wired devices. You may search this thread for answers.

For this reason, I disabled the generic camera for my ring battery doorbell and not using the live stream feature. (If I need live viewing, I just use the Ring app itself). I mainly used the ring-mqtt motion/ding detection to trigger a sound on my speakers connected to raspberry pi 3b, capture a snapshot and send to my phone, and then capture a 30s video to send to my Telegram account. IMO, ring-mqtt is a very good integration to complement the Ring app, not to replace it.

1 Like

I should add on a Battery Doorbell, even when hardwired, using the live stream kills the battery.

I was finding my battery dies within a week even though its hardwired. Disabling the live stream automation, has meant the battery recovers again.

Yes, I have the batteruy powered. Would you know why I can’t get the still image to work? When I use the still image path of http://192.168.68.66:8123{{ states.camera.front_door_snapshot.attributes.entity_picture }}, I receive the error of “Unable to load valid image from still image URL (e.g. invalid host, URL or authentication failure). Review log for more info.”. I am not sure where I can find the log to understand more about the error. This has been tripping me up for at least a week

BUT if i understand you correctly, I don’t use the generic camera, so that live stream doesn’t affect the ring notification, and use the code you provided to just provide the snap shot. Is there a way to send the snapshot image to the dashboard? How could I go about setting that up?

lastly, you mention change the configuration.yaml file and i assume that is on the server itself and not some file on the home assistant app?

I will try to make the configuration update and report back

Your Still Image URL setting looks correct, so I don’t really know what’s wrong. When I was setting up my battery camera, it was finicky. I had to reboot my Ring camera and restart Homeassistant, restart ring-mqtt, to get it to work.

Like you mentioned, I don’t bother with generic camera anymore.

Yes, configuration.yaml is the config file in HA server. My setup is a raspberry pi 3b with homeassistant, ring-mqtt, running in docker containers.

I have updated the configuration.yaml file in my previous post to fix a pathname mistake in the “camera” configuration. The “camera” is pointing to an image file in the /media directory in the HA docker container. By default, this is mapped to /home/pi/media directory in my rpi 3b system. If you are not running dockers, as long as you have access to the image file, I think you can add it to the dashboard.

In the dashboard, I used the “Picture entity” card (I also updated my earlier post to include this info). Here’s the setting. Note that the “ring-mqtt-snapshot-img” below is the “camera” entity that I have defined earlier in the configuration.yaml file.

All you need is that Entity field. Everything else can be blank.

Hope it works for you!

You can’t use relative URLs in Generic camera integration.

Just add what you have in the image URL to a image element, though I might add the only way I could get it to work was to just add the brackets bit e.g. {…}

Ring2mqtt already provides a generic camera, called (your doorbell name)_snapshot

THANK YOU SO MUCH FOR YOUR HELP!

I got the battery powered ring doorbell to take a photo when someone preses it.

Now that this works, I am curious how I could configure it so a 30 second live stream shows on the picture card configuration. I see that you save a 30 second video video, but is there a way I can send that saved vide to the picture card?

I played around with some of the code, but I obviously cannot figure it out. i can duplicate what you provided and retain the video, but since the video has to be stored first, I am not sure how I live stream the video. I can’t have the live stream playing all the time as previous testing shows I won’t get the notifications on my phone. Any help on how to have the card show a 30 second live stream when the door is pressed?

As you mentioned, I have not been using the “live stream” feature of ring-mqtt on my Ring battery powered camera because it seems to lock up the camera for at least a few minutes (beyond the 30 seconds), and not getting motion/ding notifications from the Ring app at all.

But once I have captured the 30 second video clip using the ffmpeg command I showed in my post earlier, I can access that via: HA > Media > My media

For the video to show as a card on my HA dashboard, I have been using this custom card: gallery-card , which can be installed via HACS.

My setting in the dashboard:

type: custom:gallery-card
entities:
  - path: media-source://media_source/local/ring-videos
    recursive: false
show_reload: false
menu_alignment: hidden
maximum_files: '1'

(Note: looks like the author of gallery-card won’t be updating it anymore, and has been using frigate card )

To play the 30 sec clip, I just tap on the card. There’s also option to go full screen.

I came up with a bit of a bodgy solution but it seems to work pretty well,

Basically what i do is on motion detected, cast a dashboard showing the snapshot camera, then i take snapshots every 5 seconds for about 30 seconds, these are then displayed on a dashboard.

My battery life is no longer affected, and i still get all notifications from the app.

Its a bit of a weird solution, but all i want is to display on the dashboard as i walk to the door, who is at the door.

I have been thinking the same thing. Can you share your automation code showing the cadence of the repeats? I can’t seem to get mine to keep retaking the picture at a set interval