How to download Ring recorded videos using NodeRED?

Recently I started to move all my automation to NodeRED and most of them work fine. Yesterday I decided to finish up my Ring Doorbell setup and have the recorded video downloaded to a local folder. I have been following the docs but …

using: binary_sensor.front_doorbell_ding the flow shown below never worked and I noticed in the Developer Tools that the state never changed to on even if I was in front of the doorbell and the camera recorded a video (I can say this because I am able to see the video in my Ring dashboard since I have a Protect plan).

Then I thought to use the binary_sensor.front_door_last_ding and check on attributes like new_state.attributes.recording_status but that did not work either.

What could I be missing here? :thinking:

[
    {
        "id": "3eac4fdbfb24c5eb",
        "type": "tab",
        "label": "StoreRingVideos",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "4d48c9033c4035b5",
        "type": "trigger-state",
        "z": "3eac4fdbfb24c5eb",
        "name": "",
        "server": "e593dd3.052432",
        "version": 2,
        "exposeToHomeAssistant": false,
        "haConfig": [
            {
                "property": "name",
                "value": ""
            },
            {
                "property": "icon",
                "value": ""
            }
        ],
        "entityid": "sensor.front_door_last_ding",
        "entityidfiltertype": "exact",
        "debugenabled": true,
        "constraints": [
            {
                "targetType": "this_entity",
                "targetValue": "",
                "propertyType": "property",
                "propertyValue": "new_state.attributes.recording_status",
                "comparatorType": "is",
                "comparatorValueDatatype": "str",
                "comparatorValue": "ready"
            }
        ],
        "inputs": 1,
        "outputs": 2,
        "customoutputs": [],
        "outputinitially": false,
        "state_type": "str",
        "enableInput": true,
        "x": 360,
        "y": 260,
        "wires": [
            [
                "90bc13424a5c8e74",
                "015fa448d08bd5e1"
            ],
            [
                "3dd6ff3ecb2aa5f1"
            ]
        ]
    },
    {
        "id": "90bc13424a5c8e74",
        "type": "api-call-service",
        "z": "3eac4fdbfb24c5eb",
        "name": "",
        "server": "e593dd3.052432",
        "version": 5,
        "debugenabled": false,
        "domain": "downloader",
        "service": "download_file",
        "areaId": [],
        "deviceId": [],
        "entityId": [],
        "data": "{\"url\":\"{{ state_attr('camera.front_door', 'video_url') }}\",\"subdir\":\"{{ state_attr('camera.front_door', 'friendly_name') }}/{{ now().strftime('%Y.%m') }}\",\"filename\":\"{{ now().strftime('%Y-%m-%d-at-%H-%M-%S') }}.mp4\"}",
        "dataType": "json",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "x": 710,
        "y": 220,
        "wires": [
            [
                "31e9b02d50f76b7e"
            ]
        ]
    },
    {
        "id": "31e9b02d50f76b7e",
        "type": "debug",
        "z": "3eac4fdbfb24c5eb",
        "name": "debug 1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 940,
        "y": 200,
        "wires": []
    },
    {
        "id": "015fa448d08bd5e1",
        "type": "debug",
        "z": "3eac4fdbfb24c5eb",
        "name": "debug 2",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 600,
        "y": 140,
        "wires": []
    },
    {
        "id": "3dd6ff3ecb2aa5f1",
        "type": "debug",
        "z": "3eac4fdbfb24c5eb",
        "name": "debug 3",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 660,
        "y": 320,
        "wires": []
    },
    {
        "id": "e593dd3.052432",
        "type": "server",
        "name": "Home Assistant",
        "addon": true
    }
]

There is an open issue with the ding state not changing. Last_ding should work but it typically is delayed.

1 Like