/homebridge-dafang

Homebridge Plugin for Xiaomi Dafang / Wyze Cam IP Camera => Hey Siri, Start Video Recording

Primary LanguageJavaScriptMIT LicenseMIT

homebridge-dafang

NPM

npm npm CircleCI

Homebridge Plugin for Xiaomi Dafang / Wyze Camera

Installation

  1. Install ffmpeg on your device
  2. Install the plugin using:
    $ npm install -g --unsafe-perm homebridge
    $ npm install -g --unsafe-perm homebridge-dafang
  1. Connect/Run MongoDB to host MQTT locally. Change Config to connect to external MQTT Broker. You can use mlab.com to host a free mongoDB instance.
  2. Edit config.json and add your camera.
  3. Run Homebridge
  4. 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

Prerequisite :

  1. Xiaomi Dafang / Wyze Camera running CFW (https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/)

MQTT-Control & MQTT-Status must be running with configured host. You can configure MQTT Broker configuration at /system/sdcard/config/mqtt.conf.

This library supports hosting MQTT Broker as well as connecting to existing Broker as a Client.

Supported Cameras :

Name Picture
Xiaomi Dafang Dafang
Xiaomi Xiaofang 1S XiaoFang
Wyzecam Pan Dafang
Wyzecam V2 XiaoFang
Sannce I21AG, MixSight HX-I2110T2, WanScam HW0036, Escam G02, Digoo BB-M2 XiaoFang
Any other Device with Ingenic T10/T20 Device T20

Lint

    $ npm run lint

Accessories :

Accessory Type Description Config
Motion Sensor motionSensor Alerts if Motion is Detected 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
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

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

Todo :

  • Motion Sensor
  • Night Mode Sensor
  • Night Mode Toggle Switch
  • Automatic Night Mode Toggle Switch
  • Automatic Motion Tracking Toggle Switch
  • Camera
  • Rotate/Move Camera
  • Support for Multiple Cameras (Volunteer Testers Required)
  • Recording Video + Audio on Rpi
  • Recoring Audio on Rpi
  • Capture Image on Rpi
  • Recorded Media Storage Full Sensor
  • Clear Storage Switch
  • Reset FFMEG Switch
  • Update Documentation + Sample Video
  • Timelapse Switch
  • Intercom 2 Way Audio *

* => Needs changes on Dafang CFW.

Demo :

Sorry for crappy quality. Tested on Rpi + Slow Wifi

Advanced Demo :

Advanced Demo

Simple Demo :

Simple Demo

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
camera/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": "motionSensor",
                                        "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"
                                    }
                    ]
            }]
        }
    ]
}

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

mail@sahilchaddha.com