Skip to content

Feat: 引入 Miot 设备 Mock 机制以支持离线开发与测试#59

Merged
sky130 merged 1 commit into
masterfrom
feat-device-mock
Apr 30, 2026
Merged

Feat: 引入 Miot 设备 Mock 机制以支持离线开发与测试#59
sky130 merged 1 commit into
masterfrom
feat-device-mock

Conversation

@sky130
Copy link
Copy Markdown
Owner

@sky130 sky130 commented Apr 30, 2026

  • 新增 Mock 核心类:引入 BaseMockMiotDeviceClientMockMiotDeviceClient,支持基于 specAtt 自动初始化属性存储,并提供属性读写与动作执行的钩子(Hook)机制。
  • 支持异步模拟MockPropertyHook 支持在协程中执行,以便模拟窗帘电机等设备的异步状态切换。
  • 优化 Urn 解析:在解析失败时输出具体的 URN 字符串以便排查。
  • 增强 SpecAtt:为 Property 添加 getDefaultValue() 方法,支持根据数据类型自动生成模拟默认值。
  • 集成 Mock 逻辑
    • DeviceViewModel 中通过 MOCK_PREFIX 识别并自动切换至 NormalMockMiotDeviceClient
    • MainViewModel 中添加了一个 Mock 窗帘设备示例。
  • UI 改进:在设备详情页 activity_device.xml 中新增设备型号(Model)展示,并清理了部分布局代码。

- **新增 Mock 核心类**:引入 `BaseMockMiotDeviceClient` 与 `MockMiotDeviceClient`,支持基于 `specAtt` 自动初始化属性存储,并提供属性读写与动作执行的钩子(Hook)机制。
- **支持异步模拟**:`MockPropertyHook` 支持在协程中执行,以便模拟窗帘电机等设备的异步状态切换。
- **优化 `Urn` 解析**:在解析失败时输出具体的 URN 字符串以便排查。
- **增强 `SpecAtt`**:为 `Property` 添加 `getDefaultValue()` 方法,支持根据数据类型自动生成模拟默认值。
- **集成 Mock 逻辑**:
    - 在 `DeviceViewModel` 中通过 `MOCK_PREFIX` 识别并自动切换至 `NormalMockMiotDeviceClient`。
    - 在 `MainViewModel` 中添加了一个 Mock 窗帘设备示例。
- **UI 改进**:在设备详情页 `activity_device.xml` 中新增设备型号(Model)展示,并清理了部分布局代码。
@sky130 sky130 merged commit 337d00f into master Apr 30, 2026
1 check failed
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