homebridge-videodoorbell
Video-Doorbell plugin based on homebridge-camera-ffmpeg for Homebridge
Receive a "doorbell" notification with snapshot to your mobile phone! Use a HTTP request or any other HomeKit button to trigger the event.
Compared to a "simple" camera plugin this plugin uses the HomeKit video doorbell profile. A "doorbell" notification with snapshot is sent to all iCloud connected devices. If the same (HomeKit) room containing this camera also has a Lock mechanism accessory, the notification will show a working UNLOCK button. HomeKit/iOS will link them together automatically when they are in the same room.
Triggering HomeKit rich notifications
You can trigger a HomeKit rich notification from outside with a simple curl command:
curl -X POST -d 'ding=dong&dong=ding' http://IP_OF_HOMEBRIDGE_RUNNING_DEVICE:PORT_DEFINED_IN_CONFIG
You can also show a trigger button in HomeKit that activates the doorbell notification. Use the HomeKit automation system to have other buttons or events in HomeKit trigger the doorbell notification.
Installation
- Install ffmpeg on your computer, see here a for compilation guide on RasPi: https://github.com/KhaosT/homebridge-camera-ffmpeg/wiki
- Install this plugin using: npm install -g homebridge-videodoorbell
- Edit
config.json
and add the camera. - Run Homebridge
- Add extra camera accessories in Home app. The setup code is the same as homebridge.
Config.json Example
{
"platform": "Video-doorbell",
"cameras": [
{
"name": "Camera Name",
"port": 5005,
"videoConfig": {
"source": "-re -i rtsp://myfancy_rtsp_stream",
"stillImageSource": "-i http://faster_still_image_grab_url/this_is_optional.jpg",
"maxWidth": 1280,
"maxHeight": 720,
"maxFPS": 30
}
}
]
}
Optional Parameters
global per-camera parameters
-
port
is the HTTP port that the doorbell listens on, default = server disabled -
button
show a trigger button in HomeKit that can be activated to trigger the doorbell, use with HomeKit automation to trigger your doorbell using any other event in HomeKit, default false -
motion
a dummy switch and motion sensor are created as part of the camera. And by turning on the switch, it will trigger the dummy motion sensor, which will then send a Photo Notification to your iPhone/iPad. To turn on the switch, you can create an automation from your real motion sensor, and have it turn on the dummy switch attached to the camera, default false -
throttle
is the amount of time in milliseconds that the plugin waits before sending a new doorbell message to HomeKit, for clients that spawn a lot of messages, default 10000 -
manufacturer
set manufacturer name for display in the Home app -
model
set model for display in the Home app -
serialNumber
set serial number for display in the Home app -
firmwareRevision
set firmware revision for display in the Home app
videoConfig Parameters
-
maxStreams
is the maximum number of streams that will be generated for this camera, default 2 -
maxWidth
is the maximum width of the generated stream to avoid unnecessary upscaling, default 1280 -
maxHeight
is the maximum height of the generated stream to avoid unnecessary upscaling, default 720 -
nativeWidth
is the native width of the camera stream to avoid unnecessary encoding, default -1 = off -
nativeHeight
is the native height of the camera stream to avoid unnecessary encoding, default -1 = off -
maxFPS
is the maximum frame rate of the stream, default 10 -
maxBitrate
is the maximum frame rate of the stream in kbit/s, default 300 -
vcodec
If you're running on a RPi with the omx version of ffmpeg installed, you can change to the hardware accelerated video codec with this option, default "libx264" -
audio
can be set to true to enable audio streaming from camera. To use audio ffmpeg must be compiled with --enable-libfdk-aac, see above, default false -
vflip
Flips the stream vertically, defaultfalse
. Ignored if you usevcodec
withcopy
value. -
hflip
Flips the stream horizontally, defaultfalse
. Ignored if you usevcodec
withcopy
value. -
mapvideo
Select the stream used for video, default0:0
-
mapaudio
Select the stream used for audio, default0:1
-
videoFilter
Allows a custom video filter to be passed to FFmpeg via-vf
, defaults toscale=1280:720
. Ignored if you usevcodec
withcopy
value. -
packetSize
If audio or video is choppy try a smaller value, set to a multiple of 188, default 1316 -
debug
Show the output of ffmpeg in the log, default false
{
"platform": "Video-doorbell",
"cameras": [
{
"name": "Camera Name",
"port": 5005,
"button": true,
"motion": true,
"throttle": 3000,
"manufacturer": "ACME, Inc.",
"model": "ABC-123",
"serialNumber": "1234567890",
"firmwareRevision": "1.0",
"videoConfig": {
"source": "-re -i rtsp://myfancy_rtsp_stream",
"stillImageSource": "-i http://faster_still_image_grab_url/this_is_optional.jpg",
"maxStreams": 2,
"maxWidth": 1920,
"maxHeight": 1080,
"nativeWidth": 1920,
"nativeHeight": 1080,
"maxFPS": 30,
"vcodec": "h264_omx",
"audio": true,
"packetSize": 188,
"debug": true
}
}
]
}
Using another Video Processor
-
videoProcessor
is the video processor used to manage videos. eg: ffmpeg (by default) or avconv or /a/path/to/another/ffmpeg. Need to use the same parameters than ffmpeg.
{
"platform": "Video-doorbell",
"videoProcessor": "avconv",
"cameras": [
...
]
}
{
"platform": "Video-doorbell",
"videoProcessor": "/my/own/compiled/ffmpeg",
"cameras": [
...
]
}