Setting Up Arlo Cameras in Home Assistant

If you are using Arlo Cameras and running Home Assistant you need the Arlo Camera Integration from the Home Assistant Community Store. 

Setting it up is easy, and it really improves the Home Assistant integration. This guide is really meant to be a companion to the video I posted over on Youtube

So jump over to Youtube and watch it if you haven’t already to make sure you have the Home Assistant Community store and the Arlo Integration installed. 

Once you have both installed and you are ready to configure we can get started. 

The first thing you will need to do is jump into your configuration.yaml file. Unfortunately, you can’t set up this integration via the UI yet. 

The first thing you need to add is the AARLO platform. Pay attention to the spelling. There is a built-in Arlo integration and so the AARLO one is the HACS one. 

  username: !secret arlo_user
  password: !secret arlo_pass
  db_motion_time: 30
  db_ding_time: 10
  recent_time: 10
  last_format: '%m-%d %H:%M'
  refresh_devices_every: 2
  verbose_debug: True
  tfa_host: ''
  tfa_username: !secret GV_USER
  tfa_password: !secret GV_PASS 

This sets up the main part of the integration. 

Username and password will be the login you use for the Arlo app on your phone. I would create a new account and share your devices with it. Otherwise every time you login into your app you will kick Home Assistant out and vice versa. 

The other settings here I just grabbed from the integration docs. The important part is the lines that start with tfa. This is for all of you using two-factor authentication. 

Arlo sends an email with a code when using tfa. So if you are sending that to a Gmail account you can simply provide the login to the Gmail account and the integration will log in and grab that code. 

You will also need a Camera section. This can go in your configuration.yaml. This part sets up the actual camera that can be displayed.

  - platform: aarlo
    ffmpeg_arguments: '-pred 1 -q:v 2'

The next part you need is the sensors. 

This integration provides a ton of sensors. Both sensor sensors and binary sensors. 

If you are using a single file for your config then these go under the respective heading. 

  - platform: aarlo
    - last_capture
    - total_cameras
    - battery_level
    - captured_today
    - signal_strength

If you are using a sensor.yaml, then omit the sensor: line

Likewise, for binary sensors, omit the binary_sensor: line if you are putting this is in a binary_sensor.yaml file. 

  - platform: aarlo
    - motion
    - sound
    - ding

And if you want to be able to automate the mode changes then you will need the alarm panel configuration as well. 

# Arlo Integration
  # Uses the custom arlo integration found in HACS
  - platform: aarlo
    home_mode_name: home
    away_mode_name: Armed

Home mode name should be the name of the mode you want to use when you are home. And away mode for when you are away. 

I created a home mode that changes which cameras are watching and recording for motion. The names of the modes you use here need to match the names in the Arlo app. And I believe the names are case-sensitive. 

After you get the configuration updated you will need to reboot. 

After that, we can move to the fun stuff. 


First up, automating the mode changes. I have the camera mode change with my security system. When my Home Assistant security system is Armed, then my Arlo cameras are armed. And when it is disarmed, Arlo switches to home mode. 

To do that I leverage the alarm_control_panel.aarlo_set_mode service. 

To change the mode to Armed just drop the following action in the automation of your choosing:

- service: alarm_control_panel.aarlo_set_mode
    entity_id: alarm_control_panel.aarlo_ah_base_station
    mode: 'Armed'

Just change the entity id to match your Arlo control panel. And set the mode to the one you want to use. Anytime you want to change the mode this is the action you use. 

If you want Home Assistant to notify you of motion then you will want to use the binary sensor. 

For example, you could do something like this:

- id: motion_detected_front_door
    alias: Motion Detected Front Door
    - platform: state
      entity_id: binary_sensor.aarlo_motion_front_door
      from: 'off'
      to: 'on'
    - service: script.status_annc
        who: '{{ states.sensor.room_presence.state }}'
        call_interuption: 1
        speech_message: >
          {{ [
           "I have detected someone at the ",
            "Someone appears to be at the ",
            "There is a person at the ",
            "My sensors are picking up presence at the ",
            "We appear to have a visitor at the ",
            "My sensors have detected a meat popsicle at the "
           ] | random }}
           {{ trigger.to_state.attributes.friendly_name }}.      
    - delay:
        minutes: 2
    initial_state: true

Here I am triggering on the motion at the front door, and then having home assistant make a TTS announcement. 

I have the delay on there to keep the announcement from happening too quickly because people tend to ring the doorbell and then stand around before giving up and leaving. 

But you have quite a few other sensors you could leverage as well. Just drop them in your automations as needed. 


