Giter Club home page Giter Club logo

hass-aarlo's Introduction

An Arlo Home Assistant Integration

Aarlo is a custom component for Home Assistant, that provides access to the Arlo system.

Aarlo provides, amongst other things:

  • Access to cameras, base stations, sirens, doorbells and lights.
  • Asynchronous, almost immediate, notification of motion, sound and button press events.
  • Ability to view library recordings, take snapshots and direct stream from cameras.
  • Tracking of environmental stats from certain base station types.
  • Special switches to trip alarms and take snapshots from cameras.
  • Enhanced state notifications.
  • Media player support for select devices.

Table Of Contents

Introduction

Aarlo is a custom component for Home Assistant, that provides access to the Arlo system.

The integration uses the APIs provided by the Arlo Camera Website and there are several limitations to this. See the Known Limitations section for further details.

If you encounter an issue then look at the FAQ section to see if it has a known problem and has a workaround or fix. If not, look at the Bug Report section for information on how to generate debug logs and create a debug report.

The advanced README is here

The old README is still available here.

Notes

This document assumes you are familiar with Home Assistant setup and configuration.

Wherever you see /config in this document it refers to your Home Assistant configuration directory. For example, for my installation it's /home/steve/ha which is mapped to /config by my docker container.

Wherever you see Arlo it refers to any piece of the Arlo system.

Wherever you see Aarlo I'm referring to this component.

Thanks

Many thanks to:

  • Pyarlo and Arlo for doing all the hard work figuring the API out and the free Python lesson!
  • sseclient for reading from the event stream
  • Button Card for a working Lovelace card I could understand
  • JetBrains for the excellent PyCharm IDE and providing me with an open source licence to speed up the project development.

JetBrains

See Also

Aarlo also provides a custom Lovelace Card, which overlays a camera's last snapshot with its current status and allows access to the cameras recording library and live-streaming.

If you aren't familiar with Home Assistant I recommend visiting the Community Website. It's full of helpful people and there is always someone who's encountered the problem you are trying to fix.

Requirements

Aarlo needs a dedicated Arlo account. If you try to reuse an existing account, for example, the one you use on the Arlo app on your phone, the app and this integration will constantly fight to log in. This is an Arlo limitation.

The dedicated Aarlo account needs Allow Access Rights to be enabled to set the alarm levels and read certain status values.

See the Arlo documentation for further instructions.

You need to enable two factor authentication. Set up an email address to receive the verification code. Aarlo supports other TFA mechanisms but email is the easiest to use. See the Two Factor Authentication section later for more details.

Installing the Integration

You only need to use one of these installation mechanisms. I recommend HACS.

HACS

hacs_badge

Aarlo is part of the default HACS store. If you're not interested in using development branches this is the easiest way to install.

Manually

Copy the aarlo directory into your /config/custom_components directory.

From Script

Run the installation script. Run it once to make sure the operations look sane and run it a second time with the go parameter to do the actual work. If you update just rerun the script, it will overwrite all installed files.

install /config # check output looks good  
install go /config

Adding and Configuring the Integration

However you install the source code you know need to add the integration into Home Assistant. From the home page select Settings -> Devices & Services, from here click ADD INTEGRATION and search for Aarlo. On the first screen enter your account details.

The Image View

Field Value
Username Your Arlo account username
Password Your Arlo account password
Two Factor Mechanism Select IMAP
TFA Username The email account you registered for TFA
TFA Password The email account password
TFA Host The IMAP server to look for the email on

If you leave Use aarlo prefix checked all your devices will be of the format type.aarlo_*.

Click SUBMIT. The integration will log into Arlo and retrieve the list of devices associated with it. If it all works you will be able to assign the devices to rooms on the the next screen.

The Image View

Further Configuration

You can fine tune the settings further. From the Integration page click CONFIGURE.

Alarm Setting Screen

Fine tune the alarm settings:

The Image View

Field Value
Alarm/disarm Code Enter a code if needed, otherwise leave as default
Disarmed mode name Change if your Arlo account has a custom disarmed name
Home mode name Change if your Arlo account has a custom home mode name
Away mode name Change if your Arlo account has a custom away mode name
Night mode name Change if your Arlo account has a custom night mode name
Arm code required Select if Alarm/disarm code is needed to arm
Disarm code required Select if Alarm/disarm code is needed to disarm
Trigger time How long to wait when arming
Alarm volume Default volume for the alarm sirens

Night Mode; Arlo will not have one of these unless you create it

If you need to clear the alarm code enter no code needed. I will look to make this accept a blank entry...

Binary Sensors Screen

Determine which binary sensors are available:

The Image View

Field Value
Sound detection Enable microphones on cameras
Motion detection Enable motion detection on cameras
Doorbell presses Enable doorbell buttons
Cry detection For Arlo baby, enable cry detection
Device connectivity Be notified when a device disconnects
Open/Close sensors Enable door and window sensors
Brightness sensors Enable light detection
Tamper detection Enable notification if device is opened
Leak detection Enable leak monitoring devices

Not all sensors are available on all devices.

Sensors Screen

The Image View

Determine which sensors are available:

Field Value
Last capture time A per camera sensor indicating when the last recording was made
Total number of cameras detected Integer value of camera count
Recent activity detected Was the camera recently active
Number of videos/snapshots captured today Integer value of recording made today
Device battery level Percentage of battery left
WiFi signal strength WiFi strength, has a range of 1 to 5
Room temperature Room conditions
Room humidity Room conditions
Air quality Room conditions

Not all sensors are available on all devices. And recent activity should probably be a binary_sensor.

Switches Screen

Enable miscellaneous switches:

The Image View

Field Value
Switches to turn sirens on Provide a switch to turn individual sirens on
A switch turn all sirens on Provide a switch to turn all sirens on
Allow sirens to be turned off Allow sirens to be turned off by switch
Siren switch volume Default volume level, from 1 to 10
Siren Switch duration Default time to run the alarm
Switches to request cameras take a snapshot Provide a switch to take a camera snapshot
Camera snapshot timeout How long to wait for badly behaved cameras to finish
Switches to silence doorbell chimes Provide a switch to silence doorbells.

Coming From Earlier Versions

If you are coming from an early there are several things to note:

  • Your configuration will be imported into the config flow mechanism. All your devices will appear on the integration page.
  • You will not be able to change your login or TFA settings without deleting the Intergration.
  • You will be able to fine tune with the Further Configuration settings.
  • You can comment out the original yaml entries.
  • The import enables the prefix with _aarlo to keep the naming identical.
  • All component services are now in the aarlo domain.
  • The pyaarlo component is now installed via pip and not included with the Integration.
  • You may experience log in difficulties, if you do try deleting .aarlo/session.pickle.

I wasn't willing to move some of the more esoteric configuration items into the config flow mechanisms, if you had any configured they will appear in the /config/aarlo.yaml file. See here for more on these options.

Advanced Configuration

Back Ends

Arlo will use either SSE or MQTT to signal events to Aarlo. I'm not fully sure of the mechanism which determines which gets chosen but I know adding or removing a user_agent will switch between the two.

