Ring Doorbell Battery Level Missing From Lovelace Dashboard

For the ring doorbell 2, this sensor I cannot get to display on the default lovelace dashboard, even though my ring integration shows this sensor with correct battery %:

sensor.ring_doorbell_battery

Many of these battery level type sensors do not show up on their own on the default lovelace dashbopard as they are considered diagnostic, so I had gotten around that by using template sensors. I actually created an “Area” called “Sensor Batteries” and in the default lovelace dashboard that pane has a huge list of all the sensor batteries so I can not only see what is low but also at a glance it lets me see - which ones are offline (since not reporting battery) as well.

So, like other sensors for battery levels that did not show up on my default lovelace dashboard (as they were considered diagnostic sensors), I added a template sensor to represent it in my configuration.yaml:

(In the below example I also show another battery level sensor at the bottom - for my basement door sensor - I have dozens of these - and they all work fine - except the ring doorbell battery template sensor STILL won’t even show up! (And, I can see it in the entity list, in the integration, under developer/yaml I can examine it’s state, etc…))???

sensor:
  - platform: template
    sensors:
# this one doesn't work - 
      battery_status_ring_doorbell:
        friendly_name: Ring Doorbell Battery
        value_template: >-
          {{ states('sensor.ring_doorbell_battery') }}
        icon_template: >-
          {% set batterylevelicon = states('sensor.ring_doorbell_battery') | int(0) // 10 * 10 %}
          {% if batterylevelicon == 100 %}
             mdi:battery
          {% else %}
             mdi:battery-{{batterylevelicon}}
          {% endif %}
        unique_id: battery_status_ring_doorbell
        unit_of_measurement: "%"
# but this one and many others like it work just fine!
      battery_status_basement_door_sensor:
        friendly_name: Basement Door Sensor Battery
        value_template: >-
          {{ states('sensor.basement_door_battery') }}
        icon_template: >-
          {% set batterylevelicon = states('sensor.basement_door_battery') | int(0) // 10 * 10 %}
          {% if batterylevelicon == 100 %}
             mdi:battery
          {% else %}
             mdi:battery-{{batterylevelicon}}
          {% endif %}
        unique_id: battery_status_basement_door_sensor
        unit_of_measurement: "%"

Are you sure you have the right name? My Ring has the room name in it sensor.front_door_battery but cannot remember if I changed that myself or not.

…can you see that sensor in dev tools > states?

Yes, thanks for your help, here you go -

I can’t see what’s wrong, sorry.

1 Like

Hey - thanks and kudos for looking :slight_smile:

Any other takers? Come, on, whaddya chicken? Bok Bok Bok? (LOL)

Hmm, Just a shot in the dark give the below a try

sensor:
  - platform: template
    sensors:
# this one doesn't work - 
      battery_status_ring_doorbell:
        friendly_name: Ring Doorbell Battery
        value_template: >-
          {{ states('sensor.ring_doorbell_battery') }}
        icon_template: >-
          {% set batterylevelicon = states('sensor.ring_doorbell_battery') | int(0) // 10 * 10 %}
          {% if batterylevelicon == 100 %}
             mdi:battery
          {% else %}
             mdi:battery-{{batterylevelicon}}
          {% endif %}
        unique_id: battery_status_ring_doorbell_sensor
        unit_of_measurement: "%"
# but this one and many others like it work just fine!
      battery_status_basement_door_sensor:
        friendly_name: Basement Door Sensor Battery
        value_template: >-
          {{ states('sensor.basement_door_battery') }}
        icon_template: >-
          {% set batterylevelicon = states('sensor.basement_door_battery') | int(0) // 10 * 10 %}
          {% if batterylevelicon == 100 %}
             mdi:battery
          {% else %}
             mdi:battery-{{batterylevelicon}}
          {% endif %}
        unique_id: battery_status_basement_door_sensor
        unit_of_measurement: "%"
1 Like

What did you change?

I switched out the following

unique_id: battery_status_ring_doorbell

For

unique_id: battery_status_ring_doorbell_sensor
1 Like

That fixed it - I am not sure why - but there was something messed up under the covers. Of course it appeared under “Sensor” (essentially unassigned) area, so I moved it to the “Sensor Batteries” area. Also the entity name it gave itself was sensor.battery_status_ring_doorbell_battery_2. Just for fun I decided to rename that on the spot to “sensor.battery_status_ring_doorbell_sensor” and it accepted that… So under the covers (probably in the database somewhere) there is a broken “sensor.battery_status_ring_doorbell” - that I bet would be Ok to use after the DB purges it in (I fogot how long that oprocess takes)… Sheesh. I had all kinds of problems with a bunch of other sensors that resolved by adding “2” at the end of the name for those as well. Kind of ridiculous! In an y even, thank you!

maybe sensor.battery_status_ring_doorbell already exists??

Yes but that is one I created myself in configuration.yaml with a sensor template to show on the dashboard - acting as a wrapper for the one that the ring integration created named sensor.ring_doorbell_battery (which as a diagnostic sensor would not show on the dashboard). What I was saying if the sensor.battery_status_ring_doorball that I created is “broken” in the database or under the covers some how, how come I can’t just fix that instead of creating another new one that works and wait until the unused ‘broken’ one is purged from the database (if I am saying that correctly)?

A really quick question, that is somewhat related to this post. Does the Ring doorbell sensor report the battery value as a percentage as a string (“90%”), or an integer indicating a percentage (i.e. 90)?

I added automation to create a notification if it falls below 85% and have tried both “85%” and 85, but it keeps notifying when the value is constantly at 90+% (as it’s hard wired to a charger).

  • id: ‘1679950035559’
    alias: Ring Low Battery Notification
    description: ‘’
    trigger:
    platform: numeric_state
    entity_id:
    • sensor.front_door_battery
      below: 85%
      action:
    • service: notify.persistent_notification
      data:
      message: Ring Doorbell Battery is Low
      title: Ring Doorbell Low Battery Notification
      mode: single

Mine shows as an integer