8000 GitHub · Where software is built
[go: up one dir, main page]

Skip to content

Function fails and throws exception when I try to use Apple Secure Video #1528

@soulcook

Description

@soulcook

Describe The Problem:

Camera-FFMPEG was working fine with my six cameras for a few years, until I tried to use Apple Secure Video recording (when that became possible).

I enabled video recording on motion-detect for two of the cameras, and the home app accepted that without complaint. But no video is ever recorded, and now it throws the exception shown in the log below every time I start Homebridge.

To Reproduce:

Enable "Record When Motion Is Detected" on a camera in the home app. The setting is accepted, but no video is ever recorded.

Logs:

Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)
Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)
Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)
Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)
Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)
Failed to properly initialize CameraRecordingDelegate from persistent storage: TypeError: Cannot read properties of null (reading 'updateRecordingConfiguration')
    at RecordingManagement.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/camera/RecordingManagement.ts:864:23)
    at CameraController.deserialize (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/controller/CameraController.ts:938:34)
    at ControllerStorage.restoreController (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:165:20)
    at /volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:191:12
    at Array.forEach (<anonymous>)
    at ControllerStorage.init (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:190:29)
    at ControllerStorage.load (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/model/ControllerStorage.ts:231:10)
    at Accessory.<anonymous> (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1295:30)
    at step (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:196:27)
    at Object.next (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:177:57)
    at /volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:170:75
    at new Promise (<anonymous>)
    at Object.__awaiter (/volume2/homebridge/node_modules/homebridge/node_modules/tslib/tslib.js:166:16)
    at Accessory.publish (/volume2/homebridge/node_modules/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:939:24)
    at BridgeService.handlePublishExternalAccessories (/volume2/homebridge/node_modules/homebridge/src/bridgeService.ts:462:20)

Homebridge Config:

{
    "name": "Camera ffmpeg",
    "videoProcessor": "/volume2/@appstore/ffmpeg6/bin/ffmpeg6",
    "cameras": [
        {
            "name": "Courtyard Camera",
            "manufacturer": "Reolink",
            "model": "RLC-810A",
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin: xxxxx@192.168.185.10",
                "stillImageSource": "-i http://192.168.185.10/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=Secure99",
                "maxStreams": 2,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": true,
                "debug": false
            }
        },
        {
            "name": "Garden Camera",
            "manufacturer": "Reolink",
            "model": "RLC-810A",
            "motion": true,
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin: xxxxx@192.168.185.11",
                "stillImageSource": "-i http://192.168.185.11/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=Secure99",
                "maxStreams": 2,
                "maxWidth": 1280,
                "maxHeight": 720,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": true,
                "debug": false
            }
        },
        {
            "name": "Greenhouse Camera",
            "manufacturer": "Amcrest",
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin: xxxxx@192.168.185.12",
                "stillImageSource": "-i http://admin:Secure99@192.168.185.12/cgi-bin/snapshot.cgi",
                "maxStreams": 2,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": false,
                "debug": false
            }
        },
        {
            "name": "Patio Camera",
            "manufacturer": "Amcrest",
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin: xxxxx@192.168.185.13",
                "stillImageSource": "-i http://admin:Secure99@192.168.185.13/cgi-bin/snapshot.cgi",
                "maxStreams": 2,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": false,
                "debug": false
            }
        },
        {
            "name": "Hall Camera",
            "manufacturer": "Amcrest",
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin: xxxxx@192.168.185.14",
                "stillImageSource": "-i http://admin:Secure99@192.168.185.14/cgi-bin/snapshot.cgi",
                "maxStreams": 2,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": false,
                "debug": false
            }
        },
        {
            "name": "Living Room Camera",
            "manufacturer": "Amcrest",
            "unbridge": true,
            "videoConfig": {
                "source": "-rtsp_transport tcp -re -i rtsp://admin:xxxxx@192.168.185.15",
                "stillImageSource": "-i http://admin:Secure99@192.168.185.15/cgi-bin/snapshot.cgi",
                "maxStreams": 2,
                "maxFPS": 20,
                "maxBitrate": 300,
                "vcodec": "libx264",
                "packetSize": 1316,
                "audio": false,
                "debug": false
            }
        }
    ],
    "platform": "Camera-ffmpeg"
}

Environment:

  • Node.js Version: 22.13.1
  • NPM Version: 10.9.2
  • Homebridge Version: 1.9.0
  • Homebridge Camera FFmpeg Version: 4.0.1
  • Homebridge Config UI X Plugin Version: 5.6.1
  • Operating System: Synology

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0