How it Works

Arlo recently updated the response they send to the session/v3 API requests to indicate which back end to choose. Aarlo will parse that out when using auto.

# This is the MQTT backend. We use the host and port.
'mqttUrl': 'ssl://mqtt-cluster-z1.arloxcld.com:8883'

# This is the SSE backend. We use a fixed host and port.
'mqttUrl': 'wss://mqtt-cluster-z1.arloxcld.com:8084'

If you enable verbose debugging your should be able to find this value in the Home Assistant logs.

Configuration

Starting with the 0.8 release Aarlo should be smart enough to work out which back end to use. But if you find yourself running into problems, like missing motion detection events or missing sensor value updates you can manually override the setting. Change this setting in /config/aarlo.yaml.

aarlo:
  # This forces the SSE backend
  backend: sse
aarlo:
  # This forces the MQTT backend
  backend: mqtt
  # These might also be needed
  mqtt_hostname_check: false
  mqtt_host: mqtt-cluster-z1.arloxcld.com
aarlo:
  # This forces Aarlo to choose
  backend: auto

Note, removing the setting is equivalent to auto.

Cloud Flare

Arlo uses Cloud Flare anti-bot protection to the Arlo website login. This service doesn't work well with the Python Requests package (or how Aarlo uses those requests, I'm not too sure).

If you see the following errors you are running into Cloud Flare issues.

2021-06-03 13:28:32 WARNING (SyncWorker_4) [pyaarlo] request-error=CloudflareChallengeError  

This problem affects me, and I'm constantly trying to refine the code.

How We Work Around This

Aarlo does several things to work around this:

  • It uses the cloudscraper module to wrap the login requests to Arlo. After the login is complete cloudscraper is not needed.
  • It mimics the official website requests as closely as possible, down to the Header level.
  • It will cache successful login credentials for up to 2 weeks so when you restart Home Assistant Aarlo won't need to login again.

Configuration

But, if you are still seeing login issues there are several configuration items you can try.

You can try a different user agent. This is configured in /config/aarlo.yaml:

aarlo:
  # Change the user agent. It can be either arlo, iphone, ipad, mac, firefox or linux
  #  or random. random will change it each time it tries to login
  user_agent: linux

  # Or use a custom user agent, everything after the ! will be used
  user_agent: !this-is-a-custom-user-agent

You can add a Source header along with the login request. I have one site that needs this and one that doesn't. I think it might be user agent related.

aarlo:
  # This adds the following header "Source: arloCamWeb"
  send_source: true

You can disable session caching with the following:

aarlo:
  # This will force a full login on every restart
  save_session: false

You can select different ecdh curves to use. This topic is out of the scope of this document, see here for an explanation.

aarlo:
  # Make this curve the first choice. You can only enter 1 choice.
  ecdh_curve: secp384r1

You can modify /etc/hosts to point to a specific Arlo web server

# Remove the # to force the request to go to a particular cloudflare server
#104.18.30.98 ocapi-app.arlo.com  
#104.18.31.98 ocapi-app.arlo.com  

Two Factor Authentication

Arlo calls this Two-step Verification. You are going to need to enable this for your Home Assistant specific account. Aarlo support IMAP and PUSH mechanisms but I recommend using IMAP, with PUSH you need to manually respond to the login request.

You will find instructions for setting up two factor authentication here Arlo provide here

You enter two factor authentication when you add the integration.

IMAP

Follow the two factor authentication instructions and add and set up an Email verification method. You can test this by logging into the main Arlo web page and making sure it sends you an email.

Application Passwords

For Gmail and Yahoo (and other web based email client) you can't log in with your usual password, you will have to create an application specific password. Explaining why this is necessary is out of the scope of this document so see the following pages.

If you find you can't log in to your IMAP account check the application password requirement.

IMAP Servers

The following servers are known to work:

Service Host Name
Gmail imap.gmail.com
Yahoo! imap.mail.yahoo.com

PUSH

Follow the two factor authentication instructions and add and set up a PUSH verification method.

Configuration

If you need to change the cipher list passed to the IMAP client you specify it with the following option. You shouldn't need to do this. see the openssl man page for more information.

aarlo:
  # specify cipher list to use
  cipher_list: "HIGH:!DH:!aNULL"

  # Use DEFAULT for the cipher list
  default_ciphers: True

Bug Reports

What to Include

If you run into problems please create a bug report, include the following information in the bug report to help debugging. If you don't I'll just pester you until you do.

  • The version of Home Assistant you are running.
  • The version of Aarlo you are running, just saying latest isn't adequate.
  • Make of cameras or device you are having problems.
  • What you were doing or expecting.
  • Include debug logs if available.

Enabling Debug

You turn on basic Aarlo debugging by changing the logging setting in configuration.yaml.

logger:
  default: info
  logs:
    pyaarlo: debug
    custom_components.aarlo: debug

You can turn on verbose debugging by enabling logging and adding the following to /config/aarlo.yaml as well. Verbose debug will generate a lot of logs so it's best to enable only while needed.

aarlo:
  verbose_debug: true

Aarlo will write the debug logs to the standard Home Assistant log file /config/home-assistant.log.

Encrypting the Output

Before you send me the debug you should encrypt it. You can encrypt your output on this web page. You can upload the file or copy and paste it into the buffer then press Submit.

This page doesn't forward automatically the output to me, so you will have to copy and paste it into a file and attach it to the bug report.

This page will obscure the logs so only I can read them, I'm the sole possessor of the private key to decrypt it, but be wary, along with serial number it might include your account and password information. You can obscure those before encrypting, I never need them.

Reverse Engineering

Figuring out what Aarlo Needs to Do

I don't own every piece Arlo of equipment so sometimes, when things go wrong or new equipment is released, I need to see what Arlo actually expects this code to send and what this code can expect back from Arlo. Aarlo simulates a web browser connection so you can find out what is expected by using the browser Developer Tools.

This instructions are for Chrome but most browsers (I hope!) have similar functionality.

  • Open your browser.
  • Go to the Arlo camera website.
  • With the Arlo website open enable you browser's developer tools. On Chrome you click the three dots in the upper right corner, then select More Tools and finally select Developer Tools. You can also use the shortcut CTRL+SHIFT+I.
  • Select the Network tab in the newly opened window.
  • Now log in to the Arlo website.

When you log in the data passed between the browser and Arlo website will start to appear, and keep appearing, in this tab. If you click on an entry under Name you can examine the packets in more detail.

  • The Headers tab shows you what was sent in the headers of the request.
  • The Payload tabs shows you what was sent in the body of the request
  • The Preview tab shows the reply sent back from Arlo.

Network TAB

If you hover over the field under name a pop up will display the full URL the request was sent to.

MQTT Stream

I need to document this.

SSE Stream

Look for a URL containing the word subscribe, this will be the even stream Arlo sends back to the web page. As you click buttons on the web page more items will appear in this list. I can use this information to determine how to parse response packets for cases I don't yet handle.

