Skip to content

docs: Document camera live view WebRTC signaling protocol for V1 vacuums - #980

Merged
Lash-L merged 1 commit into
Python-roborock:mainfrom
Lash-L:docs-camera-protocol
Oct 12, 2026
Merged

Lash-L merged 1 commit into
Python-roborock:mainfrom
Lash-L:docs-camera-protocol

Conversation

@Lash-L

@Lash-L Lash-L commented Oct 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds comprehensive internal documentation for the reverse-engineered Roborock camera live streaming protocol in docs/CAMERA_PROTOCOL.md and links it from docs/README.md.

This is PR 1 of a multi-part series breaking down vacuum camera support into small, reviewable increments following discussion in #764 and #738.

Scope & Evidence

  • Protocol family: Roborock V1 (pv=1.0).
  • Feature flag: is_video_monitor_supported (bit mask 8, bit 3 of robotNewFeatures).
  • Tested hardware: Roborock Qrevo Curv (model a135).
  • Source: Reverse-engineered from mobile app live view captures and verified against a standalone test client.
  • Changes: Documentation only; no library or runtime code changes and no new dependencies.

What is Documented

  • Session flow: Complete authentication and WebRTC negotiation sequence (PIN MD5 validation -> TURN credentials -> SDP offer/answer -> ICE candidate exchange -> stream lifecycle -> teardown).
  • Framing & transport: V1 JSON-RPC carried in dps["101"] / dps["102"], outer protocol headers (101 over MQTT, 4 over local TCP), and MQTT topic structures.
  • Serialization: Base64-encoded UTF-8 JSON encapsulation for SDP offers/answers and ICE candidate structures.
  • Commands: Parameter schemas and response structures for camera preview, video quality switching, TURN credential acquisition, two-way intercom, and remote driving.
  • Media specifications: H.264 video codec and Opus audio wire transport (distinguished from decoded application PCM buffers).
  • Operational considerations: Single-client session concurrency, PIN rate-limiting, and residential NAT traversal.

Review Notes

  • Cross-references existing V1 documentation in docs/DEVICES.md, docs/V1_DEVICE_FEATURES.md, and docs/V1_API_COMMANDS.md.
  • Reviewed and iterated with automated analysis to ensure protocol framing, topic segments, and command schemas match the library's existing transport abstractions.

@Lash-L
Lash-L requested a review from allenporter October 11, 2026 23:57
@Lash-L
Lash-L merged commit 6a0aab0 into Python-roborock:main Oct 12, 2026
9 checks passed
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.

2 participants