npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

homebridge-dafang

v1.5.1

Published

Homebridge Plugin for Xiaomi Dafang / Wyze IP Camera

Downloads

36

Readme

homebridge-dafang

NPM

npm npm CircleCI

Homebridge Plugin for Xiaomi Dafang / Wyze Camera

Installation

  1. Install ffmpeg on your device
    $ brew install ffmpeg --with-openh264 --with-fdk-aac
  1. Install the plugin using:
    $ npm install -g --unsafe-perm homebridge
    $ npm install -g --unsafe-perm homebridge-dafang
  1. Install CFW on camera and set up MQTT. Refer to Setup Readme
  2. Edit config.json and add the plugin. Refer to config-sample.json in repository.
  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

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

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 :

Advanced Demo

Simple 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

[email protected]