Supporting New Features

For example, Arlo creates a new device with a WOOHOO button, I don't posses such a device but you'd like the WOOHOO functionality implementing in Aarlo. What I need is the sequence of packets and their replies when you press the button. The only real way to do this is to press the button and see what new packets appear in the Name tab.

You will then need to copy and paste them into a bug report on GitHub. See the previous section on how to hide sensitive data.

FAQ

Can't I just share an account with the App

No. They spend all their timing arguing about who has control. This is an Arlo limitation.

My device doesn't appear...

Are you sure you've shared the device? Log in to the Arlo Web Page and make sure it appears there. If it does then turn on debug logs and raise a bug report with them.

I'm not getting status updates...

Make sure you have given the account you share the devices with Admin Access, it is needed for things like battery or signal strength updates.

I'm not seeing my base stations

Make sure you have given the account you share the devices with Admin Access, it is needed to share the base stations.

Are you using the new Arlo location based interface, in this case you can only arm or disarm locations and not individual devices.

Do I need a subscription

No subscription is needed to see the feeds, but you will need one to see recording.

At the time of writing (May 2024), there is no option to read local recordings. All others features works well.

Streams take a Long Time

They sure do. Arlo doesn't work like IP cameras and only records when motion is detected so asking it to start a stream involves talking to the Arlo servers that talk to the camera at your house... it can take a few seconds to get things running. Streaming works something like this:

Camera ---> Arlo Cloud Servers --> Home Assistant --> Your Home Assistant Client

The video traffic has to travel out of your house and then back into it...

Supported Devices

This is a list of devices that are known to work. Most Arlo devices will work even if not explicitly mentioned in this list although they might have limited functionality.

Model Name Features
ABC1000 Baby motion, audio, environment, cry
AVD1001 Wired Video Doorbell motion
AVD2001 Essential Video Doorbell motion, siren
AVD3001 Wired Video Doorbell HD motion, siren
AVD4001 Wired Video Doorbell 2K motion, siren
FB1001 Pro 3 Floodlight floodlight
MS1001 All in 1 Sensor motion, open, wet, tamper, temperature
VMB3010 Base Station
VMB4000 Base Station 2 siren
VMB4500 Pro Base Station siren
VMC2030 Essential Camera motion, audio, siren, spotlight
VMC2040 Essential Indoor Camera motion, audio, siren no battery
VMC3030 HD Camera motion, audio
VMC3040 Q Camera motion, audio
VMC3060 Essential Indoor Camera 2 motion, needs looking at
VMC3052 Essential XL Camera motion, audio, spotlight
VMC4030 Pro 2 Camera motion, audio
VMC4040 Pro 3 Camera motion, audio, siren, spotlight
VMC4041 Pro 4 Camera motion, audio, siren, spotlight
VMC4060 Pro 5 Camera motion, audio, siren, spotlight
VMC5040 Ultra Camera motion, audio, siren, spotlight
VML2030 Go 2 Camera motion, audio
VML4030 Go Camera motion

Known Limitations

This component was written by reverse engineering the APIs used on the Arlo Camera web page.

These are general limitations:

  • There is no Documentation; I, and others, have had to reverse engineer the protocol, and for the most part this is easy enough once I get the packets...
  • but I don't have access to all the equipment; so I rely on users to provide the device information and packets for me. The Reverse Engineering section gives you instructions on how to get these packets. Or, if you are feeling brave, you can temporarily share the device with me.
  • and Arlo likes to Change Things; this all becomes more problematic when Arlo decides to change how things work, one minute things work and the next minute things break, unfortunately it has to break before I can fix it.

These are limitations verses the website:

  • Cloud Flare; Aarlo has to bypass the 'not-a-robot' checks of Cloud Flare to login, this works most of the time but Arlo will change their back-end occasionally and break it. There are settings in the advanced configuration you can change to help with this. And yes, this can be a pain to get working.

These are limitations versus the mobile application:

  • Object Detection; the mobile application will let you know almost immediately what triggered the motion event, this is not possible with the website APIs.
  • Timeouts; the website doesn't feel like it was designed for persistent connections so Aarlo has a lot of code inside to try to mitigate this. But occasionally you might miss an event. There are settings in the advanced configuration you can change to help with this.

The last two can be summed up as if the WEB API doesn't support it, neither can the component. Bear that in mine when asking for new feature requests.

hass-aarlo's People

Contributors

andrewfoster avatar bdraco avatar bogstag avatar cameronurnes avatar charlesvestal avatar chriscarini avatar dermotduffy avatar developersteve avatar don-willingham avatar felixhaeberle avatar gkreitz avatar itssoso avatar jesserockz avatar ktibow avatar leandroissa avatar m14t avatar mastermc0 avatar modestpharaoh avatar nickm-27 avatar raelix avatar rccoleman avatar ryanwinter avatar sebr avatar siege36 avatar thedk avatar turcotmii avatar twrecked avatar wetzel402 avatar wrt54g avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hass-aarlo's Issues

Lovelace Card Stream impossible to stop on mobile devices

Not sure what happened but #85 is happening again after migrating to the HACS release. The card work properly on desktop but on mobile (and other touch devices) it is impossible to stop a camera stream.

Seems like the on-tap event isn't working properly.

New cameras don't update

I've used this for about a month now and its worked great. Recently I changed one of the cameras to an Arlo Pro, and now I cannot get the HA interface to recognize the new camera much less get it so show up. Is there something I need to do to get the new camera to show? It shows up on the Arlo website fine and its viewable like the other cameras are. I should note that the other Arlo Pro cameras on the same account are working just fine.

AArlo blocked all ssl connections in my home assistant

This evening I am trying for the first time AArlo with my Arlo system with a base station and 4 arlo pro cameras.

I set up all without problems using a clone of your repository but after a couple of hours of the system running properly I started to get connection errors everywhere in home assistant.

NabuCasa, Tado, Netatmo, every component that relies on an ssl connection using python was failing in homeassistant.

Restarting HASS or rebooting the VM (I run Hass.io in proxmox on a NUC) was not fixing it.
I had to remove AArlo component from my configuration and restart hass to get back to a normal situation.

Unfortunately I didn't saved the logs during the errors so I have lost it, anyway I have restored AArlo config and now my hass instance is running again with it enabled. I will check tomorrow morning if my instance is failing again so I can collect the logs.

Streaming broken from Arlo Qs

Caveat: Only a few hours in to home-assistant and hass-arlo, so high probability of PEBKAC here...

A fresh install with Arlo cameras and this custom component resulted in this error upon clicking on any camera:

