Skip to content

fix(http): enable livestream for T8426 dual-lens floodlight cameras#949

Open
qike-ms wants to merge 1 commit into
bropat:developfrom
qike-ms:fix/t8426-livestream
Open

fix(http): enable livestream for T8426 dual-lens floodlight cameras#949
qike-ms wants to merge 1 commit into
bropat:developfrom
qike-ms:fix/t8426-livestream

Conversation

@qike-ms

@qike-ms qike-ms commented Jul 1, 2026

Copy link
Copy Markdown

What & why

Fixes #948 — the T8426 dual-lens floodlight camera (FLOODLIGHT_CAMERA_8426,
device type 87) never streams: startLivestream() resolves but the camera sends
no media and the P2P session times out after 5s with zero bytes.

Root cause: the T8426 is a floodlight (isFloodLight(87) === true) but matches
no earlier branch in startLivestream(), so it falls through to the generic
floodlight branch ("CMD_DOORBELL_SET_PAYLOAD (3)"), whose payload omits
camera_type / entrytype. Its sibling T8425 uses the richer branch "(1)"
payload (camera_type: 0, entrytype: 0, accountId) and works. This routes
the T8426 through the same branch.

Change

  • device.ts: add instance helper isFloodLightT8426() (mirrors
    isFloodLightT8425(); the static Device.isFloodLightT8426() already existed).
  • station.ts: include device.isFloodLightT8426() in the branch-1 condition of
    startLivestream().
     } else if (
       device.isOutdoorPanAndTiltCamera() ||
       device.isFloodLightT8425() ||
+      device.isFloodLightT8426() ||
       (device.isBatteryDoorbellDualE340() && !this.isStationMiniBaseChime()) ||
       ((device.isIndoorPTCameraE30() || device.isIndoorCameraBase()) && this.isDeviceControlledByHomeBase())
     ) {

Verification

Tested on T8426 (sw 1.2.1.0). Before: 0 bytes + 5s timeout. After: all
four start both lenses (1920x1080 + 2560x1440 H264), ~1.3 MB video +
~53 KB audio in ~18s, first bytes 00000001 67 … (valid H264 SPS). Live 1080p
playback confirmed end-to-end.

  • npm run build:ts — clean
  • npx prettier --check src/http/station.ts src/http/device.ts — clean

Notes

I understand the library is in stopgap/deprecation mode; this is a minimal
one-line routing fix so these cameras keep working on the current backend. No
behavioural change for any other device.

The T8426 (FLOODLIGHT_CAMERA_8426, device type 87) is recognised as a
floodlight (isFloodLight(87) === true) but, not matching any earlier
branch in startLivestream(), it fell through to the generic floodlight
branch (CMD_DOORBELL_SET_PAYLOAD "(3)") whose payload omits camera_type
and entrytype. With that payload the camera never sends any media and the
P2P session times out after 5s ("rtsp livestream stopped") with zero bytes.

Its sibling T8425 uses the richer branch "(1)" payload
(camera_type: 0, entrytype: 0, accountId) and streams fine. Routing the
T8426 into the same branch makes it stream as well.

Verified on 4x T8426 (sw 1.2.1.0): both lenses start (1920x1080 +
2560x1440 H264) with ~1.3 MB video + audio in ~18s; previously 0 bytes.

Adds an instance isFloodLightT8426() helper (mirroring isFloodLightT8425)
and includes it in the branch-1 condition.
@qike-ms

qike-ms commented Jul 8, 2026

Copy link
Copy Markdown
Author

Friendly ping.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant