Skip to content

About

Scrypted Intercom proxy for split RTSP/PTZ and Tapo two-way audio camera devices

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Scrypted Tapo Intercom Proxy

A small Scrypted mixin that gives an existing RTSP/PTZ camera device an Intercom interface by delegating talkback to another Scrypted camera that already has working two-way audio.

The plugin was built and tested with a TP-Link Tapo C246D dual-lens camera and Scrypted 0.143.0. The PTZ lens remains an independent RTSP Camera device while the C246D wide-camera device, using the official @scrypted/tapo Two Way Audio extension, acts as its Intercom backend.

Architecture

Apple Home
  -> RTSP/PTZ camera device
       video: existing RTSP streams
       PTZ: existing ONVIF PTZ extension
       Intercom: Tapo Intercom Proxy
         -> selected camera with an existing Intercom interface
              -> physical Tapo camera talkback

The proxy passes the original Scrypted MediaObject unchanged to the backend. It does not implement the Tapo protocol, transcode audio, change RTSP streams, or modify PTZ, HomeKit, motion, or recording configuration.

Requirements

  • Scrypted 0.143.0 or a compatible runtime.
  • An RTSP/PTZ target device with type Camera and no existing Intercom interface.
  • A separate Scrypted camera that already exposes a working Intercom interface.
  • For Tapo cameras, enable Third-Party Compatibility for the Tapo account.
  • Enable the official Tapo Two Way Audio extension on the backend camera and configure its Tapo cloud password.

Third-Party Compatibility is a Tapo account-wide setting. The exact location in the Tapo app may vary, but current versions expose it under Me -> Third-Party Services -> Third-Party Compatibility.

Build

npm ci
npm run tsc
npm run build

The deployable archive is written to out/plugin.zip. The build deliberately removes sdk.json: Scrypted 0.143.0 loads this development plugin through its evalLocal runtime and injects deviceManager and systemManager. Adding sdk.json or importing the default runtime object from @scrypted/sdk causes startup failure in this environment.

Development dependency audit

At the time of publication, npm reports GHSA-xcpc-8h2w-3j85 through adm-zip, a transitive dependency of the official @scrypted/sdk build tooling. The affected package is development-only and is not included in the deployed runtime bundle. npm currently proposes a breaking SDK downgrade, and the latest official SDK still depends on adm-zip 0.5.x, so this repository does not apply an unverified forced override. Only build trusted source and plugin archives.

Install

Development deployment

  1. Download or clone this repository.
  2. Run npm ci, npm run tsc, and npm run build.
  3. Open the Scrypted management console.
  4. Install or open the JavaScript development plugin.
  5. Upload/deploy out/plugin.zip using your normal development-plugin flow.

Do not remove an existing HomeKit pairing or change working RTSP URLs.

Configure

  1. Confirm the backend wide-camera device already supports Intercom and that two-way audio works directly on that device.
  2. Open the RTSP/PTZ camera device.
  3. Enable the Tapo Intercom Proxy extension.
  4. In the extension settings, select Intercom Backend.
  5. Choose the working wide-camera device. The list only includes devices that already expose Intercom.
  6. Restart the HomeKit plugin without removing or recreating the pairing.
  7. Open the RTSP/PTZ camera in Apple Home and test the microphone button.

The mixin is offered only to Camera devices that do not already expose Intercom; it will not overwrite a native or existing talkback implementation.

Troubleshooting

Plugin fails before canMixin

Verify that sdk.json is absent from out/plugin.zip. This project must not use a runtime import sdk from '@scrypted/sdk', ScryptedDeviceBase, SettingsMixinDeviceBase, or another helper that expects an initialized default SDK object during module evaluation.

HTTP 401 from Tapo Two Way Audio

Enable Tapo Third-Party Compatibility and verify the cloud password stored on the official Tapo Two Way Audio extension. The proxy itself performs no Tapo authentication.

Microphone button does not appear in Apple Home

Confirm that the proxy extension is active, Intercom Backend is selected, and the target device shows the Intercom interface in Scrypted. Then restart the HomeKit plugin. Do not remove the HomeKit pairing.

Live view opens slowly

Check whether HomeKit is forcing full video transcoding. A compatible H.264 substream, the default RTP sender, disabled forced transcoding, and Rebroadcast prebuffering can substantially reduce startup time. These settings are independent of this Intercom proxy.

Security

Never publish Scrypted logs containing Authorization headers, RTSP URLs with credentials, cloud passwords, device tokens, or SRTP key material. HTTP Basic authorization values are only Base64 encoded and can reveal credentials.

Compatibility

Confirmed:

  • Scrypted server 0.143.0 on Linux x64
  • TP-Link Tapo C246D
  • RTSP stream6/stream7 PTZ-lens device
  • official @scrypted/tapo Two Way Audio backend
  • Apple Home/HomeKit talkback

Other camera models may work when the target and backend follow the same split-device architecture, but have not yet been verified.

License

MIT

About

Scrypted Intercom proxy for split RTSP/PTZ and Tapo two-way audio camera devices

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages