Reolink: How do I create a home assistant notification with a link that opens the reolink camera app?

Hi All,

It seems I have the latest vevrsion of the android app, and the notification still seems to work for me:

Note: this is with a NVR

notification_icon: mdi:doorbell-video
ttl: 0
priority: high
image: >-
  http://{{ IP HERE }}/cgi-bin/api.cgi?cmd=Snap&channel=0&rs={{ ID }}&user={{ USERNAME }}&password={{ PASSWORD HERE, No longer than 8 chars? }}
actions:
  - action: Remind
    title: Ignore me
    icon: sfsymbols:xmark
    destructive: true
clickAction: >-
  intent:
  #Intent;launchFlags=0x14000000;component=com.mcu.reolink/com.android.bc.login.WelcomeActivity;S.UID={{ UID }};S.ALMTIME={{now().isoformat()}};S.ALMNAME=Detection;S.DEVNAME={{ChannelName}};S.ALMTYPE=PEOPLE;S.ALMCHN=1;end

Replace all the {{}} with your own data ofcourse :slight_smile:

3 Likes

Very enoying, was running into the same problem.
This works but is not near as smooth as it was (really):

  • action: OPENREOLINK_IOS
    title: Reolink
    icon: sfsymbols:video
    url: https://apps.apple.com/nl/app/reolink/id995927563

Hi, is this the only/right way to open the app on iOS?
It seems to me that by opening a public url, there could be a lot of delay.

I hope it’s not because this is UX/UI hell :slight_smile:

Does this actually open the app directly for you? Using the AppStore url just opens the AppStore for me on the Reolink page but then I have to tap Open there which is another step.

I got mine to work somewhat better by using a Shortcut:
url: "shortcuts://run-shortcut?name=OpenReolink"

Just made a shortcut called OpenReolink that just launches the app.
It does quickly show the Shortcuts app between tapping the notification and seeing the Reolink app, but it’s pretty quick.

Definitely still bad UX and they need to add the URL schemes back in.

for the iOS boys and lads, try this link in your notification automation:

url: https://Reolink.com/ulink

This directs me instantly in the Reollink app and opens the camera feed, even if I quit the app in the background only if the app is not running or active in the background anymore. If you recently used the app, then the link will open the app in this last state.
But I have to say at this moment I only use one Reolink Camera, so there is nothing else in the App besides the Home Hub, my Doorbell and a Chime. I don’t know how that link will work, if you have multiple Reolink Cameras running, but I’m curious to know how it’s going on your side.

Kudos goes to the people in the Reolink subreddit, where I found this link.

5 Likes

Appears I have got this to work with Home Hub, thanks! Amazing.

Confirmed! Positive recent change!


This is my (made generic) config for reference.

blueprint:
  name: Doorbell - Notify with Actions, Snapshot & Quick Replies
  description: >
    Sends actionable notifications with snapshot + quick replies
    to selected devices when the doorbell rings.
  domain: automation
  input:
    doorbell_sensor:
      name: Doorbell visitor sensor
      selector:
        entity:
          domain: binary_sensor
    camera_entity:
      name: Camera for snapshot
      selector:
        entity:
          domain: camera
    notify_devices:
      name: Devices to notify
      description: Select one or more devices
      selector:
        device:
          integration: mobile_app
          multiple: true
    unlock_automation:
      name: Automation to trigger on unlock
      default: []
      selector:
        entity:
          domain: automation
    quick_reply_select:
      name: Quick reply select entity
      selector:
        entity:
          domain: select

trigger:
  - platform: state
    entity_id: !input doorbell_sensor
    to: "on"

  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: UNLOCK
    id: unlock

  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: COMING
    id: coming

  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: OPEN_DOOR
    id: open_door

  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: SNOOZE
    id: snooze

  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: CAMERA
    id: camera

