Homebridge Plugin for Xiaomi Dafang / Wyze Camera
- 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 |
- Timelapse Switch
- Intercom 2 Way Audio **
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 |
** => Reinstall Dafang CFW for system switches with https://github.com/sahilchaddha/Xiaomi-Dafang-Hacks/
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
Sorry for crappy quality. Tested on Rpi + Slow Network
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 |
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 |
{
"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"
}
]
}]
}
]
}
$ npm run lint
Get Slack Invite => https://slackin-znyruquwmv.now.sh/
Slack Channel => https://homebridgeteam.slack.com/messages/homebridge-dafang
Slack User => @sahilchaddha
Sahil Chaddha