If you will want to add these cameras to your Lovelace UI. I suggest using the Arlo Custom Glance card that comes with integration. It provides a lot of additional features you don’t get with the built-in integration. 

To use the custom card simply switch to edit mode in your Lovelace UI and add a manual card. Then copy and paste in the YAML:

entity: camera.aarlo_front_door
image_click: play
name: Front Door
  - motion
  - sound
  - snapshot
  - battery_level
  - signal_strength
  - captured_today
  - image_date
top_date: false
top_status: false
top_title: false
type: custom:aarlo-glance

The only thing you need to edit is the name of the entity you want to display. 

This card allows you to click on it and see the live feed as well as navigate the library of recorded videos and watch those as well. 

Cool Stuff

AS you may or Amy not know, I’m not a fan of looking at dashboards, so I tend to look for solutions where Home Assistant can let me know when my attention is needed. 

And one of those ways is by keeping track of how many times the motion sensor has been tripped. 

To do that I set up a history stats sensor:

  # For tracking number of times motion is detected 
  # at front door in last 7 days       
  - platform: history_stats
    name: Front Door Motion
    entity_id: binary_sensor.aarlo_motion_front_door
    state: 'on'
    type: count 
    end: '{{ now() }}'
      days: 7

You would drop this under the sensor: heading or in a sensor.yaml file. Or even a package if you use packages. 

This sensor grabs a count of every time the binary motion sensor switches to on for the last seven days. 

But that isn’t all that useful. So I use the Utility Meter integration to get me a daily sensor.

  # Use the 7 day history of motion at front door
  # to get daily motion.
    source: sensor.front_door_motion
    cycle: daily

This sensor gets me a live daily count each day and resets at midnight. That way I know exactly how many times motion was detected during the day. Which is perfect for a morning announcement or briefing. 

For example, if Home Assistant lets me know when I wake up that there was motion 7 times from midnight until 7 am then I know I need to go look at the recorded video. 

And that is when the house starts to feel smart. Anyway, that’s all I have for this post. 

Until next time, Automate the Boring Stuff.

