ring: Error: Cannot get schema for 'Array' target when streaming

Bug Report

Describe the Bug

On all versions >9.24.0 the error below appears as soon as I start a live stream. Camera then shows as unavailable in Homekit. With version 9.24.0 everything works fine.

To Reproduce

Steps to reproduce the behavior:

  • Start Homebridge
  • Attempt to livestream from Ring doorbell camera
  • See error

Expected behavior

Live stream is showing

Screenshots/Logs

[5/22/2022, 11:47:19 AM] [Ring] Preparing Live Stream for Haustür
[5/22/2022, 11:47:20 AM] [Ring] Stream Prepared for Haustür (0.681s)
[5/22/2022, 11:47:20 AM] [Ring] Activating stream for Haustür (0.73s)
[5/22/2022, 11:47:21 AM] [Ring] iceConnectionStateChange: completed
[5/22/2022, 11:47:21 AM] Error: Cannot get schema for 'Array' target
    at AsnSchemaStorage.get (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-schema/build/cjs/schema.js:18:19)
    at Function.toASN (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-
schema/build/cjs/serializer.js:21:48)
    at Function.toAsnItem (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:140:33)
    at Function.toASN (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:46:46)
    at Function.serialize (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:14:21)
    at Function.serialize (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/asn1-schema/build/cjs/convert.js:10:43)
    at Function.create (/homebridge/node_modules/homebridge-ring/node_modules/@peculiar/x509/build/x509.cjs.js:1740:43)
    at Function.CipherContext.createSelfSignedCertificateWithKey (/homebridge/node_modules/homebridge-ring/node_modules/dtls/src/context/cipher.ts:111:18)
    at RTCDtlsTransport.setupCertificate (/homebridge/node_modules/homebridge-ring/node_modules/werift/src/transport/dtls.ts:71:9)
    at ensureCert (/homebridge/node_modules/homebridge-ring/node_modules/werift/src/peerConnection.ts:1065:34)
[5/22/2022, 11:47:21 AM] Got SIGTERM, shutting down Homebridge...
[5/22/2022, 11:47:21 AM] [Ring] Stopped Live Stream for Haustür
[5/22/2022, 11:47:21 AM] [Ring] connectionStateChange: closed
[5/22/2022, 11:47:21 AM] [Ring] iceConnectionStateChange: closed

Additional context

Latest docker container image is downloaded and in use. hb-service update-node in image results in

ℹ Node.js v16.15.0 already up-to-date.

Same issue was mentioned in bug #929. Here the solution apparently was to update Node.js. However, on the latest oznu-homebridge docker image, the latest Node.js is already in use.

Homebridge Ring Config

Post homebridge-ring platform config without sensitive information

            "refreshToken": "XXX",
            "avoidSnapshotBatteryDrain": false,
            "debug": true,
            "platform": "Ring"

Environment

  • OS: oznu-homebridge Docker image on Synology NAS
  • Node.js: 16.15.0
  • NPM: 8.5.5
  • homebridge-ring: 11.0.2
  • homebridge: 1.4.1
  • hoobs: N/A

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 17 (4 by maintainers)

Most upvoted comments

I found this issue on the homebridge-google-nest-sdm plugin, also using the same dependencies as the homebridge-ring plugin.

Their solution works, putting homebridge-ring in a child bridge. I don’t know why, I even tried disabling all other plugins, clearing cached accessory info and persist data but nothing would make it work under the main bridge.

I’ve been suffering with this issue since the update to 10.x. As above, putting the Ring plugin into a child bridge has solved the issue. No idea why this fixes it, but thanks!

FYI: after updating to the latest oznu/homebridge docker container (which includes homebridge 1.5.0), the latest 11.0.5 plugin finally works. 😃

@washcroft @ashishgururani can you please confirm as well? Then I will close the ticket.

@shinyoshiaki I see you updated some dependencies in the latest version. Was this one of them?

@dgreif Yes. I have also updated this dependent library

@dgreif The value of the argument value of the dependent library may be incorrect, or it may be a bug in the dependent library. Werift uses an older version of the library, so updates are costly and require modification work.

I will release a version of werift that includes code to output the arguments to the function to the console. Can you use that to identify the arguments value?