Reolink POE IP Camera Setup

Does anyone have a way to be able to cast these Reolink Cameras to a google nest hub display reliably and without any significant lag?


use this layout, but replace camera with your one of course, make sure you select the same items

If you buffer the feed through HA there will always be the lag. It comes from the way things work under the hood. I don’t know how to explain it I’m details.

Use HA to ask Google to stream it directly from the camera. Add the camera to Google as well.

Streaming from Google Home directly is the worst. up to 15 second delay from live feed is atrocious. 1 - 2 seconds is acceptable. Has anyone had any luck using WebRTC?

Web rtc is the way to go for minimal lag

Have you got it working with Reolink cameras and a google nest display?

I finally succeeded in having binary sensors working for people and vehicle detection, with my AI cameras.
My configuration is 6 RLC-810A without NVR; each of those has some binary sensors associated (people and car detection) and they are all used by a custom integration named “alarmo”, so they can be used to trigger an alarm when it is armed. This means that you can get notifications only when the alarm is armed (so normally when you are away). [One of the most tedious thing about the reolink app is that you can’t really use notifications for outdoor cameras of you house, unless you enable/disable notification of all the camera every time you leave the house - if you keep them enabled all the time, you start receiving tons of notification when you are at home]

I haven’t been lucky with the [reolink_dev] integration, so after test I ended up with this working configuration (I share it in order to recap for the others):

binary_sensor:
  - platform: rest
    name: CAM1 - generic motion detection
    resource: http://192.168.1.51/cgi-bin/api.cgi?cmd=GetMdState&rs=&user=admin&password=mySuperPassword
    method: GET
    value_template: '{{ value_json[0].value.state }}'
    scan_interval: 2
    device_class: motion

  - platform: rest
    name: CAM1 - person detection
    resource: http://192.168.1.51/cgi-bin/api.cgi?cmd=GetAiState&rs=&user=admin&password=mySuperPassword
    method: GET
    value_template: "{{ value_json[0].value.people.alarm_state }}"
    scan_interval: 2
    device_class: motion

  - platform: rest
    name: CAM1 - car detection
    resource: http://192.168.1.51/cgi-bin/api.cgi?cmd=GetAiState&rs=&user=admin&password=mySuperPassword
    method: GET
    value_template: "{{ value_json[0].value.vehicle.alarm_state }}"
    scan_interval: 2
    device_class: motion


The 3 binary sensors are:

  • generic motion detect (I don’t use it)
  • people detect
  • car detect

You have to duplicate this entries for each of the camera you have, changing the IP properly.
NOTE: the fields in the JSON response has been renamed at some point by reolink engineers; be sure to be on the latest camera firmware (in my case: v3.0.0.494).

Now for the live view I’ll test Web RTC.

4 Likes

now to figure out a button to make a on off switch for the white leds on the 810a :stuck_out_tongue:

Just to share my findings with RLC 510 (WA) and AI detection. After installing the cameras some weeks ago, I noticed that the reolink_dev integration started to expose the person/vehicle/pet AI detection, I think those sensors were not there when I first installed it and set up the cams (or maybe they were there but not working). In any case, I started to experiment, I have a few light automations based on the cameras’ motion detection, that were getting tons of false positives due to bugs at night.

I was reading here about some people getting AI events with the integration, and others doing aggressive REST polling continously etc. The AI events were not working with any of my cams and I thought that aggressive cam polling wasn’t a great approach - but I also noticed that the cams where claiming to be running the “latest firmware version” when checking with the android app but that version was from January this year, which was weird.

Long story short, the firmware version checker in the cams wasn’t working at all. I realized I could download a far newer firmware release, and update the cams via the web interface (the android app would refuse to update the cams either manually or automatically).

After upgrading the cams manually to version 3.0.0.494, the AI binary sensors from the integration started to work. I could then crank up the sensitivity of the detection and fire the light automations based on person detection only. This seems to work pretty well for my purposes. No more lights turning on in the middle of the night :slight_smile:, and fairly quick lights turn-on when stepping outside to the backyard or approaching the garage door.

These sensors are clearly not reliable enough for firing a true alarm/siren, but for controlling lights they do fit the bill quite well.

2 Likes

I was able to get this working as well. I had to do a manual firmware update. Via the app did not work. It said that the device is already to the latest firmware same when using the web client’s auto update. I needed to download the latest version of firmware and do it manually. Cameras are not detecting motion in home assistant but I do agree that it has some delay. maybe as long as 15-30 sec is not more.

