Add motion detection support to motionEye (#49665)

This commit is contained in:
Dermot Duffy 2021-07-01 02:22:43 -07:00 committed by GitHub
parent 7bd8e2aa55
commit 2868fef7d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 751 additions and 33 deletions

View file

@ -1,19 +1,89 @@
"""Constants for the motionEye integration."""
from datetime import timedelta
from typing import Final
DOMAIN = "motioneye"
from motioneye_client.const import (
KEY_WEB_HOOK_CS_CAMERA_ID,
KEY_WEB_HOOK_CS_CHANGED_PIXELS,
KEY_WEB_HOOK_CS_DESPECKLE_LABELS,
KEY_WEB_HOOK_CS_EVENT,
KEY_WEB_HOOK_CS_FILE_PATH,
KEY_WEB_HOOK_CS_FILE_TYPE,
KEY_WEB_HOOK_CS_FPS,
KEY_WEB_HOOK_CS_FRAME_NUMBER,
KEY_WEB_HOOK_CS_HEIGHT,
KEY_WEB_HOOK_CS_HOST,
KEY_WEB_HOOK_CS_MOTION_CENTER_X,
KEY_WEB_HOOK_CS_MOTION_CENTER_Y,
KEY_WEB_HOOK_CS_MOTION_HEIGHT,
KEY_WEB_HOOK_CS_MOTION_VERSION,
KEY_WEB_HOOK_CS_MOTION_WIDTH,
KEY_WEB_HOOK_CS_NOISE_LEVEL,
KEY_WEB_HOOK_CS_THRESHOLD,
KEY_WEB_HOOK_CS_WIDTH,
)
CONF_CLIENT = "client"
CONF_COORDINATOR = "coordinator"
CONF_ADMIN_PASSWORD = "admin_password"
CONF_ADMIN_USERNAME = "admin_username"
CONF_SURVEILLANCE_USERNAME = "surveillance_username"
CONF_SURVEILLANCE_PASSWORD = "surveillance_password"
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
DOMAIN: Final = "motioneye"
MOTIONEYE_MANUFACTURER = "motionEye"
ATTR_EVENT_TYPE: Final = "event_type"
ATTR_WEBHOOK_ID: Final = "webhook_id"
SIGNAL_CAMERA_ADD = f"{DOMAIN}_camera_add_signal." "{}"
SIGNAL_CAMERA_REMOVE = f"{DOMAIN}_camera_remove_signal." "{}"
CONF_CLIENT: Final = "client"
CONF_COORDINATOR: Final = "coordinator"
CONF_ADMIN_PASSWORD: Final = "admin_password"
CONF_ADMIN_USERNAME: Final = "admin_username"
CONF_SURVEILLANCE_USERNAME: Final = "surveillance_username"
CONF_SURVEILLANCE_PASSWORD: Final = "surveillance_password"
CONF_WEBHOOK_SET: Final = "webhook_set"
CONF_WEBHOOK_SET_OVERWRITE: Final = "webhook_set_overwrite"
TYPE_MOTIONEYE_MJPEG_CAMERA = "motioneye_mjpeg_camera"
DEFAULT_WEBHOOK_SET: Final = True
DEFAULT_WEBHOOK_SET_OVERWRITE: Final = False
DEFAULT_SCAN_INTERVAL: Final = timedelta(seconds=30)
EVENT_MOTION_DETECTED: Final = "motion_detected"
EVENT_FILE_STORED: Final = "file_stored"
EVENT_MOTION_DETECTED_KEYS: Final = [
KEY_WEB_HOOK_CS_EVENT,
KEY_WEB_HOOK_CS_FRAME_NUMBER,
KEY_WEB_HOOK_CS_CAMERA_ID,
KEY_WEB_HOOK_CS_CHANGED_PIXELS,
KEY_WEB_HOOK_CS_NOISE_LEVEL,
KEY_WEB_HOOK_CS_WIDTH,
KEY_WEB_HOOK_CS_HEIGHT,
KEY_WEB_HOOK_CS_MOTION_WIDTH,
KEY_WEB_HOOK_CS_MOTION_HEIGHT,
KEY_WEB_HOOK_CS_MOTION_CENTER_X,
KEY_WEB_HOOK_CS_MOTION_CENTER_Y,
KEY_WEB_HOOK_CS_THRESHOLD,
KEY_WEB_HOOK_CS_DESPECKLE_LABELS,
KEY_WEB_HOOK_CS_FPS,
KEY_WEB_HOOK_CS_HOST,
KEY_WEB_HOOK_CS_MOTION_VERSION,
]
EVENT_FILE_STORED_KEYS: Final = [
KEY_WEB_HOOK_CS_EVENT,
KEY_WEB_HOOK_CS_FRAME_NUMBER,
KEY_WEB_HOOK_CS_CAMERA_ID,
KEY_WEB_HOOK_CS_NOISE_LEVEL,
KEY_WEB_HOOK_CS_WIDTH,
KEY_WEB_HOOK_CS_HEIGHT,
KEY_WEB_HOOK_CS_FILE_PATH,
KEY_WEB_HOOK_CS_FILE_TYPE,
KEY_WEB_HOOK_CS_THRESHOLD,
KEY_WEB_HOOK_CS_FPS,
KEY_WEB_HOOK_CS_HOST,
KEY_WEB_HOOK_CS_MOTION_VERSION,
]
MOTIONEYE_MANUFACTURER: Final = "motionEye"
SIGNAL_CAMERA_ADD: Final = f"{DOMAIN}_camera_add_signal." "{}"
SIGNAL_CAMERA_REMOVE: Final = f"{DOMAIN}_camera_remove_signal." "{}"
TYPE_MOTIONEYE_MJPEG_CAMERA: Final = "motioneye_mjpeg_camera"
WEB_HOOK_SENTINEL_KEY: Final = "src"
WEB_HOOK_SENTINEL_VALUE: Final = "hass-motioneye"