homebridge-dafang
v1.5.1
Published
Homebridge Plugin for Xiaomi Dafang / Wyze IP Camera
Downloads
78
Maintainers
Readme
homebridge-dafang
Homebridge Plugin for Xiaomi Dafang / Wyze Camera
Installation
- Install ffmpeg on your device
$ brew install ffmpeg --with-openh264 --with-fdk-aac
- Install the plugin using:
$ npm install -g --unsafe-perm homebridge
$ npm install -g --unsafe-perm homebridge-dafang
- Install CFW on camera and set up MQTT. Refer to Setup Readme
- Edit config.json and add the plugin. Refer to
config-sample.json
in repository. - Run Homebridge
- Add extra camera accessories in Home app. The setup code is the same as in homebridge.You can go into ->
+ -> Add New Accessory -> Add Manually -> Add Homebridge Pin -> Select Camera -> Add
Supported Cameras :
Name | Picture --- | --- Xiaomi Dafang | Xiaomi Xiaofang 1S | Wyzecam Pan | Wyzecam V2 | Sannce I21AG, MixSight HX-I2110T2, WanScam HW0036, Escam G02, Digoo BB-M2 | Any other Device with Ingenic T10/T20 Device |
Todo :
- [ ] Timelapse Switch
- [ ] Intercom 2 Way Audio **
Accessories :
| Accessory | Type | Description | Config |
|------------------------------------|---------------------|-------------------------------------------------------|--------|
| Motion Sensor | motionSensor
| Alerts if Motion is Detected | threshold(optional) => In ms.
|
| Rich Motion Sensor | richMotionSensor
| Alerts if Motion is Detected (Rich Notifications) | threshold(optional) => In ms.
|
| Night Vision Sensor | nightVisionSensor
| Alerts if Night Mode is Detected | threshold(optional) => In ms.
|
| Night Vision Switch | nightVisionSwitch
| Toggles Night Mode on Camera => IR_LED ON IR_CUT OFF | None |
| Brightness Lux Sensor | brightness
| Brightness Lux Sensor | None |
| Automatic Night Mode Toggle Switch | autoNightVisionSwitch
| Toggles Automatic Night Mode on Camera | None |
| Automatic Motion Tracking Switch | autoMotionTrackingSwitch
| Toggles Automatic Motion Tracking on Dafang | None |
| Move/Rotate Camera Motor | moveCamera
| Moves Dafang Camera Horizontal/Vertical right/left up/down Motor| axis(required) => horizontal/vertical, direction(required) => left/right for horizontal and up/down for vertical
|
| Record Video+Audio | recordVideo
| Records Video + Audio Toggle Switch. Video(mp4) files are saved in local machine running homebridge| None|
| Record Audio Only | recordAudio
| Records Audio Toggle Switch. Audio(aac) files are saved in local machine running homebridge| None|
| Capture Image | captureImage
| Captures Image from Camera and saves to configured folder| None|
| Recorded Media Storage Sensor | storageSensor
| Alerts when recorded media folder storage is full on the system due to recordings. You can set custom disk space in MB in config| None|
| Clear Storage Switch | clearStorage
| Clears All Recordings| None|
| Reset FFMEPG Switch | resetFFMPEG
| Kills all FFMPEG Zombie Scripts. Audio/Video Recordings will restart recording.| None|
| Motion Detection Switch | motionDetection
| Enables/Disable Motion Detection. Turning off this switch will stop sending motion detection alerts.| None|
| RTSP Server Switch | rtspSwitch
| Debug Switch to turn on/off RTSP H264 Stream Server.| None|
| MJPEG Server Switch | mjpegSwitch
| Debug Switch to turn on/off MJPEG Server| None|
| Recalibrate Motor Switch | recalibrateSwitch
| Debug Switch to Re-Calibrate Camera Motor.| None|
| Restart Camera Switch | restartSwitch
| Debug Switch to restart Camera.| None|
| Re-Mount SD Card RW Switch | remountSwitch
| Debug Switch to re mount sd card with RW permission. It prevents SD Card Failures like stuck RTSP Stream.| None|
Threshold => Lesser Threshold, More Accuracy. Dafang Motion detection is sensitive, and it toggles very quickly, to keep the state of sensor more stable little threshold will delay frequent alerts
Demo :
Sorry for crappy quality. Tested on Rpi + Slow Network
Advanced Demo :
Simple Demo :
Rich Notifications :
Plugin Config :
| Config | Type | Description | Config | |------------------------------------|---------------------|-------------------------------------------------------|--------| | mqtt.hostBroker | bool | Set true to host MQTT Locally, set false to connect to external MQTT Broker. | Required| | cameras | Array (Object) | Can add Multiple Cameras | Required|
Camera Config :
| Config | Type | Description | Config |
|------------------------------------|---------------------|-------------------------------------------------------|--------|
| cameraRTSPStreamUrl | string | RTSP Stream Url e.g. rtsp://192.168.1.2:8554/unicast
| Required|
| disableStream | bool | Set true to stream camera, set false to disable camera view | Optional|
| mqttTopic | string | Each Dafang Device must have a unique topic. Topic should match for each corresponding camera accessory | Required|
| folder | string | Absolute path of directory where recordings/images will be saved | Required|
| segmentLength | number | Length of each video file. (in seconds). Each recording will be saved in segmented videos. Default : 60 (1 minute) | Optional|
| maxDirSize | number | Max Size of folder (in mb) where recordings will be saved. Default : 2048 (2GB) | Optional|
| checkStorageSizeInterval | number | Time in seconds to re check recording folder size for storageSensor
. Default : 300 (5 min) | Optional|
| recordingDirectoryPathFormat | string | DateTime format for Recordings Directory Path. Default : MMM-Do-YY
| Optional|
| recordingFilenameFormat | string | DateTime format for Recordings Filename. Default : YYYY-M-D-h-mm-ss
| Optional|
Refer to https://momentjscom.readthedocs.io/en/latest/moment/04-displaying/01-format/ for custom DirectoryPath/FileName formats for recordings..
{
"platforms": [
{
"platform": "Dafang",
"mqtt": {
"hostBroker": true,
"port": 1883,
"host": "localhost",
"debug": true,
"mongoUrl": "mongodb://localhost:27017/mqtt"
},
"cameras": [{
"cameraName": "My Dafang",
"cameraRTSPStreamUrl": "rtsp://192.168.1.12:8554/unicast",
"mqttTopic": "myhome/dafang/#",
"folder": "/Users/sahilchaddha/Sahil/Recordings/",
"accessories": [
{
"name": "Living Room Motion Sensor",
"type": "richMotionSensor",
"threshold": 300000
},
{
"name": "Living Room Auto Motion Tracking Switch",
"type": "autoMotionTrackingSwitch"
},
{
"name": "Living Room Night Vision Sensor",
"type": "nightVisionSensor",
"threshold": 0
},
{
"name": "Living Room Night Vision Switch",
"type": "nightVisionSwitch"
},
{
"name": "Living Room Auto Night Vision Switch",
"type": "autoNightVisionSwitch"
},
{
"name": "Horizontal Left",
"type": "moveCamera",
"axis": "horizontal",
"direction": "left"
},
{
"name": "Horizontal Right",
"type": "moveCamera",
"axis": "horizontal",
"direction": "right"
},
{
"name": "Vertical Up",
"type": "moveCamera",
"axis": "vertical",
"direction": "up"
},
{
"name": "Vertical Down",
"type": "moveCamera",
"axis": "vertical",
"direction": "down"
},
{
"name": "Record Video",
"type": "recordVideo"
},
{
"name": "Record Audio",
"type": "recordAudio"
},
{
"name": "Capture Image",
"type": "captureImage"
},
{
"name": "RPi Storage Sensor",
"type": "storageSensor"
},
{
"name": "Clear Storage Switch",
"type": "clearStorage"
},
{
"name": "Reset Streaming",
"type": "resetFFMPEG"
},
{
"name": "Camera Brightness",
"type": "brightness"
}
]
}]
}
]
}
Lint
$ npm run lint
Need Help ?
Get Slack Invite => https://slackin-znyruquwmv.now.sh/
Slack Channel => https://homebridgeteam.slack.com/messages/homebridge-dafang
Slack User => @sahilchaddha
Author
Sahil Chaddha