21 thoughts on “Setting Up Arlo Cameras in Home Assistant”

  1. I am having issues with the 2 factor authentication and my the Google account I made up for Home Assistant purposes. I’d shut off 2FA on Arlo, but that’s no longer an option. The notification I’m receiving from HA is:

    “aarlo Component Setup
    Error: authentication failed
    If error persists you might need to change config and restart.”

    I think Google doesn’t want to let HA log in. I also tried a 2nd party app password with my google account, but that didn’t seem to work either. Anyone else had any success with this?

    1. I think I have seen that error before, but I dont remember if I did anything to solve it. But I do have allow less secure apps access turned on for the account that my 2fa email goes to. I think I had to do that for a script I was using at one time. So you might try that. Its under the security in your google account settings.

  2. I think I’ll give this a try over the weekend if I get time.

    One thing I am looking to do is find out if it is possible for HASS to play some music out of a Google Nest Mini speaker when the Arlo Doorbell ring is triggered.

  3. was working for a few days, not I can’t view the feed. I can see battery level, etc, but not the camera feed. I am getting this error: Received invalid command:

    Logger: homeassistant.components.websocket_api.http.connection
    Source: components/websocket_api/
    Integration: Home Assistant WebSocket API (documentation, issues)
    First occurred: 2:35:50 PM (4 occurrences)
    Last logged: 2:43:19 PM

    [140405003448224] Received invalid command: aarlo_library
    [140404969761712] Received invalid command: aarlo_library

    1. Not sure on the error. But I think I forgot the Camera entity setup in the video, but it is in the YAML.

      – platform: aarlo
      ffmpeg_arguments: ‘-pred 1 -q:v 2’

      Add that restart Home Assistant and see if it comes up..

    1. I think I forgot the Camera entity setup in the video, but it is in the YAML.

      – platform: aarlo
      ffmpeg_arguments: ‘-pred 1 -q:v 2’

      Add that restart Home /Assistant and see if it comes up..

  4. I can’t get the cameras to work at all. I can get signal strength, battery levels, etc. but no camera feed, or cameras in the entities section, just the rest of the the sensors. And I have no errors at all in the logs.
    I’ve been working on this for about 5 hours now.

    1. I think I forgot the Camera entity setup in the video, but it is in the YAML.

      – platform: aarlo
      ffmpeg_arguments: ‘-pred 1 -q:v 2’

      Add that restart Home Assistant and see if it comes up..

  5. Excellent article thanks. I’ve managed to get it installed and working thanks to this. However, I’ve got 6 cameras and only the first 5 are detected. I pay for an Arlo subscription to allow more than 5 cameras and they all work nicely through the native Arlo interface. Is there a limit in aarlo that stops it detecting more than 5 cameras ?

  6. Can’t seem to get this to work at all, keep getting the following when checking configuration…

    Configuration invalid

    Error loading /config/configuration.yaml: Secret … not defined

    1. I would make sure that secret is in your secrets.yaml. And in your configuration.yaml its defined as:

      So in secrets.yaml you would have:

      secret_email: ‘’

      and in configuration.yaml reference it like:

      email: !secret secret_email

  7. Help, please. I have this:

    alias: Door Motion Light On
    description: ”
    – platform: state
    entity_id: binary_sensor.aarlo_motion_doorbell
    to: ‘on’
    from: ‘off’
    condition: []
    – service: light.turn_on
    color_temp: 153
    brightness_pct: 100
    device_id: 78a422b019b3a399f8734b0b4ff2b954
    mode: single

    and nothing happens when the motion sensor detect anything on my doorbell. What am I doing wrong? Log doesn’t show any errors.

      1. binary_sensor.aarlo_motion_doorbell doesn’t register anything. I think I need to use sensor.aarlo_recent_activity_doorbell where the states are True and False. Gonna test.

  8. Im quite new to this and get this error when restarting HA, any ideas? copied and pasted all the lines from above into the Config file.

    aarlo Component Setup
    Error: session start failed
    If error persists you might need to change config and restart.

    1. I have been noticing this a lot lately too. I see quite a few people talking about it on the pyarlo project on GitHub, and saying hey think started around Feb 17th. I am trying the user_agent: linux trick to see if that makes a difference.

  9. Hello, thanks for the great video and blog post.
    While installing this integration, I ran into a common issue and I’d like to share how I resolved the problem…

    * 2fa component setup failed

    (this explanation assumes you’ve used a google account to create your Arlo account)

    To resolve this, first check the configuration.yaml file – if you copied this from the blog post above, you would have also copied the ‘ symbols around the imap server. These need to be removed otherwise the setup won’t find Google’s imap server.

    Go to and follow Google’s instructions on how to enable imap on your Gmail account.

    Allow less secure apps to access your Gmail account:

    Unlock Captcha:

    — if its still not working, visit the devs GitHub troubleshooter:

    * One of the steps described involves editing /etc/hosts/

    To do this, access the home assistant command line, either through ssh or by plugging a keyboard and monitor directly into your host device (in my case, this was a Raspberry Pi 4)

    You know you’re in the right place if you see the home assistant banner picture made up of ascii characters, followed by some key info about your installation.

    Enter the following commands, followed by pressing enter on the keyboard:

    cd /
    cd etc
    vi hosts

    Here you’ll find your hosts file. To start editing, you’ll need to type the letter i followed by enter. When you’re finished, press the Escape key on the keyboard, then type ZZ to save and exit the file. (for more info on how to use the editor interface, search Google for ‘VI editor commands’.) (Others may recommend using “sudo nano /etc/hosts/” instead to edit the “hosts” file, but this command did not work for me)

    On a separate note, make sure you add usernames and passwords into the secrets.yaml file otherwise the config won’t work.

    The following is a copy of my configuration.yaml and secrets.yaml files (with my sensitive info removed!)
    Feel free to copy/paste, but be sure to substitute my secrets (login credentials) for yours.


    # Aarlo
    username: !secret arlo_user
    password: !secret arlo_pass
    db_motion_time: 30
    db_ding_time: 10
    recent_time: 10
    last_format: ‘%m-%d %H:%M’
    refresh_devices_every: 2
    verbose_debug: True
    tfa_source: imap
    tfa_type: email
    tfa_username: !secret GV_USER
    tfa_password: !secret GV_PASS

    – platform: aarlo
    ffmpeg_arguments: “-pred 1 -q:v 2”

    – platform: aarlo
    – motion
    – sound
    – ding
    – connectivity

    – platform: aarlo
    – total_cameras
    – last_capture
    – recent_activity
    – captured_today
    – battery_level
    – signal_strength
    – temperature
    – humidity
    – air_quality


    # Aarlo App Details
    arlo_user: Your Arlo Email Address
    arlo_pass: Your Arlo Password

    # Aarlo TFA Details
    GV_USER: Your Gmail Address
    GV_PASS: Your Gmail Password

    As with everything, make sure you the Configuration Validation tool in Home Assistant to check for any errors in any of your .yaml files before proceeding to restart home assistant. (A restart is required to apply the changes to the .yaml files)

    Though this is what worked for me, it might not work for you, however hopefully it points you in the right direction!

Leave a Reply