Ring Doorbell (gen2) with ring-mqtt project

Hi all,

unfortunately openHAB doesn’t come with any official Ring doorbell binding, but I was lucky to find this project on GitHub Issues · tsightler/ring-mqtt · GitHub

It uses the Ring API, this means your Ring device has to be connected to the Cloud, but a Ring protection plan / subscription is NOT required.

Long story short, using mqtt-ring openHAB will be notified when motion is detected and when someone rings the bell. Even without a Ring protection plan subscription. Eventually I use the chromecast binding to play a DingDong sound on my Google Home devices. On top openHAB sends a Telegram message with a still picture in case someone rings my doorbell (out of the box integration, image provided via mqtt topic by ring-mqtt) or if motion is detected (manual image generation via ffmpeg connecting to the rtsp stream)

Why is the latter needed? Unfortunately “low powered” devices like my doorbell gen 2 (using 8-24V AC input) don’t provide an image snapshot in case motion is detected. At least without a Ring protection plan. This means, once openHAB detects motion I have to use ffmpeg to connect to the ring-mqtt rtsp stream and generate a still image. Then I will send the image via Telegram binding. This is always delayed and very rarely (not sure how to fix) the image is scrambled (google for smearing). However, I’m happy with the result.

I’m using ring-mqtt as docker image. It was really easy to set it up.

Want to know more? Reach out :wink:

best regards

Stefan

1 Like

Hey @StefanH

sounds really great.
I’m running Openhabian, so I don’t have Docker Hub. I did pull the ring-mqtt docker image from CLI, but thats where my Linux knowledge ends :wink:
Installing it manually (though not recommended) seemed to have worked for me. However, I’m having issue manually starting the service and accessing it via MQTT.

My config.json looks like this (untouched)

{
    "mqtt_url": "mqtt://localhost:1883",
    "mqtt_options": "",
    "livestream_user": "",
    "livestream_pass": "",
    "disarm_code": "",
    "enable_cameras": true,
    "enable_modes": false,
    "enable_panic": false,
    "hass_topic": "homeassistant/status",
    "ring_topic": "ring",
    "location_ids": [
        ""
    ]
}

How does you config look like? Did you simply replace the hass_topic value with your mqtt topic?

Thanks in advance

Hi @StefanH,

I am curious what is the delay between button press and MQTT updates?

I have the doorbell connected as shown here but i face delays. By the time the Google Assistant rings the parcel delivery is often gone.

My config looks like this:

{
“mqtt_url”: “mqtt://MYMQTTUSR:MYMQTTPWD@192.168.2.9:1883”,
“mqtt_options”: “”,
“livestream_user”: “admin”,
“livestream_pass”: “MYADMINPWD”,
“disarm_code”: “”,
“enable_cameras”: true,
“enable_modes”: false,
“enable_panic”: false,
“hass_topic”: “homeassistant/status”,
“ring_topic”: “ring”,
“location_ids”: [
“”
]
}

Have you checked the ring-mqtt logs?

I’d say quick enough, check the video I did record for you.

https://youtube.com/shorts/QeVUzH6AfEs

BUT I need to say that I use two chime systems. One system is an audio group that consists of several Google Home Assitant devices. Once openhab detects the ding event, it will connect to the audiogroup and ask to play a local mp3 file (provided as http URL). The other system is a self-built esp8266 with physical mp3 player and loudspeaker. All in all you will hear three sounds being played. The outside rind doorbell itself, my esp doorbell and the google devices. The esp reacts a bit faster compared to google homes. Anyway, all in all it’s still pretty fast. maybe 500ms delay.

1 Like

btw guys, now after few weeks testing without a Ring protection plan, I need to admit that the ffmpeg to ring-mqtt connection (to create the still image) isn’t 100% satisfying. The main issues are:

  1. The process to grab the still image is very slow and leads to a delay between motion event and image finally loaded on my smartphone
  2. Quite rare, but sometimes the image is corrupted (seems to be udp issue, but I wasn’t able to make it run using tcp)
  3. It happened to me a few times that ring-mqtt rtsp stream stopped working. then of course you won’t get any image. the developer said he has to implement more errorhandling. so maybe it will work better in the future.

Summarized, I’m thinking about purchasing the ring protection plan. Then AWS will take care about all videos.

I haven’t figured out how to debug and get the logs with the manual install unfortunately :confused:
I did set up the mqtt generic thing in MainUI (using the built-in mqtt broker, not mosquitto), but I guess I have to create the channels manually as well, right (at least that’s how I did it in OH 2.5 with the configuration files). Would you mind sharing your YAML thing definition?

Hi mancer,

I did setup my Ring Doorbell Pro 2 with MQTT Docker. Here is my things file:

//RING Doorbell MQTT 
Thing mqtt:topic:your-ring-id "Ring Doorbell" (mqtt:broker:home) {
Channels:

   Type image:image               "Snapshot"              [stateTopic="ring/your-ring-id/camera/54e01989fd70/snapshot/image"]
   Type string:image_timestamp    "Ring Image Timestamp"  [stateTopic="ring/your-ring-id/camera/54e01989fd70/snapshot/attributes"]
   Type string:ring_motion        "Ring Motion"   [stateTopic="ring/your-ring-id/camera/54e01989fd70/motion/state"]
   Type string:ring        "Ring Ding"   [stateTopic="ring/your-ring-id/camera/54e01989fd70/ding/state"]
   
}

Its really fast. I did setup a test rule to turn on the entrance hall light when detection is notified and it´s really fast, almost no delay.