@@ -15,6 +15,10 @@ Cloud and Network.
1515 * **Washers (A01)**: Use `device.a01_properties` for Dyad/Zeo devices.
1616 * Use `await device.a01_properties.query_values([...])` to get state.
1717 * Use `await device.a01_properties.set_value(protocol, value)` to control.
18+ * **Vacuums (B01 Q10)**: Use `device.b01_q10_properties` for Q10 series devices.
19+ * Use `device.b01_q10_properties.vacuum` to access vacuum commands (start, pause, stop, dock, empty dustbin, set clean mode, set fan level).
20+ * Use `device.b01_q10_properties.command.send()` for raw DP commands.
21+ * **Vacuums (B01 Q7)**: Use `device.b01_q7_properties` for Q7 series devices.
1822
1923## Background: Understanding Device Protocols
2024
@@ -26,7 +30,7 @@ Cloud and Network.
2630|----------|----------------|------|-----------|--------------|-------|
2731| **V1** (`pv=1.0`) | Most vacuum robots (S7, S8, Q5, Q7, etc.) | ✅ | ✅ | `V1Channel` with `RpcChannel` | Prefers local, falls back to MQTT |
2832| **A01** (`pv=A01`) | Dyad, Zeo washers | ✅ | ❌ | `MqttChannel` + helpers | MQTT only, DPS protocol |
29- | **B01** (`pv=B01`) | Some newer models | ✅ | ❌ | `MqttChannel` + helpers | MQTT only, DPS protocol |
33+ | **B01** (`pv=B01`) | Q7, Q10 series | ✅ | ❌ | `MqttChannel` + helpers | MQTT only, DPS protocol |
3034
3135**Key Point:** The `DeviceManager` automatically detects the protocol version and creates the appropriate channel type. You don't need to handle this manually.
3236
@@ -47,7 +51,7 @@ graph TB
4751 subgraph "Device Types by Protocol"
4852 V1Dev[V1 Devices<br/>pv=1.0<br/>Most vacuums]
4953 A01Dev[A01 Devices<br/>pv=A01<br/>Dyad, Zeo]
50- B01Dev[B01 Devices<br/>pv=B01<br/>Some models ]
54+ B01Dev[B01 Devices<br/>pv=B01<br/>Q7, Q10 series ]
5155 end
5256
5357 subgraph "Traits Layer"
@@ -148,7 +152,7 @@ graph TB
148152|----------|-------------|---------------|--------------|----------|
149153| **V1** (`pv=1.0`) | `V1Channel` with `RpcChannel` | ✅ Yes | Multi-strategy (Local → MQTT) | Most vacuum robots |
150154| **A01** (`pv=A01`) | `MqttChannel` + helpers | ❌ No | Direct MQTT | Dyad, Zeo washers |
151- | **B01** (`pv=B01`) | `MqttChannel` + helpers | ❌ No | Direct MQTT | Some newer models |
155+ | **B01** (`pv=B01`) | `MqttChannel` + helpers | ❌ No | Direct MQTT | Q7, Q10 series |
152156
153157## Account Setup Internals
154158
@@ -249,7 +253,7 @@ sequenceDiagram
249253 RPC-->>App: Status
250254```
251255
252- #### A01/B01 Devices (Dyad, Zeo) - MQTT Only
256+ #### A01/B01 Devices (Dyad, Zeo, Q7, Q10 ) - MQTT Only
253257
254258```mermaid
255259sequenceDiagram
@@ -302,7 +306,7 @@ sequenceDiagram
302306| **Local Support** | ✅ Yes, preferred | ❌ No |
303307| **Fallback** | Local → MQTT | N/A |
304308| **Connection** | Requires network info fetch | Direct MQTT |
305- | **Examples** | Most vacuum robots | Dyad washers, Zeo models |
309+ | **Examples** | Most vacuum robots | Dyad washers, Zeo, Q7, Q10 |
306310
307311### MQTT Connection (All Devices)
308312
@@ -510,7 +514,7 @@ Different device models use different protocol versions:
510514|----------|---------|----------|
511515| V1 | Most vacuum robots | JSON RPC with AES encryption |
512516| A01 | Dyad, Zeo | DPS-based protocol |
513- | B01 | Some newer models | DPS-based protocol |
517+ | B01 | Q7, Q10 series | DPS-based protocol |
514518| L01 | Local protocol variant | Binary protocol negotiation |
515519
516520The protocol layer handles encoding/decoding transparently based on the device's `pv` field.
@@ -577,11 +581,14 @@ roborock/
577581│ | ├── b01_q10_channel.py # B01 Q10 protocol helpers
578582│ | └── ...
579583│ └── traits/ # High-level device-specific command traits
580- │ └── v1/ # V1 device traits
581- │ ├── __init__.py # Trait initialization
582- │ ├── clean.py # Cleaning commands
583- │ ├── map.py # Map management
584- │ └── ...
584+ │ ├── v1/ # V1 device traits
585+ │ │ ├── __init__.py # Trait initialization
586+ │ │ ├── clean.py # Cleaning commands
587+ │ │ ├── map.py # Map management
588+ │ │ └── ...
589+ │ └── b01/ # B01 device traits
590+ │ ├── q10/ # Q10 series (vacuum, command)
591+ │ └── q7/ # Q7 series
585592├── mqtt/ # MQTT session management
586593│ ├── session.py # Base session interface
587594│ └── roborock_session.py # MQTT session with idle timeout
0 commit comments