2019-07-20 17:17:02 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/aiohttp/web_protocol.py", line 418, in start
resp = await task
File "/usr/local/lib/python3.7/site-packages/aiohttp/web_app.py", line 458, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.7/site-packages/aiohttp/web_middlewares.py", line 119, in impl
return await handler(request)
File "/usr/src/app/homeassistant/components/http/real_ip.py", line 33, in real_ip_middleware
return await handler(request)
File "/usr/src/app/homeassistant/components/http/ban.py", line 67, in ban_middleware
return await handler(request)
File "/usr/src/app/homeassistant/components/http/auth.py", line 216, in auth_middleware
return await handler(request)
File "/usr/src/app/homeassistant/components/http/view.py", line 115, in handle
result = await result
File "/usr/src/app/homeassistant/components/camera/init.py", line 478, in get
return await self.handle(request, camera)
File "/usr/src/app/homeassistant/components/camera/init.py", line 514, in handle
return await camera.handle_async_mjpeg_stream(request)
File "/config/custom_components/aarlo/camera.py", line 211, in handle_async_mjpeg_stream
'multipart/x-mixed-replace;boundary=ffserver')
File "/usr/src/app/homeassistant/helpers/aiohttp_client.py", line 124, in async_aiohttp_proxy_stream
data = await stream.read(buffer_size)
AttributeError: 'CameraMjpeg' object has no attribute 'read'

This read method was removed from HA-ffmpeg in: home-assistant-libs/ha-ffmpeg@9805a00

aarlo/camera.py:

208             return await async_aiohttp_proxy_stream(
209                 self.hass, request, stream, 
210                 'multipart/x-mixed-replace;boundary=ffserver')

Using the new get_reader() call makes it (I think) do what it's supposed to:

208             return await async_aiohttp_proxy_stream(
209                 self.hass, request, await stream.get_reader(),
210                 'multipart/x-mixed-replace;boundary=ffserver')

No Cameras Appearing - 1.5.1

It may be something I've done, but after a couple of months without an Arlo camera, I resurrected my aarlo setup to use a new Arlo Q camera last night. Unfortunately no camera entity is appearing in HA, and after enabling packet_dump, all I see in the log file is:

$ cat packets.dump
{'status': 'connected'}
{'status': 'connected'}

The only entity I have is:
image

I had previously removed the aarlo entries in custom_components so it was a fresh install. Seeing the message about using 1.5.1, I did the following in my old hass-aarlo repo:

$ git pull
$ git fetch origin tag v0.5.1
$ git describe --tags
v0.5.1-6-g9a54fee
$ ./install go /home/user/docker/homeassistant

Have I used the right version? I'll try the older 0.4 this evening as well.

Thanks.

Snapshot not happening.

When I call the service camera.aarlo_request_snapshot nothing happens. It says it's taking a screenshot, but there is no update in the UI.

If I click the 'click to update image' icon using your custom picture card. It says 'Taking Screenshot' but nothing ever happens.

here is the output from the logs:

2019-02-21 17:35:14 INFO (EventStream) [custom_components.aarlo.camera] callback:garage:activityState:fullFrameSnapshot
2019-02-21 17:35:16 INFO (EventStream) [pyaarlo] garage CAMERA got one cameras/5EX184SM58F82
2019-02-21 17:35:16 INFO (EventStream) [pyaarlo] garage got cameras/5EX184SM58F82
2019-02-21 17:35:16 INFO (EventStream) [custom_components.aarlo.camera] callback:garage:activityState:idle

New HA infrastructure requires services.yaml?

Hi Steve,

It seems plugins now require a simple services.yaml, example (taken from another plugin!):

# Example services.yaml entry

#  SPDX-License-Identifier: Apache-2.0
update_last_called:
  # Description of the service
  description: Forces update of last_called echo device for each Alexa account.
  # Different fields that your service accepts
  fields:
    # Key of the field
    email:
      # Description of the field
      description: List of Alexa accounts to update. If empty, will update all known accounts
      # Example value that can be passed for this field
      example: '[email protected]'

Do we need this for the Aarlo services?

Sensor Values Only Fetched On Initial Run

Hi,

I have just noticed that data for my Arlo system only seems to be fetched on initial run of this component.

Machine specs:

  • Intel x64 running Ubuntu 18.04LTS
  • HomeAssistant 0.87.1 running in docker (not HASS.io)

My setup is as follows:

  • 3x Arlo Pro connected to VMB4000 hub
  • 1x Arlo Doorbell connected to VMB4000 hub and linked to one of the Arlo Pro's
  • 1x Arlo Baby

My configuration.yaml file is as follows:

aarlo:
  username: !secret arlo_username
  password: !secret arlo_password

sensor:
  - platform: aarlo
    monitored_conditions:
      - captured_today
      - last_capture
      - total_cameras
      - battery_level
      - signal_strength
      - temperature
      - humidity
      - air_quality

binary_sensor:
  - platform: aarlo
    monitored_conditions:
      - motion
      - sound
      - ding

camera:
  - platform: aarlo

alarm_control_panel:
  - platform: aarlo

My Lovelace setup is as follows:

resources:
  - type: module
    url: /local/aarlo-glance.js
views:
  - cards:
      - camera: driveway
        name: driveway
        show:
          - motion
          - sound
          - battery
          - signal_strength
          - captured
        type: 'custom:aarlo-glance'
      - camera: garden
        name: garden
        show:
          - motion
          - sound
          - battery
          - signal_strength
          - captured
        type: 'custom:aarlo-glance'
      - camera: porch
        name: porch
        show:
          - motion
          - sound
          - battery
          - signal_strength
          - captured
        type: 'custom:aarlo-glance'
      - camera: kitchen
        name: kitchen
        show:
          - motion
          - sound
          - battery
          - signal_strength
          - captured
        type: 'custom:aarlo-glance'

There is nothing firing in the logs, and no error messages are being generated. data is fetched and images are displayed in the custom Lovelace cards, but only on initial run - no subsequent data is pushed to HomeAssistant.

I appreciate that this may be a tough one to diagnose as without logs, it's a needle in a haystack but I'd appreciate if my configuration above can be triaged, as I am sure this issue is down to user error!

One of nine cameras not showing up

Hiya.

So... I've got 9 Arlo cameras across three hubs, and two security lights, on their little hub thingummies.

All 9 cameras function on both the Arlo app and the website. I've stuck the aarlo integration on (initially v4 - now v5.1), and it's fantastic... APART from the fact that one camera simply refuses to turn up.

I've stuck debug logging on - and it looks to interrogate the list of devices. See attached. There's a camera not mentioned there - attached to the 'Snug Base Station' hub, and with a serial number 52M1837LAA5C7 - that doesn't look to be mentioned in the output at all.

It's a bit of a mystery to me at the moment - have you any idea what might be going on?

pyaarlo.txt
arlo_cameras

Best Regards,

Jules

Lovelace module aarlo-glance.js broken in release v0.5

Something broke the Lovelace card module in release v0.5.

Thumbnails do show up but when attempting to start a stream, nothing happens. On desktop, the timer shows as 0:00 and no playback occurs, only displaying the thumbnail. On mobile, a broken image placeholder shows up on top of the thumbnail and no playback occurs.

https://i.imgur.com/hy3KllY.png

https://i.imgur.com/SrIU3ci.png

When refreshing the the HA interface (F5) the status of the cameras do show up as "Streaming".

Stuck 'Taking Snapshot'?

