提交 96a6f57e authored 作者: 陈泽健's avatar 陈泽健

Merge remote-tracking branch 'origin/develop' into develop

...@@ -17,7 +17,7 @@ def on_message(client, userdata, msg): ...@@ -17,7 +17,7 @@ def on_message(client, userdata, msg):
if __name__ == "__main__": if __name__ == "__main__":
# 5.218测试环境 192.168.5.218 1883 # 5.218测试环境 192.168.5.218 1883
broker_address = "192.168.5.218" broker_address = "192.168.5.50"
username = "mqtt@cmdb" # 你的MQTT用户名 username = "mqtt@cmdb" # 你的MQTT用户名
password = "mqtt@webpassw0RD" # 你的MQTT密码 password = "mqtt@webpassw0RD" # 你的MQTT密码
port = 1883 port = 1883
......
# MQTT设备信息上报测试数据说明
## 📋 概述
本目录包含用于模拟Android门口屏设备信息上报的MQTT测试数据,完全基于JavaScript代码`getDeviceInfoMessage()`方法的结构生成。
## 📁 文件说明
### 1. CSV数据文件
#### MQTT设备信息上报_100条.csv
- **用途**: 包含100条设备信息上报的测试数据
- **字段**: 35个字段,涵盖设备所有关键信息
- **生成方式**: 通过`generate_device_info_csv.py`脚本生成
#### 其他CSV文件
- `MQTT心跳上报_100条.csv`: 心跳数据
- `MQTT信息上报_100条.csv`: 旧版信息上报数据
### 2. Python脚本
#### generate_device_info_csv.py
- **功能**: 生成设备信息上报CSV测试数据
- **运行方式**:
```bash
python generate_device_info_csv.py
```
- **输出**: 生成100条符合真实设备格式的测试数据
#### test_device_info_message.py
- **功能**: 验证消息构建是否符合JavaScript代码规范
- **运行方式**:
```bash
python test_device_info_message.py
```
- **验证内容**:
- 外层消息结构(method, clientId, result)
- 内层result对象的所有字段
- 数据类型正确性(布尔值、整数、浮点数、数组等)
- JSON双重序列化格式
#### Android_Information .py
- **功能**: MQTT消息发送主程序
- **配置**: 已自动添加`MQTT设备信息上报_100条.csv`到CSV_FILES列表
- **运行方式**:
```bash
python "Android_Information .py"
```
## 🔧 消息结构
### 外层结构
```json
{
"method": "/system/readSystemInfo",
"clientId": "设备ID",
"result": "{内层JSON字符串}"
}
```
**注意**: `result`字段是JSON字符串(双重序列化),不是对象。
### 内层结构(result.result)
```json
{
"result": {
"buildInfo": {
"appToken": "授权码",
"companyNumber": "公司编号",
"cnum": "会议室绑定ID",
"conferenceName": "会议室名称",
"conferenceId": 3,
"defaultQrCodeUrl": null,
"aliasName": "会议室别名",
"serverBaseUrl": "https://192.168.9.86/exapi/",
"localBindTime": "2026-04-22 11:19:55",
"generalField": "{...}" // JSON字符串
},
"faceVersion": "4.2.12021020201.1",
"wgtVersion": "0.2.134",
"deviceModel": "Pad10-Pro",
"abiList": ["arm64-v8a", "armeabi-v7a", "armeabi"],
"androidId": "79f18c1a9a3bcfb1",
"appName": "UBAINS",
"appPackageName": "com.ubains.local.gviewer",
"appVersion": 351,
"appVersionName": "1.3.351",
"battery": 0.5,
"bluetoothEnabled": false,
"camerasCount": 1,
"charging": true,
"density": 1,
"freeAndTotalMemory": "698M/1957M",
"internalAvailableSize": 9793269760,
"internalTotalSize": 11075297280,
"ipAddress": "192.168.1.142",
"macAddress": "28:52:F9:1B:99:52",
"networkType": "NETWORK_WIFI",
"processCpuUsage": "28.73%",
"resolution": "1920x1200",
"romName": "yuxian",
"rooted": true,
"sdkVersionCode": 30,
"sdkVersionName": "11",
"sysDate": "Wed Apr 22 11:19:55 GMT+08:00 2026",
"sysDateStr": "2026-04-22 11:19:55",
"sysElapsedRealtime": "83:19:56",
"sysLanguage": "en",
"sysSupportedSensors": ["Accelerometer sensor"],
"buildConfig": {
"FLAVOR_APP_TYPE": "rksystem",
"BUILD_TYPE": "release",
"FLAVOR_FEATURE": "doorscreen",
"DEBUG": false,
"FLAVOR": "rksystemDoorscreen"
},
"faceBuildInfo": "arcfacepro4x",
"authCode": "AND-KH4-0011",
"conferenceName": "PGY-TestRoom"
}
}
```
## 📊 CSV字段说明
| 字段名 | 类型 | 说明 | 示例 |
|--------|------|------|------|
| topic | String | MQTT主题 | rebootResponseTopic |
| clientId | String | Android设备唯一标识 | 79f18c1a9a3bcfb1 |
| appToken | String | 授权码 | AND-KH4-0011 |
| companyNumber | String | 公司编号 | CN-KH4-UBAINS |
| cnum | String | 会议室绑定ID | w7k1allc7gqkmk8igrae9qgnliwhxyhy |
| conferenceId | Integer | 会议室ID | 3 |
| conferenceName | String | 会议室名称 | PGY-TestRoom |
| macAddress | String | MAC地址 | 28:52:F9:1B:99:52 |
| ipAddress | String | IP地址 | 192.168.1.142 |
| deviceModel | String | 设备型号 | Pad10-Pro |
| networkType | String | 网络类型 | NETWORK_WIFI |
| battery | Float | 电池电量(0-1) | 0.5 |
| charging | Boolean | 充电状态 | true/false |
| resolution | String | 分辨率 | 1920x1200 |
| romName | String | ROM名称 | yuxian |
| sdkVersionCode | Integer | SDK版本代码 | 30 |
| sdkVersionName | String | SDK版本名称 | 11 |
| appVersion | Integer | 应用版本号 | 351 |
| appVersionName | String | 应用版本名称 | 1.3.351 |
| faceVersion | String | 人脸模块版本 | 4.2.12021020201.1 |
| wgtVersion | String | Widget版本 | 0.2.134 |
| abiList | JSON String | CPU架构列表 | ["arm64-v8a",...] |
| appName | String | 应用名称 | UBAINS |
| appPackageName | String | 应用包名 | com.ubains.local.gviewer |
| bluetoothEnabled | Boolean | 蓝牙启用状态 | true/false |
| camerasCount | Integer | 摄像头数量 | 1 |
| density | Integer | 屏幕密度 | 1 |
| freeAndTotalMemory | String | 内存使用情况 | 698M/1957M |
| internalAvailableSize | Integer | 内部存储可用大小 | 9793269760 |
| internalTotalSize | Integer | 内部存储总大小 | 11075297280 |
| processCpuUsage | String | CPU使用率 | 28.73% |
| rooted | Boolean | 是否Root | true/false |
| sysLanguage | String | 系统语言 | en |
| sysSupportedSensors | JSON String | 支持的传感器列表 | ["Accelerometer sensor"] |
| buildConfig | JSON String | 构建配置 | {...} |
| faceBuildInfo | String | 人脸构建信息 | arcfacepro4x |
## 🚀 使用步骤
### 1. 生成测试数据(可选)
```bash
cd E:\ubains-module-test\ubains-module-test\Mqtt_Universal_Tool\TestData\ReservationSystem_DoorScreen
python generate_device_info_csv.py
```
### 2. 验证消息格式
```bash
python test_device_info_message.py
```
### 3. 运行MQTT发送程序
```bash
cd E:\ubains-module-test\ubains-module-test\Mqtt_Universal_Tool\ReservationSystem_DoorScreen
python "Android_Information .py"
```
## ⚙️ 配置说明
在`Android_Information .py`中修改以下配置:
```python
# CSV文件列表
CSV_FILES = [
'../TestData/ReservationSystem_DoorScreen/MQTT设备信息上报_100条.csv',
]
# MQTT服务器配置
MQTT_CONFIG = {
'broker_address': '192.168.5.50',
'port': 1883,
'username': 'mqtt@cmdb',
'password': 'mqtt@webpassw0RD',
}
# 线程配置
THREAD_CONFIG = {
'max_threads': 100,
'send_interval': 1,
'startup_delay': 0.05,
}
```
## 🔍 验证要点
### 与JavaScript代码的一致性
1. ✅ 外层消息结构完全一致
2. ✅ result字段为JSON字符串(双重序列化)
3. ✅ buildInfo包含完整的会议室绑定信息
4. ✅ 所有字段名称与JavaScript代码一致
5. ✅ 数据类型正确(布尔值、整数、浮点数、数组)
6. ✅ 数组字段保持数组格式(abiList, sysSupportedSensors)
7. ✅ generalField为JSON字符串
### 真实日志对比
参考日志中的关键字段:
- method: `/system/readSystemInfo`
- clientId: `79f18c1a9a3bcfb1`
- deviceModel: `Pad10-Pro`
- faceVersion: `4.2.12021020201.1`
- wgtVersion: `0.2.134`
- appVersionName: `1.3.351`
- resolution: `1920x1200`
- networkType: `NETWORK_WIFI`
## 📝 注意事项
1. **双重序列化**: result字段必须是JSON字符串,不是对象
2. **布尔值**: 使用true/false,不是字符串"true"/"false"
3. **数组字段**: abiList和sysSupportedSensors必须保持数组格式
4. **数值类型**: battery是浮点数,conferenceId是整数
5. **时间格式**: sysDateStr使用"YYYY-MM-DD HH:mm:ss"格式
6. **运行时长**: sysElapsedRealtime格式为"H:MM:SS"
## 🐛 故障排查
### 问题1: 消息格式不正确
- 运行`test_device_info_message.py`验证
- 检查CSV字段名称是否正确
- 确认JSON字符串字段是否正确转义
### 问题2: 数据类型错误
- 检查CSV中的布尔值是否为true/false(不是字符串)
- 确认数值字段没有引号
- 验证JSON字符串字段是否用引号包裹
### 问题3: 模块导入失败
- 确保在项目根目录下运行
- 检查Python路径是否正确设置
- 验证`预定系统/Base/Mqtt_Send.py`文件存在
## 📅 更新记录
- **2026-04-22**: 初始版本,基于JavaScript getDeviceInfoMessage()方法生成
- 创建CSV生成脚本
- 更新Mqtt_Send.py消息构建逻辑
- 添加测试验证脚本
- 编写本文档
此差异已折叠。
# 预定系统 Base 模块初始化文件
# 预定系统模块初始化文件
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论