action:
  - choose:
      - conditions:
          - condition: trigger
            id: "0"   # doorbell ring
        sequence:
          - repeat:
              for_each: !input notify_devices
              sequence:
                - service: notify.mobile_app_{{ device_id }}
                  data:
                    title: 🔔 Someone is at the door!
                    message: Hold to see options...
                    data:
                      image: /api/camera_proxy/{{ input.camera_entity }}
                      icon_url: /local/Bell-Icon.png
                      sound: ding-dong.wav
                      critical: 1
                      volume: 0.2
                      actions:
                        - action: UNLOCK
                          title: Unlock
                          destructive: true
                          icon: sfsymbols:lock.open
                        - action: COMING
                          title: I’m coming
                          icon: sfsymbols:person.fill.checkmark
                        - action: OPEN_DOOR
                          title: I’ll open the door
                          icon: sfsymbols:door.left.hand.open
                        - action: URI
                          title: Open Dashboard
                          uri: /dashboard-mobile/
                          icon: sfsymbols:rectangle.grid.2x2
                        - action: SNOOZE
                          title: Snooze
                          icon: sfsymbols:bell.slash
                        - action: CAMERA
                          title: Camera
                          icon: sfsymbols:camera

      - conditions:
          - condition: trigger
            id: unlock
        sequence:
          - service: automation.trigger
            target:
              entity_id: !input unlock_automation
            data:
              skip_condition: true

      - conditions:
          - condition: trigger
            id: coming
        sequence:
          - service: select.select_option
            target:
              entity_id: !input quick_reply_select
            data:
              option: "I’m coming"

      - conditions:
          - condition: trigger
            id: open_door
        sequence:
          - service: select.select_option
            target:
              entity_id: !input quick_reply_select
            data:
              option: "I’ll open the door"

      - conditions:
          - condition: trigger
            id: snooze
        sequence:
          - service: automation.trigger
            target:
              entity_id: automation.doorbell_decline
            data:
              skip_condition: true

      - conditions:
          - condition: trigger
            id: camera
        sequence:
          - service: notify.mobile_app_{{ device_id }}
            data:
              message: Camera requested
              data:
                action_data:
                  latitude: "{{ state_attr('person.generic_person','latitude') }}"
                  longitude: "{{ state_attr('person.generic_person','longitude') }}"

mode: single
2 Likes

This blueprint works great! I’m new to Reolink cameras and have one of their hubs and was so happy to find this. One question though…When I first loaded the Blueprint and made the automation, I did not get a notification. I had to add the following to my configuration,yaml to make it work:

allowlist_external_dirs:
- /media/reolink
-
Was this the correct thing to do or should I do something else?

Thank you!

I tried this blue print as well, but got the following error.
I added the /media/reolink to my configuration.yaml file.

Any ideas?

Error: Template rendered invalid service: notify.mobile_app_<function device_id at 0x7f4900cdfce0>

I’m facing the same issue. @rliessum does it work for you on iOS out of the box from the blueprint you posted here?

Hey @reinaldoarrosi this doesn’t seem to work anymore with the 4.58 update of the Reolink Android app.

1 Like

I can confirm this is broke. Something must have changed with the Reolink app on Android v4.58.0.4 (at last at time of writing).

Watching this thread to see if anyone else might a fix?

I’m also having issues with my previously working notifications. The clickAction no longer opens the camera stream in the Reolink app, but just opens the App. App version 4.58.0.4.20251127

clickAction: >-
  intent://scan/#Intent;scheme=reolink;package=com.mcu.reolink;action=android.intent.action.VIEW;S.UID=xxxxxxxxxxxxxxxx;S.DEVNAME=NVR;S.ALMTYPE=PEOPLE;S.ALMCHN=1;S.ALMTIME={{now().isoformat()}};S.ALMNAME=Detection;end

Thanks to starkillers inside contacts we found the solution:

1 Like

Thanks for noting this here!

I’m not sure I’ve got the change working. What I used to have:

intent://scan/#Intent;launchFlags=0x14000000;component=com.mcu.reolink/com.android.bc.login.WelcomeActivity;S.UID=HIDING_UID;S.ALMTIME={{now().isoformat()}};S.ALMNAME=Detection;S.DEVNAME=NVR;S.ALMTYPE=PEOPLE;S.ALMCHN=1;end

what I have now:

intent://scan/#Intent;scheme=reolink;package=com.mcu.reolink;launchFlags=0x14000000;action=android.intent.action.VIEW;S.UID=HIDING_UID;S.DEVNAME=NVR;S.ALMTYPE=PEOPLE;S.ALMCHN=1;S.channelid=1;S.ALMNAME=Detection;S.ALMTIME={{ (now().timestamp()) | int }};S.pushVersion=v2;end

Are ALMCHN and channelid the same value?

Update to add: I’m referencing my NVR.

Yes, what I’m using now is very similar to yours and its working perfectly for me (I also use a NVR) - I don’t see anything obviously wrong with your new URI :thinking:

I’m not sure if channelid is needed for NVRs but it was mentioned in one of the new examples from reolink so I added it just in case (with the same value mask as ALMCHN)

Any chance to have the equivalent for iOS notifications ?

1 Like

This works fine for me on android:

clickAction: >-
  intent:
  #Intent;scheme=reolink;package=com.mcu.reolink;action=android.intent.action.VIEW;S.UID=YOURUID;S.pushVersion="v2";S.DEVNAME=NVR;S.ALMTYPE=PEOPLE;S.ALMCHN=1;S.ALMTIME={{(now().timestamp()) | int }};S.ALMNAME=Detection;end

If your doorbell is not on channel 1 of your NVR change:
ALMCHN=1 to any channel number.