homebridge-arlo
Advanced tools
Comparing version 1.2.1-beta.0 to 1.2.1-beta.1
{ | ||
"displayName": "Homebridge Arlo", | ||
"name": "homebridge-arlo", | ||
"version": "1.2.1-beta.0", | ||
"version": "1.2.1-beta.1", | ||
"description": "Arlo plugin for homebridge", | ||
@@ -6,0 +6,0 @@ "author": "homebridge-plugins", |
162
README.md
@@ -1,18 +0,23 @@ | ||
# homebridge-arlo | ||
<span align="center"> | ||
[![npm package](https://badgen.net/npm/v/homebridge-arlo)](https://nodei.co/npm/homebridge-arlo/) | ||
<a href="https://arlo.com"><img alt="homebridge-arlo" src="https://raw.githubusercontent.com/homebridge-plugins/homebridge-arlo/update/arlo/arlo.png" width="140px"></a> | ||
Arlo platform plugin for [Homebridge](https://github.com/homebridge/homebridge). | ||
# Homebridge-Arlo | ||
# Installation | ||
<a href="https://www.npmjs.com/package/homebridge-arlo"><img title="npm version" src="https://badgen.net/npm/v/homebridge-arlo" ></a> | ||
<a href="https://www.npmjs.com/package/homebridge-arlo"><img title="npm downloads" src="https://badgen.net/npm/dt/homebridge-arlo" ></a> | ||
1. Install homebridge using: npm install -g homebridge | ||
2. Install this plugin using: npm install -g homebridge-arlo | ||
3. Update your configuration file. See the sample below. | ||
<p><a href="https://www.arlo.com/">Arlo</a> plugin for | ||
<a href="https://homebridge.io">Homebridge</a>. | ||
</p> | ||
# Updating | ||
</span> | ||
- `npm update -g homebridge-arlo` | ||
## Installation | ||
* Install [config-ui-x](https://github.com/oznu/homebridge-config-ui-x). | ||
* Search for "Arlo" on the Plugin Screen of [config-ui-x](https://github.com/oznu/homebridge-config-ui-x) . | ||
* Click Install on Homebridge Arlo. | ||
# Setup | ||
## Configuration | ||
Arlo only allows a single login to each account at a time, as a result, if you | ||
@@ -22,138 +27,7 @@ are running Homebridge and the Arlo on the same account... logging in on your | ||
Therefore, I **highly recommend** creating an additional account in Arlo, just | ||
Therefore, It is **highly recommend** to creating an [additional account](https://my.arlo.com/#/registration) in Arlo, just | ||
for homebridge access. | ||
# Limitations | ||
This plugin currently only support Base Stations, not cameras. This is mainly | ||
because I haven't gotten video streaming to work yet. | ||
## Manual Setup | ||
# Configuration | ||
```javascript | ||
"platforms": [ | ||
{ | ||
"platform": "Arlo", | ||
"name": "Arlo", | ||
"email": "<insert arlo account email address>", | ||
"password": "<insert arlo account password>", | ||
"interval": 6000 | ||
} | ||
] | ||
``` | ||
NOTE: interval time is in milliseconds - e.g. 6000 ms are 10 sec | ||
## Optional parameters | ||
### Modes | ||
By default, Arlo only provides two modes (**armed** and **disarmed**). Since | ||
HomeKit allows a security system to have 4 states (**away**, **home**, | ||
**night** and **off**), we provide two config parameters to enable support for | ||
the additional 2 states. If these configuration parameters aren't provided | ||
setting the state to **home** or **night** will result in the state being set | ||
to **away**, i.e. **armed**. | ||
Arlo uses the string `modeX` to identify each mode, with `mode0` used for the | ||
default **disarmed** state and `mode1` used for the default **armed** state. | ||
To determine the correct `modeX` string for your custom state, login to the | ||
[Arlo web console](https://arlo.netgear.com) and click the "Edit Mode" button. | ||
The URL will show the ` modeX` string for that custom state, e.g. | ||
https\://arlo.netgear.com/#/modes/`<USER_ID>`/edit/**mode2** | ||
Once you've determined the `modeX` string of your custom mode(s), you can | ||
configure `homebridge-arlo` to use those for the additional modes available | ||
via HomeKit: | ||
* `stay_arm` - The `modeX` label for the custom mode created in Arlo for the | ||
**home** or **stay** state. | ||
* `night_arm` - The `modeX` label for the custom mode created in Arlo for the | ||
**night** state. | ||
### Streaming | ||
Live video streaming functionality requires transcoding of the video and audio streams provided by Arlo into a format acceptable to HomeKit. By default, this transcoding is assumed to be performed by a local installation of FFmpeg with the `libx264` video codec and `libfdk_aac` audio codec. Alternate configuration options are provided to help optimize the transcoding performance. | ||
- `videoProcessor`: The video processor used to perform transcoding. Defaults to `ffmpeg`. An alternate executable maybe used, however it needs to conform to ffmpeg parameters. | ||
- `videoDecoder`: The video codec used to decode the incoming h264 stream from the Arlo server. Defaults to no value, meaning the default h.264 software decoder (`libx264`) will typically be used. | ||
- `videoEncoder`: The video codec used to encode the outgoing h264 stream to the iOS client device. Defaults to `libx264`. | ||
- `audioEncoder`: The audio codec that will be used to decode/encode the audio stream. HomeKit requires either an Opus or AAC-ELD format audio stream. Defaults to the `libopus` codec, and currently Homebridge-Arlo tells HomeKit it only supports the Opus audio type. | ||
- `packetsize`: The packet sized to be used. Defaults to 1316. Use smaller multiples of 188 to possibly improve performance (376, 564, etc) | ||
- `maxBitrate`: The maximum bitrate of the encoded stream in kbit/s, the default is 300. | ||
- `additionalVideoCommands`: Any video-specific additional flags or commands to pass to the ffmpeg executable. | ||
- `additionalAudioCommands`: Any audio-specific additional flags or commands to pass to the ffmpeg executable. | ||
### Streaming with a Raspberry Pi 3 | ||
The Raspberry Pi 3 has both hardware decoder and encoder functionality, which can help with transcoding performance. However you will need to compile FFmpeg yourself to enable the hardware capability. | ||
Even if you unconcerned with hardware transcoding, you will likely need to compile FFmpeg with either the `Opus` or `libfdk_aac` encoders enabled in order to output the required Opus or AAC-ELD audio format. | ||
The below defines suggested compliation steps for FFmpeg on Raspberry Pi 3 that takes advantage of both the hardware encoder (omx) and decoder (mmal), and uses `libopus-dev` and/or `libfdk_aac` to enable transcoding of the audio. | ||
Note: This assumes you're using Raspbian Stretch. | ||
```bash | ||
# Go to home folder | ||
cd ~ | ||
# Install build tools | ||
sudo apt update | ||
sudo apt install build-essential pkg-config autoconf automake libtool checkinstall git | ||
# Install various dependencies | ||
sudo apt install libssl-dev libx264-dev libopus-dev libomxil-bellagio-dev | ||
# Clone libfdk-aac-dev | ||
git clone https://github.com/mstorsjo/fdk-aac.git | ||
cd fdk-aac | ||
# Configure and build libfdk-aac-dev | ||
./autogen.sh | ||
./configure --prefix=/usr/local --enable-shared --enable-static | ||
# Uses -j4 flag to use multiple cores during compilation | ||
make -j4 | ||
sudo make install | ||
sudo ldconfig | ||
cd .. | ||
# OPTIONAL: Remove any installed ffmpeg to avoid conflicts | ||
sudo apt remove ffmpeg | ||
# Clone ffmpeg | ||
git clone https://github.com/FFmpeg/FFmpeg.git | ||
cd FFmpeg | ||
# Configure ffmpeg | ||
./configure --prefix=/usr/local --arch=armel --target-os=linux --enable-openssl \ | ||
--enable-omx --enable-omx-rpi --enable-nonfree --enable-gpl --enable-libfdk-aac \ | ||
--enable-libopus --enable-mmal --enable-libx264 --enable-decoder=h264 --enable-network \ | ||
--enable-protocol=tcp --enable-demuxer=rtsp | ||
# Build ffmpeg | ||
sudo make -j4 | ||
# Install ffmpeg, and use checkinstall to build a self-contained deb file that can be easily | ||
# backed up for later use or reinstallation. Fill in all information requested by checkinstall. | ||
sudo checkinstall | ||
# Lock the custom ffmpeg package so it isn't replaced accidentally | ||
echo "ffmpeg hold" | sudo dpkg --set-selections | ||
``` | ||
Thanks to KhaosT for the base ffmpeg implementation and setup instructions in [homebridge-camera-ffmpeg](https://github.com/KhaosT/homebridge-camera-ffmpeg) and the [Maniacland Blog](https://maniaclander.blogspot.com/2017/08/ffmpeg-with-pi-hardware-acceleration.html)/[locutusofborg780](https://www.reddit.com/r/raspberry_pi/comments/5677qw/hardware_accelerated_x264_encoding_with_ffmpeg/) for FFmpeg configuration instructions. | ||
### Sample Configuration with Optional Parameters | ||
This sample configuration specifies that for streaming transcoding, ffmpeg should use the `h264_mmal` and `h264_omx` hardware decoders/encoders for the video stream. | ||
```javascript | ||
"platforms": [ | ||
{ | ||
"platform": "Arlo", | ||
"name": "Arlo", | ||
"email": "<insert arlo account email address>", | ||
"password": "<insert arlo account password>", | ||
"stay_arm": "mode2", | ||
"night_arm": "mode3" | ||
"streaming": { | ||
"videoDecoder": "h264_mmal", | ||
"videoEncoder": "h264_omx", | ||
"packetSize": 564 | ||
} | ||
} | ||
} | ||
] | ||
``` | ||
Visit Manual Setup [Wiki](https://github.com/homebridge-plugins/homebridge-arlo/wiki/Manual-Setup). |
67440
33