Skip to content

Routes motion alerts for Dahua and Lorex camera streams to homebridge-camera-ffmpeg

Notifications You must be signed in to change notification settings

kushagharahi/homebridge-dahua-alerts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

homebridge-dahua-alerts

verified-by-homebridge npm version npm total downloads

Routes motion alerts for Dahua, Alhua, Amcrest and Lorex camera streams to homebridge-camera-ffmpeg

Like this plugin? -> Buy me a ☕coffee☕


Confirmed working with:

Dahua DVR Dahua/Amcrest Standalone Camera Lorex DVR
- IP3M-943B -
- IP5M-B1186EB -
- DH-IPC-HDW3641TMP -
NVR4208-8P - -
- - LHV1004 DHV
DHI-HCVR4116HS-S3 - -
DH-XVR5116HS-X - -
- DH-IPC-HDBW4631R-S -
DHI-NVR4104HS-P-4Ks2 - -
- - NR818
- N43AJ52-B -

but lots of Dahua/Lorex NVRs and standalone cameras share this VideoMotion api.

Installation

  1. Install Homebridge using the official instructions.
  2. Install homebridge-camera-ffmpeg
  3. Configure your RTSP streams in homebridge-camera-ffmpeg
    1. Configure "porthttp": 8088 for Http-based Automation](https://sunoo.github.io/homebridge-camera-ffmpeg/automation/http.html)
    2. Configure "motion": true for the camera streams you want motion detection
    3. Configure "motionTimeout": 0 to disable automatically resetting the motion after 1 second default
    4. (Optional) Configure "localhttp": true to ensure HTTP automations only work from same device (for enhanced security)
  4. Install homebridge-dahua-alerts.
  5. Configure your NVR and camera settings.
    • Ensure you have enabled https or port 443 on your device if you're getting ECONNREFUSED in the debug logs. Not required by all.

Sample config.json

  • Configuration for one NVR with multiple cameras

homebridge-camera-ffmpeg

{
    "name": "Camera FFmpeg",
    "porthttp": 8088,
    "localhttp": true,
    "cameras": [
        {
            "name": "Driveway",
            "motion": true,
            "motionTimeout": 0,
            "videoConfig": {
                "source": "-i rtsp://admin:<snip>@192.168.1.XX:554/cam/realmonitor?channel=1&subtype=1"
            }
        },
        {
            "name": "Porch",
            "motion": true,
            "motionTimeout": 0,
            "videoConfig": {
                "source": "-i rtsp://admin:<snip>@192.168.1.XX:554/cam/realmonitor?channel=2&subtype=1"
            }
        },
        {
            "name": "Backdoor",
            "motion": true,
            "motionTimeout": 0,
            "videoConfig": {
                "source": "-i rtsp://admin:<snip>@192.168.1.XX:554/cam/realmonitor?channel=4&subtype=1"
            }
        }
    ],
    "platform": "Camera-ffmpeg"
}

homebridge-dahua-alerts

{
    "cameras": [
        {
            "index": 0,
            "cameraName": "Driveway"
        },
        {
            "index": 1,
            "cameraName": "Porch"
        },
        {
            "index": 3,
            "cameraName": "Backdoor"
        }
    ],
    "homebridgeCameraFfmpegHttpPort": 8088,
    "host": "XX.XX.XX.XX",
    "user": "admin",
    "pass": "XX",
    "eventTypes": 
        {
        "VideoMotion": true
        },
    "platform": "dahua-alerts"
}
  • homebridgeCameraFfmpegHttpPort must match the porthttp config in the homebridge-camera-ffmpeg config
  • host is the IP of the NVR or camera
  • user is username of the NVR or camera
  • pass is the password of the NVR or camera
  • eventTypes are a list of events you want to subscribe to. Currently the list includes VideoMotion, AlarmLocal, SmartMotionHuman, SmartMotionVehicle, CrossLineDetection, and CrossRegionDetection
  • useHttp (optional) use HTTP instead of HTTPS to connect to host

For each camera you want to monitor, add a new entry to the cameras array.

  • index if the camera's channel number substracted by 1 (the index starts from 0, the camera channel starts from 1)
  • cameraName must match the name of the camera specified in the homebridge-camera-ffmpeg config

Override Camera Connection Credentials

This is useful if you have standalone IP Camera(s) (not going through an NVR), a mix of IP Cameras and NVR(s), or multiple NVRs.

To define a host/user/pass on a camera simply add the cameraCredentials object. If you have a top level host/user/pass defined, this object will override it.

    "cameras": [
        {
            "index": 0,
            "cameraName": "Driveway"
            "cameraCredentials": {
                    "host": "XX.XX.XX.XX",
                    "user": "admin",
                    "pass": "XX"
            }
        },
  • If using a standalone camera, the index will always be 0

Local development

  • npm run build to get JS output in dist

Credits

Referenced nayrnet/node-dahua-api for the Dahua/Lorex motion alerts API.