homebridge-shinobi
homebridge-shinobi copied to clipboard
A Homebridge plugin integrating Shinobi for motion detector cameras
homebridge-shinobi
A Homebridge plugin integrating Shinobi for motion detector cameras
Installation
- Install Homebridge using:
npm install -g homebridge
- Install this plugin:
npm install -g homebridge-shinobi
- Update your configuration file. See a sample
config.json
snippet below. - Ensure
ffmpeg
is installed and on the path.
NOTE: Currently there is no support for streaming audio from a camera.
Configuration
Example config.json
entry:
"platforms": [
{
"platform": "Shinobi",
"shinobi_api": "http://x.x.x.x:8080",
"api_key": "xxx",
"group_key": "house",
"monitors": [
{
"monitor_id": "front"
},
{
"monitor_id": "rear"
}
],
"web_hook_port": "8443",
"https_key_path": "/cert/privkey.pem",
"https_cert_path": "/cert/fullchain.pem",
"ffmpeg_input_args": "-fflags +genpts",
"ffmpeg_process_args": "-vsync drop -vcodec copy -an"
}
]
Where:
-
shinobi_api
is the base URL for the Shinobi API -
api_key
is the Shinobi API key (configured in the Shinobi dashboard API menu) -
group_key
is a Shinobi group key -
monitors
contains a list of monitors consisting of:-
monitor_id
-
-
web_hook_port
is the port that the platform should listen on for motion event webhooks from Shinobi -
ffmpeg_input_args
are the arguments that are applied to the ffmpeg command before the-i
flag (add-rtsp_transport tcp
for poor network conditions) -
ffmpeg_process_args
are the arguments that are supplied to the ffmpeg command directly after the source stream URL
If both https_key_path
and https_cert_path
are configured to point at HTTPS key and cert files available on the Homebridge
server the webhook server will be hosted on HTTPS.
Shinobi Integration
The specified shinobi_api
and api_key
will be used to make all Shinobi API requests.
Each of the specified monitor
IDs will be used with the specified group_key
to add a new accessory
to the platform consistent of a Motion Sensor service and camera.
When viewing video, the plugin will use the information returned from the API for a specific Monitor to determine the source video stream configured. FFmpeg is used to stream directly from the camera and forward to HomeKit. If possible, the video will not be re-encoded.
Snapshot images for each Monitor are simply pulled from the Shinobi API. To ensure these are available, enable the JPEG API for each configured Monitor:
A webhook URL should be configured for each Monitor within the Shinobi 'Global Detector Settings' with the following format:
http[s]://<homebridge_ip>>:<web_hook_port>?mid=<monitors[index].monitor_id>&group=<group_key>
For example, assuming the Homebridge instance is available at 192.168.1.10 and using the above sample config,
the two Monitors front
and rear
would have webhook URLs configured as:
https://192.168.1.10:8443?mid=front&group=house
and
https://192.168.1.10:8443?mid=rear&group=house
Help etc.
If you have a query or problem, raise an issue in GitHub, or better yet submit a PR!