Using the latest snapshot-to-file branch, I see this frequently and need to restart HA, any ideas?

streaming on raspberry pi

Hello,

it is not a real issue but a important information.
On raspbian (Raspbian GNU/Linux 9), the streaming with aarlo doesn't work out of box.
I doesn't had any error in homeassistant log, only [homeassistant.components.stream] Started stream: rtsps://XXXXXXX
after some tests , i realize, if i want to read rtsps protocol, ffmpeg send me (Operation not permitted) ,
If i use ffmpeg 4.1.2 on my Arch , the stream is ok.

i think that most important difference is version of libraries used by Pyav :

  • libavformat (v57 on rpi , v58 on Arch)
  • libavcodec (v57 on rpi , v58 on Arch)
    ...

I had to compile ffmpeg (i removed package libavformat57 and libavdevice57 before) ,
i used modified script posted here https://community.home-assistant.io/t/arlo-replacement-pyarlo-module/93511/293 .
And finaly i manually compiled av with the sources (the next week , i will test with pip )
After this the stream works ;)

it may be necessary to update the documentation in relation to this

Replace pyarlo in HA (https://github.com/tchellomello/python-arlo)?

Not really an issue, but unsure where else to put this.

Is this library likely to replace the pyarlo in HA? That library seems largely abandoned and doesn't support newer cameras like the Arlo Q very well.

I plan to give this a whirl later this week, mostly looking for Arlo Q support, particularly motion detection events and ability to arm/disarm.

Aarlo

My first name is actually Aarlo. This repo is the top google result for my name right now.

Game on.

Stream via 'play_stream' service to Chromecast

Firstly, this is working perfect!

I was just wondering if you knew of a way to stream with sound too (streaming via the 'play_stream' service provides video, but not audio). I still need to get streams working via HA (I'm running Ubuntu).

Camera stream never stops when playing from Lovelace card on touch screen devices

Unless I'm missing something, there is no way to stop a camera stream when playing from the provided custom Lovelace aarlo-glance.js card on a touch screen device.

Seems like the <video> element in the card does not properly respond to a touch event (tap) to stop the stream, only allowing to pause the stream but not actually stopping it.

It works properly on desktop using mouse / click events.

Charging status gone

I switched over to HACS and with the move, I lost the ability to see my Arlo Pro camera as charging. It now just shows a plug instead that doesn't change based on battery level. Prior to that there was a photo of a battery with a lightning bolt. That changed when full.

Arm Home Broken (Latest HA)

I recently upgraded to the latest HA 89.0 (RC) and it appears there is a breaking change somewhere in there that is causing the arm_home function to stop working. I haven't changed my config any, so not sure where the issue lies.

Seeing some different output in the logs. Specifically the 'unhandled response...' lines.
When I click Arm Away

2019-03-06 19:30:38 INFO (MainThread) [pyaarlo] Home:new-mode=armed,id=mode1
2019-03-06 19:30:38 INFO (EventStream) [pyaarlo] Home BASE got modes
2019-03-06 19:30:38 INFO (EventStream) [pyaarlo] unhandled response devices/4N72777G61922/states
2019-03-06 19:30:38 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SL58C98/states
2019-03-06 19:30:38 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SM573C2/states
2019-03-06 19:30:38 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SM58F82/states
2019-03-06 19:30:39 INFO (EventStream) [pyaarlo] Home BASE got activeAutomations
2019-03-06 19:30:39 INFO (EventStream) [pyaarlo] Home BASE got modes

If I click Disarm:

2019-03-06 19:31:22 INFO (MainThread) [pyaarlo] Home:new-mode=disarmed,id=mode0
2019-03-06 19:31:22 INFO (EventStream) [pyaarlo] Home BASE got modes
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] unhandled response devices/4N72777G61922/states
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SL58C98/states
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SM573C2/states
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] unhandled response devices/5EX184SM58F82/states
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] Home BASE got activeAutomations
2019-03-06 19:31:23 INFO (EventStream) [pyaarlo] Home BASE got modes

If I click Arm Home nothing happens. However, here is the debug output:

2019-03-06 19:32:15 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139832323785000] Received {'type': 'call_service', 'domain': 'alarm_control_panel', 'service': 'alarm_arm_home', 'service_data': {'entity_id': 'alarm_control_panel.aarlo_home', 'code': ''}, 'id': 115}

camera.enable_motion_detection throws 'list index out of range'

I only installed hass.io a couple of days ago, so I'm a complete newbie. Apologies in advance if this is a stupid question.

I have installed v0.0.7-test02 on HassOS 2.12 and modified configuration.yaml as described in the instructions.

As I understand it, I am supposed to call the camera.enable_motion_detection service on each camera to enable motion detection, but calling it results in this error:

list index out of range

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 128, in handle_call_service
    connection.context(msg),
  File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call
    await asyncio.shield(self._execute_service(handler, service_call))
  File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service
    await handler.func(service_call)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 210, in handle_service
    self._platforms.values(), func, call, service_name, required_features
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 334, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 356, in _handle_service_platform_call
    await getattr(entity, func)(**data)
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/aarlo/camera.py", line 313, in enable_motion_detection
    self.set_base_station_mode(ARLO_MODE_ARMED)
  File "/config/custom_components/aarlo/camera.py", line 308, in set_base_station_mode
    self._camera.base_station.mode = mode
  File "/config/custom_components/aarlo/pyaarlo/device.py", line 174, in base_station
    return self._arlo.base_stations[0]
IndexError: list index out of range

My interpretation is that the error is being thrown because there is no base station registered. I can see the two cameras themselves listed as entities, along with the motion and sound binary sensors etc, but I can't see any base station or alarm control panel entities.

Should there be an alarm control panel / base station entity listed?

Thanks

configuration.zip

Don't add unsupported entities?

Howdy,

As you know, HA is a state machine animal, could we possibly not add unsupported entities on older cameras, i.e. sound...?

Just pointing out a spelling error in the readme.md file

For the simplest use replace all instances of the arlo with aalro in your home-assistant configuration files.

should be

For the simplest use replace all instances of the arlo with aarlo in your home-assistant configuration files.

=================
Thanks so much for this component; I'm installing today and can't wait to try it out!

Alarm control panel doesn't work anymore