Hi! A couple of questions to you. I’m really excited that you got this to work. I’ve been drooling on a reolink camera or 3 for a long time now.

  1. Do you store video 24/7, do you use a nvr software for this?
  2. I like the alarmo idea, both for night time automatic at 22:00 and also when no one is home. Can you push video to a server based on human/vehicle detection?
  3. HA does have a lag when it comes to video streams, at least for one camera I tested. Would it be possible for HA to push notifications to my phone, that could display the human detected video-clip? Without any hard lag? If not,
  4. can HA request to open the Reolink app for viewing that clip?

Thanks again,

I can speak for question 4 about opening the reolink app from a notification, and can confirm you can do that on Android, but not IOS i beleive. I have a snapshot that is captured when person is detected, with an actionable notification that has an option to open the reolink app and it works well

2 Likes

for question number 3:
i am using the picture option:

service: notify.user
data:
  data:
    photo:
      - caption: Voordeur geopend
        url: >-
          http://192.168.1.101/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=AfrrF3Q6AeaeLoi4&token=08daa727ec3dc85&user=hassio&password=Hassio
  message: Voordeur geopend
  title: Voordeur geopend

according to the description you can also change this into video:

automation:
  - alias: Notify Mobile app attachment
    trigger:
      ...
    action:
      - service: notify.mobile_app_<your_device_id_here>
        data:
          message: "Something happened at home!"
          data:
            # an example of an absolute url
            image: "https://github.com/home-assistant/assets/blob/6a407898bd8ae80eb83634ffddb0d5ebdde95957/logo/logo.png?raw=true"
            # example of a relative url
            image: "/media/local/image.png"
            # the same works for video
            video: "/media/local/video.mp4"
            # and for audio
            audio: "/media/local/audio.mp3"

the only question is how to get the right mp4 name in there :wink:

3 Likes

Hi all
After upgrading firmware RLC 510 (WA) and after setting up nginx for local http the reolink_dev works quite well for me. Have now many automations based on detection. However some Issues I found and also I miss some documentation to some settings.
Like many of you I’m mainly interested in Person detection only, so I setup Email options to send Person detection only.
I wanted to use the Email-switch to deactivate mail during Day. However If I switch via HA from off to on again, settings are changed to “Any Motion” with all timeslots disabled.

Some question about the setup, I didnt find explanations about an option.

  • For what ist the Timeout slider ?

It took me also a while to find out that the files seen in the Media Browser are mounted from the Camera. (was initially searching the entire HA for the files… :woozy_face:)

All in all a brilliant work a good integration makes Reolink cameras even more valuable
Thanks

Looking to see if anyone had any luck controlling the Siren on RLC-811A et al? This is as far as I got:

curl -Lk -X POST 'https://IP_ADDR/cgi-bin/api.cgi?user=USER&password=PASSWORD' -d '[{"cmd":"AudioAlarmPlay","param": {}}]'
[
   {
      "cmd" : "AudioAlarmPlay",
      "code" : 1,
      "error" : {
         "detail" : "param error",
         "rspCode" : -4
      }
   }
]

I clearly need to provide arguments to this call that are missing. I don’t know which those might be or how to figure them out. I searched the camera firmware for AudioAlarmPlay using strings, hoping that would reveal some more about possible arguments, but that didn’t give me any hits. Looking at the strings output, the firmware is clearly scrambled somehow.

Same research here… Did you find anything about the post body to play the siren?

Nope, sadly not. The only resource I was able to find was this french speaking forum mentioning the command:

I do not speak french, but if Google translate is correct they don’t have any more details than the command name itself either.

I was also able to find a few (apparently) leaked internal Reolink API docs that describe most of the API surface including arguments. However, AudioAlarmPlay does is not listed on them. They seem to be a little older and AudioAlarmPlay may have been a more recent addition (I think their older cameras do not have any sirens).

It’s very disappointing that Reolink didn’t open these APIs publicly. I’m trying some of the common parameters (https://home-cdn.reolink.us/wp-content/uploads/2021/05/070123211620350601.5874.docx) but still nothing…

Some ideas I had what the parameters might be related to:

  • Volume
  • Duration or how long to play for
  • alarm sound / audio sample to play

I haven’t done a very thorough exploration of those yet though. The mobile app has an option to sound the alarm, which most likely calls into this API. Maybe there’s a way to reverse engineers this through the mobile app somehow.