How (best) to interface Ring Camera motion sensors to Alarmo?

Abstract

Ring cameras no longer provide a binary sensor for motion detection, only an event, which is not recognised by Alarmo. This article demonstrates a solution that works, but I see as a ‘bodge’. I invite readers to suggest better solutions, and I have several questions for the authors of the Home Assistant Ring integration.

Background

Using the motion sensors on outdoor or indoor cameras to trigger an Alarmo (or any other) Home Assistant alarm system is very useful feature - perhaps the most useful feature of a camera after the actual picture. Until October 2024 it was very easy: the HA Ring integration produced a binary_sensor with device type motion, which was recognised by Alarmo, so could be directly added to the Sensors list.

For reasons unknown to this author, Ring, or at least the authors of the Ring integration (I have no way of telling which) withdrew this sensor. There was no deprecation notice or other warning. The documentation, under the title Binary Sensor says “The binary sensor is being replaced with the event entity, and you should migrate any automations to the event entity by release 2025.4.0.” However, the binary sensor already disappeared after an earlier software upgrade (I think it was October 2024?). This caused several bug reports to be raised (see the list at the foot of this page).

Why withdraw these binary sensor(s)? Ring cameras typically have Sensors (depending on the model) for Last activity (time), Live view (the video feed), and Last recording (with a Ring subscription that includes recording). They typically have controls for: motion detection on/off, lights on/off, siren on/off and volume. There is also an event sensor (which is very similar to ‘Last activity’), as mentioned in the documentation quoted above, but little detail on how to use it. The documentation just says “The event entity captures events like doorbell rings, motion alerts, and intercom unlocking”, then goes into some very technical troubleshooting steps (which I did not need).

Questions for the authors of the HA Ring integration

  1. Why did you withdraw the binary_sensor for motion detection? Please put it back!
  2. How does the event sensor work exactly? What event types are there and how can they be used to trigger automations? The documentation mentions Doorbell rings, Motion alerts, and Intercom unlocking; are these event types? I tried to trigger on event type ‘motion’ but the automation never triggered. I am now triggering on any event and assuming that it is motion as I never saw any other type.
  3. In particular, is there an event for ‘Motion no longer detected’? I never saw one. By experiment I found that Ring camera motion events are not repeated until the lights go off, about 3 minutes after triggering. My routine therefore sets motion detected ‘on’ for 1 minute after the event and ‘off’ for a further minute before waiting for a new trigger.

My solution (bodge)

The solution before October 2024 was simple:

Slide1

… but the red explosion symbol shows the link that is broken since October 2024.

We therefore need a new solution:

Slide2

I do not like it, but it does work. If anyone has a more elegant or robust solution please post it in the comments!

The solution has several parts (making it rather fragile to change):

  1. An input_boolean helper that will hold the detected motion state (on/off)
  2. An automation (from a blueprint) that is triggered by the Ring event and sets the helper on for one minute and then off for one minute before ‘listening’ again.
  3. A template binary sensor that converts the helper state into a binary sensor with device type motion, that is recognised by Alarmo.

I am pasting the yaml code for the blueprint and the template binary sensor here so that you can comment on or improve them:

Blueprint code (automation to convert event to input_helper)

blueprint:
  name: Motion event to input boolean
  description: Detects a motion event and turns on a boolean helper for 5 seconds, then off again
  domain: automation

  input:
    motion_event:
      name: Motion Event
      description: Motion event to trigger this automation
      selector:
        entity:
          filter:
            domain: event
            device_class: motion
          multiple: false 

    helper_input_boolean:
      name: Motion helper
      description: Input boolean helper to be operated by this automation
      selector:
        entity:
          filter:
            domain: input_boolean
          multiple: false 

mode: single
max_exceeded: silent

triggers:
  - trigger: state
    entity_id: !input motion_event

conditions: []

actions:
  - action: input_boolean.turn_on
    target:
      entity_id: !input helper_input_boolean
    data: {}

  - delay:
      hours: 0
      minutes: 1
      seconds: 0

  - action: input_boolean.turn_off
    target:
      entity_id: !input helper_input_boolean
    data: {}

  - delay:
      hours: 0
      minutes: 1
      seconds: 0

Example template sensor for camera ‘Back Gate’ (converts input_helper to binary_sensor )

- binary_sensor:
    - name: Back Gate camera motion 
      unique_id: back_gate_motion
      icon: mdi:motion-sensor
      device_class: motion
      state: >
        {{ states('input_boolean.back_gate_motion_detected') }}

A Note on Naming

All these parts tend to end up with similar names, like “xxx motion”, so you need a convention to avoid confusion. I use the following, which you can take as a guide, or invent your own – as long as it is clear to you!:

  • Example: a Ring camera named ‘Back Gate’ in the app …
  • Produces a (default) event entity called “event.back_gate_motion” (I do not change that)
  • I name the corresponding helper “Back Gate motion detected”, so it gets an entity name of “input_boolean.back_gate_motion_detected”
  • I name the automation “Ring motion detection - Back Gate camera”. (Starting with the same phrase, Ring motion detection’, means they all come together when sorted by name).
  • I name the template “Back Gate camera motion”, so its entity name is “binary_sensor.back_gate_camera_motion”. Insertion of the word “camera” makes it clearer in Alarmo, distinguishing camera motion sensors from other types of motion sensor.

Installation procedure

A. Preparation

  1. As always, make a Home Assistant backup before making any changes
  2. Make sure you have named your cameras appropriately in your Ring app, as this is now going to be more difficult to change later
  3. If you already had Ring and Alarmo installed, I suggest deleting them both and installing from scratch to eliminate ‘unavallable’ or unknown’ entities left behind by the older version
  4. Install the blueprint. For the moment you can paste the code above. I will publish it properly on Github later.
  5. If you do not already have a templates.yaml file:
    a) create one in /CONFIG
    b) in configuration.yaml insert the line
    template: !include templates.yaml

B. For each camera …

The following is for an example camera called “Back Gate”; replace with one of your camera names, and repeat for all your cameras.

  1. Create the Toggle helper “Back Gate motion detected”. It will create the entity input_boolean.back_gate_motion_detected
  2. Create an automation, using the blueprint motion_event_to_input_boolean.
    a) Enter the event ‘Back Gate Motion’ as input
    b) Enter the helper “Back Gate motion detected” as output parameter.
    c) Save and name it something like “Ring motion detection - Back Gate camera”.
  3. Create a template sensor by pasting the example code above for “Back Gate” into your templates.yaml file, and adapting the entity names as you chose them.
    You do not need to repeat the - binary_sensor: header after the first one, start each further camera at at - name: with the appropriate indent.

C. Set up in Alarmo

  1. After completing stages A and B, restart Home Assistant.
  2. In Alarmo, select the “SENSORS” page. You should now see all your cameras’ motion sensors as “Back Gate camera motion” etc., with entity names binary_sensor.back_gate_camera_motion etc. and device type motion. You can set them up as motion sensors in the usual way.
  3. Test every camera’s motion sensor, to make sure you have not broken the chain with a typo! You can do this by standing near the camera, arming Alarmo and then moving.

Good luck!
Comment below on how you get on, stating what type of cameras you are using.

__

If you find the ideas and code in this article useful, please Buy Me a Coffee

__

References

Documentation

Current HA Ring integration documentation:

Ring Binary Sensor documentation (but only for doorbells)

Issues and feature requests

My issue on the Home Assistant Community Forum

My Github feature request to reinstate the binary sensors

Orginally raised as an issue – please comment on it to support it!

Other bug reports, questions and feature requests apparently related to this issue (in no particular order)

Note: I am not using the older MQTT solution and have not included issues with that.