'homeassistant.components.alarm_control_panel' (/usr/src/homeassistant/homeassistant/components/alarm_control_panel/init.py)`

I think they changed something in the last update.

Snapshot Update While Recording

First of all, thank you Steve for this awesome component! My overall automation responsiveness when working with Arlo cameras in HASS is drastically improved, and I have so many more use cases I can work on now.

One such use case is attempting to move away from stock Arlo app notifications and create rich HTML5 notifications from HASS. I have this (mostly) working - I can now receive a push notification when motion is detected on a specific camera, along with the latest snapshot image (hooray). Here is the general flow of the automation:

Motion Detected -> Request Arlo Snapshot -> Camera Snapshot (to save image to file) -> Send Notification

The "Request Arlo Snapshot" is async, so I need to trigger the "Camera Snapshot" on a status change from 'taking snapshot' in order to be sure I get an updated image.

Problem: When the Arlo camera detects a motion event and starts its normal recording, the HASS entity status goes from "Idle" to "Recording" (briefly), then it quickly switches to "Taking snapshot" (from my automation firing), but then it STAYS on 'Taking snapshot' until the camera finishes its recording, after which it changes to "Recently Active". It does not switch from "Taking snapshot" back to "Recording" once the snapshot is done. Because of this, let's say a motion event is going on for a minute and a half - I won't get a notification for a minute and a half when the entity status changes from "Taking snapshot" to "Recently Active". Is there a way to change the entity state to the last active state when the snapshot is actually finished creating instead of having to wait until a simultaneous recording finishes?

Lots of "Client exceeded max pending messages [2]: 512"

I've been getting frequent bursts of messages like this, and it looks like they may be related to aarlo:

2019-05-18 14:42:00 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Client exceeded max pending messages [2]: 512

and followed shortly thereafter by this:

2019-05-18 14:55:07 INFO (MainThread) [homeassistant.components.websocket_api.http.connection.140146016004304] Connection closed by client
2019-05-18 14:55:15 ERROR (MainThread) [homeassistant.core] Error doing job: Fatal error on transport
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 574, in uvloop.loop.SSLProtocol._do_shutdown
  File "/usr/local/lib/python3.7/ssl.py", line 767, in unwrap
    return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)

There's no useful debug when I just use the default "info" logger level, but when I turn on debug for homeassistant.components.websocket_api:, I get lots of this before the above error:

2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_living_room', 'id': 1758}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_family_room', 'id': 1759}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_front_door', 'id': 1760}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_back_door', 'id': 1761}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_dining_room', 'id': 1762}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_living_room', 'id': 1763}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_family_room', 'id': 1764}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_front_door', 'id': 1765}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_back_door', 'id': 1766}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_dining_room', 'id': 1767}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_living_room', 'id': 1768}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_family_room', 'id': 1769}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_front_door', 'id': 1770}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_back_door', 'id': 1771}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_dining_room', 'id': 1772}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_living_room', 'id': 1773}
2019-05-18 14:42:00 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Received {'type': 'camera_thumbnail', 'entity_id': 'camera.aarlo_family_room', 'id': 1774}
2019-05-18 14:42:00 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.139799196644688] Client exceeded max pending messages [2]: 512

That goes on for quite a while. My cameras aren't reporting motion while this is happening, and I'm not currently viewing the cameras in Lovelace. If I don't have debug turned on for homeassistant.components.websocket_api:, I just periodically get a flood of "exceeded max pending messages" lines.

I just turned on debug for aarlo using custom_components.aarlo: debug and I see log messages during boot, but nothing around the "exceeded max pending messages" logs (which still show up periodically).

Include component in HACS

Lots of people are currently changing from custum_updater to the new HACS, which is much more user friendly.

So i am opening an issue here because surely not only me would love to see your component is included into HACS (Home Assistant Community Store):
https://github.com/custom-components/hacs

Thanks very much in advance!

P.S.: thanks very much for providing such a great component for HA!

Regards,
Ralf Pichler

Custom updater not working

I noticed that there was changed file on the GitHub and no update in Custom Updates. So I downloaded the latest from GitHub and now custom updater say that I use 0.0.7 but the lattes is 0.0.2. Is the custom updater not updated?
image

Impossible to arm alarm from HA

Hey,

I've an issue with this module with alarm control panel.

When I switch in the Arlo app on my Android from Disarmed to Armed, it's work very well and I can see the state changing in HA.

But when I try to change from "disarmed" to "armed_away" in HA, nothing happens, it's wait few second and come back to "disarmed". Nothing in the logs..

This is my conf :

alarm_control_panel:
  - platform: ifttt
    name: Somfy Home Alarm
    event_arm_away: alarm_arm_away
    event_disarm: alarm_disarm
  - platform: aarlo
    home_mode_name: disarmed
    away_mode_name: armed_away

Do you have any idea ? Do I need a code to arm Arlo ?

Thanks.

Entity Unavaliable

Ive had added a new camera to my arlo account. It showed up initially in HASS but now shows 'Entity unavailable'. I tried removing aalo from my config and removing the entities. I then installed aarlo again from HACS. I then added my aarlo credentials back into my configuration.yaml. My aarlo devices arent showing up anymore. Is there a way to cleanly reinstall this component or anything else I can try?

Arlo Baby supported?

Hi,

I have been using aarlo component for a while in order to get my Arlo system working perfectly. Thanks twrecked for your excellent work.

I have recently purchased an Arlo Baby and try to get it integrated into my HA. I added it into my Arlo app and do lots of things within the Arlo app, no issue. Now I moved onto my HA bit and get it restarted completely. However, I cannot see anything related to my Arlo Baby shown in the entity column nor its temp/ humanity sensor etc.

I did found the following #4 mentioning that it was successfully resolved and merged. Could anybody point me to a right direction pls? Is there any extra configuration needed to get Arlo Baby working properly?

Thank you

Mode changes no longer working

I know that a recent change was made to the API used to change modes and I wonder if it's affecting me as well. In my case, I have 5 Arlo Pro (wireless, proprietary rechargeable cube battery) with a hub.

If I try to change the mode like this, it doesn't take effect:

  arlo_away:
    sequence:
      - service: alarm_control_panel.alarm_arm_away
        entity_id: alarm_control_panel.aarlo_arlo_base

These are the logs:

2019-06-01 07:31:53 INFO (MainThread) [homeassistant.helpers.script] Script arlo_away: Running script
2019-06-01 07:31:53 INFO (MainThread) [homeassistant.helpers.script] Script arlo_away: Executing step call service
2019-06-01 07:31:53 DEBUG (SyncWorker_6) [pyaarlo] set:4R03767JA2801/activeSchedule=None
2019-06-01 07:31:53 DEBUG (SyncWorker_6) [pyaarlo] Arlo Base:new-mode=armed,id=mode1
2019-06-01 07:31:53 DEBUG (ArloBackgroundWorker) [pyaarlo] starting request=https://arlo.netgear.com/hmsweb/users/devices/automation/active

The cameras all work in Home Assistant, as do the motion sensors. I can change the mode in the Arlo iOS app with no problems.

Here's my "home" program (mode == 'doors') and the result:

  arlo_home:
    sequence:
      - service: alarm_control_panel.alarm_arm_home
        entity_id: alarm_control_panel.aarlo_arlo_base
2019-06-01 07:39:35 INFO (MainThread) [homeassistant.helpers.script] Script arlo_home: Running script
2019-06-01 07:39:35 INFO (MainThread) [homeassistant.helpers.script] Script arlo_home: Executing step call service
2019-06-01 07:39:35 DEBUG (SyncWorker_18) [pyaarlo] set:4R03767JA2801/activeSchedule=None
2019-06-01 07:39:35 DEBUG (SyncWorker_18) [pyaarlo] Arlo Base:new-mode=doors,id=mode3
2019-06-01 07:39:35 DEBUG (ArloBackgroundWorker) [pyaarlo] starting request=https://arlo.netgear.com/hmsweb/users/devices/automation/active

Here's where I think the modes are discovered at startup:

2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] mode0<=M=>disarmed
2019-05-31 22:56:32 DEBUG (MainThread) [pyaarlo] starting request=https://arlo.netgear.com/hmsweb/users/devices/startStream
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIdToName/mode0=disarmed
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeNameToId/disarmed=mode0
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIsSchedule/disarmed=False
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] mode1<=M=>armed
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIdToName/mode1=armed
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeNameToId/armed=mode1
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIsSchedule/armed=False
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] mode3<=M=>doors
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIdToName/mode3=doors
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeNameToId/doors=mode3
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIsSchedule/doors=False
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] schedule.1<=S=>schedule.1
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIdToName/schedule.1=schedule.1
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeNameToId/schedule.1=schedule.1
2019-05-31 22:56:32 DEBUG (ArloBackgroundWorker) [pyaarlo] set:4R03767JA2801/modeIsSchedule/schedule.1=True

Any idea what's going on? I'm using the latest 0.0.11 release. Mode changing used to work reliably, but I've had to manually change modes often with the recent releases.

Mode Case Sensitivity (suggestion)

Perhaps in the README, inform users that the default mode name 'Armed' in the app is not what is returned by the API. Instead, it is 'armed'. The API would not set the mode for me as I had away_mode_name: "Armed" in my configuration.yaml file. Once I changed it to armed everything worked fine.

Show snapshot time?

Howdy Mr. Aarlo,

Given the issues I'm having with my old cameras and the snapshot feature, is it possible to somehow show the last snapshot time, perhaps overlaid on the image, or as part of the glance card?

I find myself manually smacking the button and checking for an updated image to ensure the image is actually 'current'...

Many thanks,

Mr. Arlo.

Running the remove_old script

How do I go about running the remove_old script if I want to migrate over to HACS? I really don't want to mess things up. I had previously installed the old version of Aarlo manually? Could I just delete the old custom components and be good?

Web Socket help required

Hi,

Is there anyone who can explain how to use the web socket mentioned in the wiki PLS?

What I am trying to achieve is to get url of the lastest video captured while motion is detected and send it to me via telegram.

Not sure whether it is feasible.

Any suggestion welcomed!

Thank you

Arming/Disarming very patchy recently

Hi,

I used to have a pretty solid integration with my Arlo system using this. I recently upgraded to v0.5.5 (transitioning over the HACS at the same time) and since then I;ve noticed arming/disarming has been patchy.
It seems to work for a while after a HA reboot (which tells me my config is OK) but eventually stops working (my automations don;t seem to be able to arm/disarm either)

Is this a know issue? Is there something in the works?
Would love to get back to the level of stability I had before.

Cheers

Is this part of the official Hass release?

Newbie question: is this part of the the Home Assistant release 0.91?

I have just installed it on my RPi and I am having issues changing the status of my Arlo setup.
Made some research online and ended up on this project, but I am not sure if this is still under development or it has already been integrated in the latest official release.

Versioning

Hey Steve would you mind applying versioning to your commits? Its almost impossible to track merges or changes in the components without proper versioning - would be good to see the likes of

0.x.xxx as for example 0.4.123 - 0.4 release commit 123 to see what has changes but only if touching components rather than commits that represent changes in documentation as an example.

Request snapshot to file snapshotting previous event.

Just read one of your automation examples and tested it out. Is the Arlo Q apable of requesting a snapshot while its recording? I'm just trying to understand how this works as the snapshots I'm getting seem to be thumbnails from the previous recording.

- id: 'automation-0100'
  alias: Camera Snapshot
  trigger:
  - entity_id: camera.aarlo_camera1,camera.aarlo_camera2
    for: 00:00:03
    from: 'idle'
    platform: state
    to: 'recording'
  - entity_id: camera.aarlo_camera1,camera.aarlo_camera2
    for: 00:00:03
    from: 'recently active'
    platform: state
    to: 'recording'
  condition: []
  action:
  - data_template:
      entity_id: "{{ trigger.entity_id }}"
    service: camera.aarlo_request_snapshot

error if taking snapshot or stream with master branch

Hi @twrecked , i have a new error with HA 0.94.3 and python 3.7. Do you have an idea ?

2019-06-13 15:46:44 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection.1218843184] Error handling message: Unknown error
Traceback (most recent call last):
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/camera.py", line 383, in websocket_snapshot_image
    image = await camera.async_get_snapshot()
  File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/camera.py", line 301, in get_snapshot
    return self._camera.get_snapshot()
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/camera.py", line 397, in get_snapshot
    self._request_snapshot()
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/camera.py", line 384, in _request_snapshot
    self.take_idle_snapshot()
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/camera.py", line 372, in take_idle_snapshot
    'to': self.parent_id,
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/device.py", line 166, in parent_id
    if self._parentId is not None:
AttributeError: 'ArloCamera' object has no attribute '_parentId'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/websocket_api/decorators.py", line 17, in _handle_async_response
    await func(hass, connection, msg)
  File "/home/homeassistant/.homeassistant/custom_components/aarlo/camera.py", line 391, in websocket_snapshot_image
    except HomeAssistantError:
NameError: name 'HomeAssistantError' is not defined

Doesnt fully support Arlo Baby

I have installed it and it seems to work well except for the Arlo Baby Cam - it seems to pull a few entities though:

binary_sensor.aarlo_motion_nursery | off | attribution: Data provided by arlo.netgear.com brand: Netgear Arlo friendly_name: Motion Nursery device_class: motion

camera.aarlo_nursery | unknown | access_token: [removed] model_name: ABC1000 brand: Netgear Arlo battery_level: 100 signal_strength: 3 unseen_videos: 5447 attribution: Data provided by arlo.netgear.com friendly_name: Nursery entity_picture: /api/camera_proxy/camera.aarlo_nursery?token=[removed] supported_features: 0

sensor.aarlo_battery_level_nursery | unknown | attribution: Data provided by arlo.netgear.com brand: Netgear Arlo friendly_name: Battery Level Nursery model: ABC1000 unit_of_measurement: % icon: mdi:battery-50

sensor.aarlo_captured_today_nursery | 4 | attribution: Data provided by arlo.netgear.com brand: Netgear Arlo friendly_name: Captured Today Nursery model: ABC1000 icon: mdi:file-video

sensor.aarlo_last_nursery | 2019-02-11 08:41:59 | attribution: Data provided by arlo.netgear.com brand: Netgear Arlo friendly_name: Last Nursery model: ABC1000 icon: mdi:run-fast

sensor.aarlo_signal_strength_nursery | unknown | attribution: Data provided by arlo.netgear.com brand: Netgear Arlo friendly_name: Signal Strength Nursery model: ABC1000 icon: mdi:signal

I also no longer get a separate alarm_panel for the Arlo Baby as previously

I installed this in VENV

source /srv/homeassistant/bin/activate
pip uninstall pyarlo
pip uninstall sseclient-py
pip install py-0.3.tgz

config as per examples - at the moment I excluded the monitored conditions to see if its picks the others up from the Arlo Baby

/// hass_aarlo.yaml
aarlo:
  username: !secret arlo_hass
  password: !secret arlo_pass

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

alarm_control_panel:
  - platform: aarlo
    home_mode_name: Home
    away_mode_name: Armed

binary_sensor:
  - platform: aarlo
    monitored_conditions:
    - motion
    - sound
    - ding

sensor:
  - platform: aarlo
#    monitored_conditions:
#    - last_capture
#    - total_cameras
#    - battery_level
#    - captured_today
#    - signal_strength 

Base Siren Turn Off via automation

Hello! I first want to thank you for this component. It made my whole Hassio setup worth it.

One of my automations trigger the Arlo base siren using alarm_control_panel.alarm_trigger when some contact sensors change their state to open. I can't figure out how to turn off the siren via another automation. Is this possible somehow?

More alarm panel modes possible?

Howdy,

I have an issue whereby I need 2 away modes, one for when my ducks are not roaming freely and one for when they're in the coop, is it possible to add more custom modes to the panel?

Thumbnails broken after a day or two

After a day or two, the camera thumbnails do not show up in the lovelace cards and instead a broken image placeholder appears. When this happens, there is no way to click on the thumbnail/snapshot to start a camera stream.

A full HA restart solves the issue until it happens again.

I did try using the refresh_devices_every option, thinking that a device refresh might fix the problem but no luck.

Exception if the arlo's api is very slow

reguraly the arlo's api is very slow and causes exceptions

May 12 14:58:35 hassbian hass[20354]: Exception in thread ArloBackgroundWorker:
May 12 14:58:35 hassbian hass[20354]: Traceback (most recent call last):
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 600, in urlopen
May 12 14:58:35 hassbian hass[20354]:     chunked=chunked)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 384, in _make_request
May 12 14:58:35 hassbian hass[20354]:     six.raise_from(e, None)
May 12 14:58:35 hassbian hass[20354]:   File "<string>", line 2, in raise_from
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 380, in _make_request
May 12 14:58:35 hassbian hass[20354]:     httplib_response = conn.getresponse()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 1198, in getresponse
May 12 14:58:35 hassbian hass[20354]:     response.begin()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 297, in begin
May 12 14:58:35 hassbian hass[20354]:     version, status, reason = self._read_status()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 266, in _read_status
May 12 14:58:35 hassbian hass[20354]:     raise RemoteDisconnected("Remote end closed connection without"
May 12 14:58:35 hassbian hass[20354]: http.client.RemoteDisconnected: Remote end closed connection without response
May 12 14:58:35 hassbian hass[20354]: During handling of the above exception, another exception occurred:
May 12 14:58:35 hassbian hass[20354]: Traceback (most recent call last):
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/adapters.py", line 449, in send
May 12 14:58:35 hassbian hass[20354]:     timeout=timeout
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 638, in urlopen
May 12 14:58:35 hassbian hass[20354]:     _stacktrace=sys.exc_info()[2])
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/util/retry.py", line 367, in increment
May 12 14:58:35 hassbian hass[20354]:     raise six.reraise(type(error), error, _stacktrace)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/packages/six.py", line 685, in reraise
May 12 14:58:35 hassbian hass[20354]:     raise value.with_traceback(tb)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 600, in urlopen
May 12 14:58:35 hassbian hass[20354]:     chunked=chunked)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 384, in _make_request
May 12 14:58:35 hassbian hass[20354]:     six.raise_from(e, None)
May 12 14:58:35 hassbian hass[20354]:   File "<string>", line 2, in raise_from
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/urllib3/connectionpool.py", line 380, in _make_request
May 12 14:58:35 hassbian hass[20354]:     httplib_response = conn.getresponse()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 1198, in getresponse
May 12 14:58:35 hassbian hass[20354]:     response.begin()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 297, in begin
May 12 14:58:35 hassbian hass[20354]:     version, status, reason = self._read_status()
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/http/client.py", line 266, in _read_status
May 12 14:58:35 hassbian hass[20354]:     raise RemoteDisconnected("Remote end closed connection without"
May 12 14:58:35 hassbian hass[20354]: urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
May 12 14:58:35 hassbian hass[20354]: During handling of the above exception, another exception occurred:
May 12 14:58:35 hassbian hass[20354]: Traceback (most recent call last):
May 12 14:58:35 hassbian hass[20354]:   File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/background.py", line 58, in run
May 12 14:58:35 hassbian hass[20354]:     timeout = self._run_next()
May 12 14:58:35 hassbian hass[20354]:   File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/background.py", line 33, in _run_next
May 12 14:58:35 hassbian hass[20354]:     job['callback']( **job['args'] )
May 12 14:58:35 hassbian hass[20354]:   File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/camera.py", line 109, in _update_last_image
May 12 14:58:35 hassbian hass[20354]:     img = http_get( url )
May 12 14:58:35 hassbian hass[20354]:   File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/util.py", line 26, in http_get
May 12 14:58:35 hassbian hass[20354]:     ret = requests.get(url)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/api.py", line 75, in get
May 12 14:58:35 hassbian hass[20354]:     return request('get', url, params=params, **kwargs)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/api.py", line 60, in request
May 12 14:58:35 hassbian hass[20354]:     return session.request(method=method, url=url, **kwargs)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/sessions.py", line 533, in request
May 12 14:58:35 hassbian hass[20354]:     resp = self.send(prep, **send_kwargs)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/sessions.py", line 646, in send
May 12 14:58:35 hassbian hass[20354]:     r = adapter.send(request, **kwargs)
May 12 14:58:35 hassbian hass[20354]:   File "/srv/homeassistant/lib/python3.5/site-packages/requests/adapters.py", line 498, in send
May 12 14:58:35 hassbian hass[20354]:     raise ConnectionError(err, request=request)
May 12 14:58:35 hassbian hass[20354]: requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))
May 12 14:58:35 hassbian hass[20354]: During handling of the above exception, another exception occurred:
May 12 14:58:35 hassbian hass[20354]: Traceback (most recent call last):
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/threading.py", line 914, in _bootstrap_inner
May 12 14:58:35 hassbian hass[20354]:     self.run()
May 12 14:58:35 hassbian hass[20354]:   File "/home/homeassistant/.homeassistant/custom_components/aarlo/pyaarlo/background.py", line 63, in run
May 12 14:58:35 hassbian hass[20354]:     self._lock.wait( timeout - now )
May 12 14:58:35 hassbian hass[20354]:   File "/usr/lib/python3.5/threading.py", line 241, in __exit__
May 12 14:58:35 hassbian hass[20354]:     return self._lock.__exit__(*args)
May 12 14:58:35 hassbian hass[20354]: RuntimeError: cannot release un-acquired lock


and after that , arlo's plugin is blocked and a restart of homeassistant is necessary

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.