I just got my Ring MQTT up (GitHub - tsightler/ring-mqtt: Ring devices to MQTT Bridge) It is taking snapshots ever n second that update nicely on the dashboard.
However, is there any way I can store these snapshots? The snapshot is available as an entitity in mosquitto broker. (First time using MQTT in HA). If I can’t store them, does that mean I can’t use them in my notifications? Currently using calling snapshot service on the ring camera, which is useless since its the first frame of the last event.
Also, there is an entity switch for livestream. I set up a generic camera in config.yaml like so
camera:
- platform: ring
- platform: generic
name: Front Porch Video
still_image_url: http://homeassistant:8123{{ states.camera.inngangsdor_snapshot.attributes.entity_picture }}
stream_source: rtsp://<WhatToInsertHere>:8554/switch.inngangsdor_live_stream
Any pointers on what more that needs to be done or if config is wrong?
Followed the guide for ring mqtt as best as I could.
Here is an automation I use to save the snapshot and send to my firetv. It checks the difference between when the automation was triggered and the timestamp of the snapshot to make sure it has updated. It waits up to 15 seconds for the snapshot to update. If the snapshot doesn’t update it sends a message without an image. If the snapshot updates it then saves it locally and sends it to the firetv. I am sure there are better ways but this has been working for me.
alias: Notify Motion Front Doorbell
description: ''
trigger:
- type: motion
platform: device
device_id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
entity_id: binary_sensor.front_doorbell_camera_motion
domain: binary_sensor
condition: []
action:
- wait_template: >-
{{
as_timestamp((state_attr("automation.notify_motion_front_doorbell",
"last_triggered"))) - (state_attr("camera.front_doorbell_camera_snapshot",
"timestamp" )) < 3 and
as_timestamp((state_attr("automation.notify_motion_front_doorbell",
"last_triggered"))) - (state_attr("camera.front_doorbell_camera_snapshot",
"timestamp" )) > -15 }}
timeout: '00:00:15'
continue_on_timeout: true
- choose:
- conditions:
- condition: template
value_template: '{{ not wait.completed }}'
sequence:
- service: notify.firetv_cube_global
data:
data:
color: black
duration: 5
fontsize: large
interrupt: 0
position: top-right
transparency: 50%
title: Home Assistant
message: Motion detected at the front doorbell camera.
default:
- service: camera.snapshot
entity_id: camera.front_doorbell_camera_snapshot
data:
filename: >-
/config/www/tmp/{{
as_local((state_attr("automation.notify_motion_front_doorbell",
"last_triggered"))).strftime("%Y%m%d-%H.%M.%S")
}}_front_doorbell.jpg
- service: notify.firetv_cube_global
data:
data:
color: black
duration: 5
fontsize: large
interrupt: 0
position: bottom-right
transparency: 50%
file:
path: >-
/config/www/tmp/{{
as_local((state_attr("automation.notify_motion_front_doorbell",
"last_triggered"))).strftime("%Y%m%d-%H.%M.%S")
}}_front_doorbell.jpg
title: Home Assistant
message: Motion detected at the front doorbell camera.
mode: single
alias: Front door notification
description: ''
trigger:
- type: motion
platform: device
device_id: 0daf537485fb00c0ef5059e61977d2e4
entity_id: binary_sensor.inngangsdor_motion_2
domain: binary_sensor
condition: []
action:
- delay:
hours: 0
minutes: 0
seconds: 5
milliseconds: 0
- service: camera.snapshot
target:
entity_id:
- camera.inngangsdor_snapshot
data:
filename: /media/camera.png
- service: notify.all_devices
data:
message: Person at front door!
data:
image: /media/local/camera.png
mode: single
I have also tested using a tmp folder, dont recall why I swapped to media. But shouldnt I see the camera.png file in the media folder, the way I do it? (The notification has the snapshot). For now it will just overwrite(Which is ok for testing), but I cant see any actual file in the folder.
For the stream source look at the attributes for the info sensor and it should help you determine what you need to use. So in my case it is something like…
Entity
sensor.front_doorbell_camera_info
batteryLevel: '97'
firmwareStatus: Up to Date
lastUpdate: '2021-11-24T18:52:10Z'
wirelessNetwork: xxxxxxx
wirelessSignal: -50
stream_Source: rtsp://a98c085d-ring-mqtt:8554/xxxxxxxxxxxx_live
still_Image_URL: >-
https://homeassistant:8123{{ states.camera.front_doorbell
camera_snapshot.attributes.entity_picture }}
friendly_name: Front Doorbell Camera Info
icon: mdi:information-outline
device_class: timestamp
In your example you are looking in /config/media but it looks like you are saving to /media. Do you have another media folder at the same level as /config? I do see the images in my /config/www/tmp/ using camera.snapshot service in my automation.
Do you add the camera to Home Assistant and enable the option to preload stream? I believe if you enable that option it will cause the stream to stay on
This is from the ring-mqtt camera info…
Q) Streams keep starting all the time even when I’m not viewing anything
A) In Home Assistant, do not use the “Preload Stream” option and make sure the Camera View setting in the Picture Glance card is set to “auto” instead of “live”. Otherwise the card will attempt to start streams in the background for faster startup when you bring up the card.
The preload is disabled and set to auto and I still experienced the issue. The live stream still stays on.
Current workaround for me is having and automation that triggers when the live stream switch goes on, wait 2 min, then turn it off again.
I am not sure about the preload settings on my spouse’s phone, if that can make any difference.
I have never had an issue where it continuously triggers the live stream. I know after viewing a live stream in HA it stays up for around 5 minutes before stopping live streaming but that doesn’t sound like what you are describing.
Q) Why do streams keep running for 5+ minutes after viewing them in Home Assistant A) Home Assistant keeps streams running in the background for ~5 minutes even when they are no longer viewed. It’s always possible to stop streams manually using the stream switch.
If it is the 5 minutes that HA keeps the stream running I solved this by just adding the switch for the live stream to the picture glance card. After a live view I use the switch to stop the stream. This is what my picture card looks like.
I use the snapshot camera from mqtt since using the live stream results in the issue you are experiencing. The Ring cameras do not send motion notifications when live streaming.
I pay for the subscription since I also have the alarm system. However, my understanding is you will still be able to use live view but will not have access to any recorded events.
I tried with the live stream switch on the picture glance card, but experienced that it still went on again afterwards. Also if I forget to turn it off, its nice to have ‘automagicly’ off after 2 min. I will rarely watch the live stream more than 2 min in a run.
I’ve got the live view stream working perfectly fine, but I’m unable to set up the captured snapshot and want to do a similar notification on motion. Does anyone know why the location:
I ended up using the live stream in motionEye and do the motion detection from there. On motion I send a curl command to turn on a boolean helper, which again triggers my notification automation with snapshot from the stream. MotionEye also sends an end-command to turn the boolean helper off.
Do you have remote access setup? Hope you do or else the pics wouldn’t come through when you’re off your network. You just have to remove homeassistant:8123 from https://homeassistant:8123{{ states.camera.side_snapshot.attributes.entity_picture }} and put in your duckDNS address or whatever you have set up. Works fine once you replace the default address!