1.5.1 • Published 6 years ago
homebridge-dafang v1.5.1
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.jsonin 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 lintNeed Help ?
Get Slack Invite => https://slackin-znyruquwmv.now.sh/
Slack Channel => https://homebridgeteam.slack.com/messages/homebridge-dafang
Slack User => @sahilchaddha
Author
Sahil Chaddha
mail@sahilchaddha.com
