potmat / homebridge-google-nest-sdm

A Homebridge plugin for Google Nest devices that uses the Google Smart Device Management API. Supports Cameras, Doorbells, Displays, and Thermostats. Includes support for HomeKit Secure Video.
ISC License
140 stars 17 forks source link

Camera Stream Fails with Strange WebRTC Cryptographic Error #68

Closed yuxiangc25 closed 1 year ago

yuxiangc25 commented 1 year ago

The SDM support for the new wired nest doorbell is added by Google today. I can successly detect the device using this plugin but when trying to open the live video, I see following error:

[homebridge-google-nest-sdm] Error: Cannot get schema for 'Array' target at AsnSchemaStorage.get (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/schema.js:17:19) at Function.toASN (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:24:48) at Function.toAsnItem (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:152:33) at Function.toASN (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:52:48) at Function.serialize (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js:14:21) at Function.serialize (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/asn1-schema/build/cjs/convert.js:10:43) at Function.create (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/@peculiar/x509/build/x509.cjs.js:2405:43) at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5) at Function.CipherContext.createSelfSignedCertificateWithKey (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/dtls/src/context/cipher.ts:111:18) at RTCDtlsTransport.setupCertificate (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/werift/src/transport/dtls.ts:69:9) at RTCPeerConnection.createOffer (/usr/lib/node_modules/homebridge-google-nest-sdm/node_modules/werift/src/peerConnection.ts:221:7) at WebRtcNestStreamer.initialize (/usr/lib/node_modules/homebridge-google-nest-sdm/src/NestStreamer.ts:104:21) at DoorbellStreamingDelegate.startStream (/usr/lib/node_modules/homebridge-google-nest-sdm/src/StreamingDelegate.ts:300:20)

potmat commented 1 year ago

Hi @yuxiangc25, something failed way down in the bowels of WebRTC. What environment are you running the plugin on?

yuxiangc25 commented 1 year ago

Hi @potmat , the plugin runs on a Raspberry Pi 4 Model B,

OS version: PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian

potmat commented 1 year ago

Looks like there's some problem with cyptography when creating the offer SDP. What could be causing this I haven't the foggiest idea. I'm using a RPi4 myself without issues. Maybe try installing the preconfigured homebridge image: https://github.com/homebridge/homebridge-raspbian-image/releases/tag/v1.0.39

yuxiangc25 commented 1 year ago

Update: I tried to set this plugin as child bridge, and paired with homekit again...then it worked. Thanks!