@tencentcloud/sdk-mcp 1.7.7 → 1.7.9-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/README.md +7 -9
- package/index.js +8 -8
- package/knowledge/chunker.js +1 -0
- package/knowledge/doc-url-resolver.js +16 -9
- package/knowledge/embedding/build-vectors.js +92 -0
- package/knowledge/embedding/embed-model.js +41 -0
- package/knowledge/embedding/vector-augment.js +126 -0
- package/knowledge/embedding/vector-index.js +70 -0
- package/knowledge/frontmatter-meta.js +23 -0
- package/knowledge/path-meta.js +56 -0
- package/knowledge/search/exact-lookup.js +145 -16
- package/knowledge/search/filter-pool.js +77 -33
- package/knowledge/search/rank-profile.js +25 -0
- package/knowledge/search/requires-framework.js +4 -1
- package/knowledge/search/search-core.js +74 -13
- package/knowledge/search/search-knowledge.js +24 -34
- package/knowledge/search/search-pass.js +495 -169
- package/knowledge/search/url-row-scorer.js +24 -6
- package/package.json +3 -1
- package/resource/index/manifest.json +1 -1
- package/resource/index/vectors/index.json +4 -0
- package/resource/integration/callkit/preset/android/integration.md +0 -2
- package/resource/integration/callkit/preset/ios/integration.md +0 -2
- package/resource/integration/chat/preset/react/integration.md +9 -5
- package/resource/integration/chat/preset/uni-app/integration.md +4 -0
- package/resource/integration/chat/preset/vue/integration.md +10 -6
- package/resource/integration/livekit/preset/live/android/prepare-integration.md +0 -4
- package/resource/integration/livekit/preset/live/ios/prepare-integration.md +0 -4
- package/resource/integration/roomkit/preset/vue/integration.md +154 -208
- package/resource/knowledge/callkit/best-practice/android/video-chat-dating.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/android/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/answer-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/flutter/make-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/flutter/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/ios/make-call.md +0 -4
- package/resource/knowledge/callkit/core-sdk/ios/offline-push.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/answer-call.md +0 -2
- package/resource/knowledge/callkit/core-sdk/uni-app/make-call.md +0 -2
- package/resource/knowledge/callkit/faq/ios.md +0 -2
- package/resource/knowledge/callkit/faq/uniapp-app.md +0 -2
- package/resource/knowledge/callkit/preset/miniprogram/integration.md +2 -3
- package/resource/knowledge/callkit/preset/miniprogram/uniapp-integration.md +0 -2
- package/resource/knowledge/chat/preset/ios-uikit/integration.md +0 -16
- package/resource/knowledge/chat/preset/react/h5/integration.md +16 -5
- package/resource/knowledge/chat/preset/vue/features/conversation-list.md +6 -3
- package/resource/knowledge/chat/preset/vue/h5/integration.md +7 -4
- package/resource/knowledge/iot/app/activate-service.md +95 -0
- package/resource/knowledge/iot/app/demo/android.md +93 -0
- package/resource/knowledge/iot/app/demo/ios.md +87 -0
- package/resource/knowledge/iot/app/demo/miniprogram.md +79 -0
- package/resource/knowledge/iot/app/device-binding.md +378 -0
- package/resource/knowledge/iot/app/device-sharing.md +414 -0
- package/resource/knowledge/iot/app/family-management.md +762 -0
- package/resource/knowledge/iot/app/integration/android.md +328 -0
- package/resource/knowledge/iot/app/integration/harmonyos.md +326 -0
- package/resource/knowledge/iot/app/integration/ios.md +351 -0
- package/resource/knowledge/iot/app/integration/miniprogram.md +268 -0
- package/resource/knowledge/iot/app/monitor-playback.md +557 -0
- package/resource/knowledge/iot/app/remote-control.md +139 -0
- package/resource/knowledge/iot/app/video-call.md +559 -0
- package/resource/knowledge/iot/app/wechat-call/device-call-miniprogram.md +204 -0
- package/resource/knowledge/iot/app/wechat-call/miniprogram-call-device.md +193 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcallsession.md +189 -0
- package/resource/knowledge/iot/client-api/app/android/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/android/txiotdevicemanager.md +175 -0
- package/resource/knowledge/iot/client-api/app/android/txiotengine.md +172 -0
- package/resource/knowledge/iot/client-api/app/android/txiotenginedef.md +163 -0
- package/resource/knowledge/iot/client-api/app/android/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/android/txiotmonitorsession.md +246 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcallsession.md +191 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotcloudstorage.md +77 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotdevicemanager.md +183 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotengine.md +186 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotenginedef.md +164 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotfamilymanager.md +150 -0
- package/resource/knowledge/iot/client-api/app/harmonyos/txiotmonitorsession.md +252 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcallsession.md +199 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotdevicemanager.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotengine.md +173 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotenginedef.md +171 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotfamilymanager.md +146 -0
- package/resource/knowledge/iot/client-api/app/ios/txiotmonitorsession.md +250 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcallsession.md +180 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotcloudstorage.md +76 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotdevicemanager.md +281 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotengine.md +183 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotenginedef.md +152 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotfamilymanager.md +179 -0
- package/resource/knowledge/iot/client-api/app/miniprogram/txiotmonitorsession.md +226 -0
- package/resource/knowledge/iot/client-api/device/android-smart-device.md +813 -0
- package/resource/knowledge/iot/client-api/device/linux-rtos-device.md +2027 -0
- package/resource/knowledge/iot/device/activate-service.md +167 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/custom-agent.md +171 -0
- package/resource/knowledge/iot/device/ai-voice-chat/advanced-features/smart-device-control.md +721 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/android-smart-device.md +247 -0
- package/resource/knowledge/iot/device/ai-voice-chat/integration-guide/linux-rtos-device.md +368 -0
- package/resource/knowledge/iot/device/ai-voice-chat/overview.md +84 -0
- package/resource/knowledge/iot/device/cloud-storage.md +696 -0
- package/resource/knowledge/iot/device/data-model.md +972 -0
- package/resource/knowledge/iot/device/demo/android-smart-device.md +97 -0
- package/resource/knowledge/iot/device/demo/linux-rtos-device.md +106 -0
- package/resource/knowledge/iot/device/device-ota-upgrade.md +237 -0
- package/resource/knowledge/iot/device/dynamic-registration/android-smart-device.md +275 -0
- package/resource/knowledge/iot/device/dynamic-registration/linux-rtos-device.md +297 -0
- package/resource/knowledge/iot/device/login-and-register/android-smart-device.md +131 -0
- package/resource/knowledge/iot/device/login-and-register/linux-rtos-device.md +291 -0
- package/resource/knowledge/iot/device/monitor-pushing/android-smart-device.md +237 -0
- package/resource/knowledge/iot/device/monitor-pushing/linux-rtos-device.md +493 -0
- package/resource/knowledge/iot/device/video-call/android-smart-device.md +299 -0
- package/resource/knowledge/iot/device/video-call/linux-rtos-device.md +465 -0
- package/resource/knowledge/iot/device/wechat-call/android-smart-device.md +534 -0
- package/resource/knowledge/iot/device/wechat-call/linux-rtos-device.md +681 -0
- package/resource/knowledge/iot/kids-watch/overview.md +28 -0
- package/resource/knowledge/iot/security-camera/activate-service.md +74 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/app-integration.md +302 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/android.md +237 -0
- package/resource/knowledge/iot/security-camera/monitor-playback/device-integration/linux-rtos.md +493 -0
- package/resource/knowledge/iot/security-camera/overview.md +31 -0
- package/resource/knowledge/iot/security-camera/ptz-control.md +153 -0
- package/resource/knowledge/iot/security-camera/recording-and-snapshot.md +182 -0
- package/resource/knowledge/iot/security-camera/voice-intercom.md +174 -0
- package/resource/knowledge/iot/smart-vision/serviceoverview.md +114 -0
- package/resource/knowledge/iot/voice-recorder/app-demo.md +99 -0
- package/resource/knowledge/iot/voice-recorder/device-demo.md +189 -0
- package/resource/knowledge/iot/voice-recorder/overview.md +64 -0
- package/resource/knowledge/livekit/core-sdk/features/android/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/android/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/android/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/audio-effect.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/flutter/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/ios/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/features/ios/live-list.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/base-beauty.md +0 -2
- package/resource/knowledge/livekit/core-sdk/features/uni-app/gift.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/android/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/android/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/flutter/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/ios/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/ios/host-interaction.md +0 -10
- package/resource/knowledge/livekit/core-sdk/live/ios/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/live/uni-app/co-guest-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/live/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/android/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/android/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/flutter/integration.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/ios/host-interaction.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/ios/integration.md +0 -4
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/co-guest-interaction.md +0 -2
- package/resource/knowledge/livekit/core-sdk/voice/uni-app/integration.md +0 -2
- package/resource/knowledge/livekit/faq/error-code.md +0 -2
- package/resource/knowledge/push/config/android/honor.md +16 -1
- package/resource/knowledge/push/config/android/huawei.md +20 -4
- package/resource/knowledge/push/config/android/meizu.md +19 -5
- package/resource/knowledge/push/config/android/vivo.md +20 -1
- package/resource/knowledge/push/config/donut.md +0 -2
- package/resource/knowledge/push/config/harmonyos.md +21 -5
- package/resource/knowledge/push/integration/android.md +0 -5
- package/resource/knowledge/push/integration/donut.md +0 -3
- package/resource/knowledge/push/integration/flutter.md +1 -4
- package/resource/knowledge/push/integration/harmonyos.md +0 -3
- package/resource/knowledge/push/integration/ios.md +0 -3
- package/resource/knowledge/push/integration/react-native.md +0 -5
- package/resource/knowledge/push/integration/uni-app.md +0 -3
- package/resource/knowledge/push/integration/unity.md +0 -3
- package/resource/knowledge/push/integration/unreal-engine.md +0 -3
- package/resource/knowledge/roomkit/core-sdk/android/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/android/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/flutter/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/call-user-to-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-participant-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/room-state.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/ios/schedule-room.md +0 -2
- package/resource/knowledge/roomkit/core-sdk/vue/room-view.md +0 -3
- package/resource/knowledge/roomkit/preset/uniapp-app/integration.md +18 -14
- package/resource/knowledge/rtcengine/web/how_to_run_web_sdk_demo.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/23-advanced-support-detection.md +30 -0
- package/resource/knowledge/rtcengine/web/plugin/24-advanced-network-quality.md +0 -2
- package/resource/knowledge/rtcengine/web/plugin/31-advanced-plugins-overview.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/35-advanced-ai-denoiser.md +1 -1
- package/resource/knowledge/rtcengine/web/plugin/36-advanced-virtual-background.md +4 -0
- package/resource/knowledge/trtc/android/TRTCCloud.md +94 -85
- package/resource/knowledge/trtc/android/TRTCCloudDef.md +48 -46
- package/resource/knowledge/trtc/android/TRTCCloudListener.md +48 -48
- package/resource/knowledge/trtc/android/TXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/android/TXDeviceManager.md +4 -4
- package/resource/knowledge/trtc/android/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/c++/ITRTCCloud.md +90 -90
- package/resource/knowledge/trtc/c++/ITXAudioEffectManager.md +18 -18
- package/resource/knowledge/trtc/c++/ITXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/c++/TRTCCloudCallback.md +47 -47
- package/resource/knowledge/trtc/c++/TRTCTypeDef.md +47 -45
- package/resource/knowledge/trtc/c++/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TRTCCloud.md +93 -93
- package/resource/knowledge/trtc/ios/TRTCCloudDelegate.md +50 -50
- package/resource/knowledge/trtc/ios/TXAudioEffectManager.md +8 -8
- package/resource/knowledge/trtc/ios/TXDeviceManager.md +9 -9
- package/resource/knowledge/trtc/ios/TXLiteAVCode.md +1 -0
- package/resource/knowledge/trtc/ios/TXLiveSDKTypeDef.md +48 -46
- package/server-config.js +8 -9
- package/server.js +1 -1
- package/tools/common/finalize_answer.js +1 -1
- package/tools/common/present_framework_choice.js +1 -1
- package/tools/common/search_trtc_knowledge.js +22 -3
- package/tools/definitions/search_trtc_knowledge_def.js +3 -2
- package/utils/preflight-route.js +19 -2
- package/utils/report-cls-client.js +1 -1
- package/utils/report-es-client.js +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- android
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: device_demo
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本文档介绍如何编译并运行 IoT 智能设备端 Android Demo,帮助您快速完成 **设备登录**、**物模型**、**音视频通话**、**监控直播**、**AI 语音对话**等核心能力的体验。
|
|
12
|
+
|
|
13
|
+
## 前提条件
|
|
14
|
+
|
|
15
|
+
### 开通服务
|
|
16
|
+
|
|
17
|
+
在跑通 IoT 智能设备端 Android Demo 前,您需要前往控制台创建产品,并在产品下创建设备。具体步骤参见 [开通服务](https://cloud.tencent.com/document/product/1081/135239)。
|
|
18
|
+
|
|
19
|
+
开通服务后,请记录以下设备三元组信息,后续在 Demo 的 登录 步骤中会用到:
|
|
20
|
+
- **ProductId**(产品 ID)
|
|
21
|
+
|
|
22
|
+
- **DeviceName**(设备名称)
|
|
23
|
+
|
|
24
|
+
- **DeviceSecret**(设备密钥)
|
|
25
|
+
|
|
26
|
+
### 环境要求
|
|
27
|
+
- 使用 **AGP 8.13**,要求 **JDK 17**,并采用 **Kotlin** 实现。
|
|
28
|
+
|
|
29
|
+
- **Gradle** 版本为 8.13.2。
|
|
30
|
+
|
|
31
|
+
- **compileSdk / targetSdk** 均为 29。
|
|
32
|
+
|
|
33
|
+
- **必须使用 Android 真机**(音视频、相机、麦克风等能力在模拟器上无法正常工作)。
|
|
34
|
+
|
|
35
|
+
## Demo 说明
|
|
36
|
+
|
|
37
|
+
Demo 已开源,仓库地址:[github.com/Tencent-RTC/Tencent_IoT_Device](https://github.com/Tencent-RTC/Tencent_IoT_Device)
|
|
38
|
+
|
|
39
|
+
开源仓库按平台分目录,Android Demo 位于顶层 `Android` 目录:
|
|
40
|
+
``` text
|
|
41
|
+
Tencent_IoT_Device/
|
|
42
|
+
├── Android/ # Android 设备端 Demo
|
|
43
|
+
│ ├── app/ # Demo 业务代码
|
|
44
|
+
│ │ └── src/main/ # 页面、布局与资源
|
|
45
|
+
│ ├── gradle/ # 版本目录 libs.versions.toml
|
|
46
|
+
│ ├── settings.gradle.kts
|
|
47
|
+
│ ├── build.gradle.kts
|
|
48
|
+
│ ├── gradlew / gradlew.bat
|
|
49
|
+
│ └── local.properties
|
|
50
|
+
├── Linux/
|
|
51
|
+
├── RTOS/
|
|
52
|
+
└── README.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 编译工程
|
|
56
|
+
|
|
57
|
+
参考以下步骤编译 IoT 智能设备端 Android Demo 进行体验。
|
|
58
|
+
1. 使用 `git clone` 将开源 Demo 从 GitHub 克隆到本地。
|
|
59
|
+
|
|
60
|
+
2. 打开 Android Studio,单击 **Open** 将 Demo 导入。
|
|
61
|
+
|
|
62
|
+
3. 在 Android Studio 工具栏单击 **Sync Now**,等待 SDK 自动下载完成。随后连接真机,点击工具栏的 **Run** 即可编译并运行到真机上;也可在控制台执行命令 `./gradlew :app:assembleDebug` 打包成 APK,发送到手机进行安装。
|
|
63
|
+
|
|
64
|
+
## 功能体验
|
|
65
|
+
|
|
66
|
+
Demo 的页面入口关系如下:
|
|
67
|
+
``` text
|
|
68
|
+
LoginActivity(登录)
|
|
69
|
+
└── HomeActivity(首页)
|
|
70
|
+
├── AITalkActivity AI 语音对话
|
|
71
|
+
├── DataModelActivity 物模型
|
|
72
|
+
├── ContactsActivity ──► CallActivity 微信通话
|
|
73
|
+
├── CallActivity 音视频通话(由app端触发)
|
|
74
|
+
├── MonitorActivity 监控直播(由app端触发)
|
|
75
|
+
└── DeviceDetailActivity 设备详情
|
|
76
|
+
```
|
|
77
|
+
1. 打开 App 进入登录页。
|
|
78
|
+
|
|
79
|
+
2. 依次填入 **ProductId**、**DeviceName**、**DeviceSecret**,并选择 **Region**(默认 `ap-guangzhou`)。
|
|
80
|
+
|
|
81
|
+
3. 单击**登录**,跳转主页:
|
|
82
|
+
|
|
83
|
+
至此,IoT 智能设备端 Android Demo 已成功跑通,接下来即可体验**物模型**、**音视频通话**、**监控直播**、**AI 语音对话**等核心功能**。**
|
|
84
|
+
|
|
85
|
+
> **注意:**
|
|
86
|
+
>
|
|
87
|
+
> - 设备三元组是设备登录平台的唯一身份凭证,请妥善保管 DeviceSecret。
|
|
88
|
+
> - 若需体验`微信通话功能`与 `AI 语音对话功能`,请先参考 开通服务文档 开通对应的服务。
|
|
89
|
+
|
|
90
|
+
## 常见问题
|
|
91
|
+
|
|
92
|
+
|现象|排查建议|
|
|
93
|
+
|---------|---------|
|
|
94
|
+
|Gradle 同步失败或依赖下载不下来|确认网络可正常访问 `mavenCentral()` 与 `google()` 仓库;必要时配置代理或镜像源后重试。|
|
|
95
|
+
|登录一直失败(错误码 -8 / -304 / -305)|逐项核对三元组信息与地域;确认设备在控制台处于启用状态;确认真机网络可正常访问外网。|
|
|
96
|
+
|监控 / 通话 / AI 对话无画面或无声音|确认已授予相机与麦克风权限;确认使用真机而非模拟器;确认 LiteAVSDK 与 IoT SDK 依赖均已成功下载。|
|
|
97
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- linux
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: device_demo
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本文档将介绍如何编译并运行设备端 Linux x64 Demo,帮助您快速实现**设备登录**、**音视频通话**等核心能力的体验。
|
|
12
|
+
|
|
13
|
+
## 开通服务
|
|
14
|
+
|
|
15
|
+
在跑通 Demo 前,您需要前往控制台创建产品,并在产品下创建设备,具体步骤参见 开通服务。
|
|
16
|
+
|
|
17
|
+
开通服务后,请记录以下设备三元组信息,后续运行 Demo 时会用到:
|
|
18
|
+
- product_id(产品 ID)
|
|
19
|
+
|
|
20
|
+
- device_id(设备 ID)
|
|
21
|
+
|
|
22
|
+
- device_secret(设备密钥)
|
|
23
|
+
|
|
24
|
+
## 环境要求
|
|
25
|
+
- 操作系统:x86_64 Linux(Ubuntu 18.04+ / CentOS 7+ 等主流发行版)。
|
|
26
|
+
|
|
27
|
+
- 编译工具:CMake 3.21 及以上、GCC / Clang(支持 C11)。
|
|
28
|
+
|
|
29
|
+
- 系统依赖库:`pthread`、`m`(数学库)、`dl`、`z`(zlib)。
|
|
30
|
+
|
|
31
|
+
## 下载 Demo
|
|
32
|
+
|
|
33
|
+
在 [GitHub](https://github.com/Tencent-RTC/Tencent_IoT_Device) 下载设备端 Demo 源码,其中 Linux x64 Demo 的目录结构:
|
|
34
|
+
``` bash
|
|
35
|
+
Tencent_IoT_Device/
|
|
36
|
+
└── Linux/
|
|
37
|
+
└── linux_x64/
|
|
38
|
+
├── demo/
|
|
39
|
+
│ ├── iot_video_demo/ # 音视频 Demo
|
|
40
|
+
│ └── iot_aitalk_demo/ # AI 语音对话 Demo
|
|
41
|
+
├── sdk/
|
|
42
|
+
│ ├── include/ # SDK 的头文件
|
|
43
|
+
│ ├── lib/ # SDK 的二进制
|
|
44
|
+
│ └── module_config.cmake # SDK 开启的功能
|
|
45
|
+
├── CMakeLists.txt # 用来编译 Demo
|
|
46
|
+
└── README.md
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 编译 Demo
|
|
50
|
+
|
|
51
|
+
编译音视频 Demo 和 AI 语音对话 Demo:
|
|
52
|
+
``` bash
|
|
53
|
+
cd ./Tencent_IoT_Device/Linux/linux_x64
|
|
54
|
+
cmake -B build
|
|
55
|
+
cmake --build build -j
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
编译产物:
|
|
59
|
+
``` bash
|
|
60
|
+
Tencent_IoT_Device/
|
|
61
|
+
└── Linux/
|
|
62
|
+
└── linux_x64/
|
|
63
|
+
├── build/
|
|
64
|
+
│ ├── iot_video_demo # 音视频 Demo 的可执行文件
|
|
65
|
+
│ └── iot_aitalk_demo # AI 语音对话 Demo 的可执行文件
|
|
66
|
+
├── demo/
|
|
67
|
+
│ ├── iot_video_demo/
|
|
68
|
+
│ └── iot_aitalk_demo/
|
|
69
|
+
├── sdk/
|
|
70
|
+
│ ├── include/
|
|
71
|
+
│ ├── lib/
|
|
72
|
+
│ └── module_config.cmake
|
|
73
|
+
├── CMakeLists.txt
|
|
74
|
+
└── README.md
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## 设备登录
|
|
78
|
+
|
|
79
|
+
使用三元组进行设备登录:
|
|
80
|
+
``` bash
|
|
81
|
+
export LD_LIBRARY_PATH=sdk/lib:$LD_LIBRARY_PATH
|
|
82
|
+
./build/iot_video_demo -p <product_id> -d <device_id> -s <device_secret>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
登录成功后,会打印日志 `[demo] started`:
|
|
86
|
+
|
|
87
|
+
同时,可以在 App 端(App 可以在 SDK & Demo 下载,使用方式参见 跑通 Demo)看到设备处于“在线”状态:
|
|
88
|
+
|
|
89
|
+
## 音视频通话
|
|
90
|
+
|
|
91
|
+
> **注意:**
|
|
92
|
+
> 需要先在控制台开通音视频通话服务,具体步骤参见 开通服务。
|
|
93
|
+
>
|
|
94
|
+
|
|
95
|
+
运行音视频 Demo:
|
|
96
|
+
``` bash
|
|
97
|
+
export LD_LIBRARY_PATH=sdk/lib:$LD_LIBRARY_PATH
|
|
98
|
+
./build/iot_video_demo -p <product_id> -d <device_id> -s <device_secret>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
登录成功后,会启动音视频通话功能,监听 App 端的监控和呼叫。
|
|
102
|
+
|
|
103
|
+
可以在 App 端发起监控,拉取设备端的音视频:
|
|
104
|
+
|
|
105
|
+
也可以在 App 端发起呼叫,设备端会自动接听:
|
|
106
|
+
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
---
|
|
2
|
+
product: iot
|
|
3
|
+
framework:
|
|
4
|
+
- '*'
|
|
5
|
+
types:
|
|
6
|
+
- feature
|
|
7
|
+
retrievable_scope: always
|
|
8
|
+
feature_domain: device
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
本文将介绍 OTA 接入流程,包括**配置当前固件版本**、**处理升级通知**、**发起固件下载**、**固件刷写**以及**上报升级进度和结果**等。
|
|
12
|
+
|
|
13
|
+
## 前提条件
|
|
14
|
+
|
|
15
|
+
接入前需完成以下准备工作:
|
|
16
|
+
1. 按照 登录与注册 文档跑通 `tc_iot_login` 登录功能。
|
|
17
|
+
|
|
18
|
+
2. 按照 OTA 升级包 文档在后台为需要升级的模块创建并发布固件版本,确保模块名称与 OTA 初始化配置中的 `module_name` 完全一致。
|
|
19
|
+
|
|
20
|
+
3. 确认下载目录可写且有足够空间;设备没有文件系统时,可联系技术支持。
|
|
21
|
+
|
|
22
|
+
## 接入步骤
|
|
23
|
+
|
|
24
|
+
### 步骤 1:配置当前固件信息并初始化 OTA
|
|
25
|
+
|
|
26
|
+
SDK 登录成功后,填写各模块当前运行的固件版本,注册回调,并调用 `tc_iot_ota_init`。SDK 上报各模块当前版本,并在有可用升级时通过回调通知升级任务。
|
|
27
|
+
|
|
28
|
+
|字段|说明|
|
|
29
|
+
|---------|---------|
|
|
30
|
+
|`module_name`|固件模块名称,以 `\0` 结尾;须与后台固件模块名称一致。|
|
|
31
|
+
|`module_version`|当前运行的固件版本,以 `\0` 结尾。|
|
|
32
|
+
|`firmware_info`|各模块当前固件信息数组。|
|
|
33
|
+
|`firmware_info_count`|`firmware_info` 数组中的模块数量。|
|
|
34
|
+
|
|
35
|
+
``` c
|
|
36
|
+
#include <stdio.h>
|
|
37
|
+
#include <string.h>
|
|
38
|
+
|
|
39
|
+
#include "tc_iot.h"
|
|
40
|
+
#include "tc_iot_ota.h"
|
|
41
|
+
|
|
42
|
+
static void on_receive_firmware_upgrade_notify(
|
|
43
|
+
const tc_iot_ota_firmware_info_t *firmware_info, void *user_data);
|
|
44
|
+
static void on_download_firmware_progress(
|
|
45
|
+
const tc_iot_ota_firmware_info_t *firmware_info, uint32_t current_size,
|
|
46
|
+
uint32_t total_size, void *user_data);
|
|
47
|
+
static void on_download_firmware_result(
|
|
48
|
+
const tc_iot_ota_firmware_info_t *firmware_info, tc_iot_error_e error_code,
|
|
49
|
+
const char *error_message, const char *file_path, void *user_data);
|
|
50
|
+
|
|
51
|
+
tc_iot_ota_firmware_info_t firmware_info[] = {
|
|
52
|
+
{
|
|
53
|
+
.module_name = "mcu",
|
|
54
|
+
.module_version = "1.0.0",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
.module_name = "wifi",
|
|
58
|
+
.module_version = "1.1.0",
|
|
59
|
+
}
|
|
60
|
+
}; // 示例版本;实际接入时填写当前运行的固件版本。
|
|
61
|
+
|
|
62
|
+
tc_iot_ota_config_t ota_config = {
|
|
63
|
+
.firmware_info = firmware_info,
|
|
64
|
+
.firmware_info_count = sizeof(firmware_info) / sizeof(firmware_info[0]),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
tc_iot_ota_observer_t ota_observer;
|
|
68
|
+
memset(&ota_observer, 0, sizeof(ota_observer));
|
|
69
|
+
ota_observer.on_receive_firmware_upgrade_notify =
|
|
70
|
+
on_receive_firmware_upgrade_notify;
|
|
71
|
+
ota_observer.on_download_firmware_progress = on_download_firmware_progress;
|
|
72
|
+
ota_observer.on_download_firmware_result = on_download_firmware_result;
|
|
73
|
+
|
|
74
|
+
tc_iot_error_e error = tc_iot_ota_init(&ota_config, &ota_observer, NULL);
|
|
75
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
76
|
+
printf("tc_iot_ota_init failed: %d\n", error);
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`on_receive_firmware_upgrade_notify` 和 `on_download_firmware_result` 必须注册;不需要处理下载进度时,`on_download_firmware_progress` 可设为 `NULL`。
|
|
81
|
+
|
|
82
|
+
> **注意:**
|
|
83
|
+
> - 同一个 `module_name` 只能注册一次。
|
|
84
|
+
> - `user_data` 为自定义回调上下文,其指向的对象须在 OTA 反初始化及相关回调完成前保持有效。
|
|
85
|
+
|
|
86
|
+
### 步骤 2:处理升级通知,检查更新条件并发起下载
|
|
87
|
+
|
|
88
|
+
有可用升级时,SDK 调用 `on_receive_firmware_upgrade_notify`,通知目标模块和目标版本。设备检查本地状态,确认满足更新条件后,调用 `tc_iot_ota_download_firmware` 发起下载。
|
|
89
|
+
|
|
90
|
+
以下示例假设本地更新条件已满足,在回调中发起下载:
|
|
91
|
+
``` c
|
|
92
|
+
#define OTA_DOWNLOAD_DIRECTORY "./ota_firmware"
|
|
93
|
+
|
|
94
|
+
static void on_receive_firmware_upgrade_notify(
|
|
95
|
+
const tc_iot_ota_firmware_info_t *firmware_info, void *user_data) {
|
|
96
|
+
(void)user_data;
|
|
97
|
+
printf("[ota] receive upgrade: module=%s, target_version=%s\n",
|
|
98
|
+
firmware_info->module_name, firmware_info->module_version);
|
|
99
|
+
|
|
100
|
+
tc_iot_error_e error =
|
|
101
|
+
tc_iot_ota_download_firmware(firmware_info, OTA_DOWNLOAD_DIRECTORY);
|
|
102
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
103
|
+
printf("[ota] submit download failed: %d\n", error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
`download_directory` 指定固件保存目录。下载成功后,使用结果回调提供的 `file_path` 读取固件。
|
|
109
|
+
|
|
110
|
+
> **注意:**
|
|
111
|
+
> - `firmware_info` 的模块名称和目标版本须与本次升级通知一致;延后下载时须先复制该信息。
|
|
112
|
+
> - SDK 同一时间只能处理一个 OTA 任务,下载进行中不得重复调用下载接口。
|
|
113
|
+
> - OTA 回调中不得执行耗时或阻塞操作。
|
|
114
|
+
|
|
115
|
+
### 步骤 3:处理固件下载进度(可选)
|
|
116
|
+
|
|
117
|
+
下载期间,SDK 通过 `on_download_firmware_progress` 通知已下载字节数和固件总字节数。示例按字节数计算下载百分比:
|
|
118
|
+
``` c
|
|
119
|
+
static void on_download_firmware_progress(
|
|
120
|
+
const tc_iot_ota_firmware_info_t *firmware_info, uint32_t current_size,
|
|
121
|
+
uint32_t total_size, void *user_data) {
|
|
122
|
+
(void)user_data;
|
|
123
|
+
uint32_t progress =
|
|
124
|
+
total_size == 0 ? 0 : (uint32_t)(((uint64_t)current_size * 100u) / total_size);
|
|
125
|
+
printf("[ota] downloading: module=%s, version=%s, progress=%u%% (%u/%u)\n",
|
|
126
|
+
firmware_info->module_name, firmware_info->module_version, progress,
|
|
127
|
+
current_size, total_size);
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`tc_iot_ota_report_upgrade_progress` 用于上报固件刷写进度。
|
|
132
|
+
|
|
133
|
+
### 步骤 4:处理下载结果并执行固件刷写
|
|
134
|
+
|
|
135
|
+
SDK 通过 `on_download_firmware_result` 通知下载结果。仅在 `error_code` 为 `TC_IOT_ERR_SUCCESS` 时执行固件刷写:
|
|
136
|
+
|
|
137
|
+
|场景|`error_code`|`error_message`|`file_path`|
|
|
138
|
+
|---------|---------|---------|---------|
|
|
139
|
+
|下载并校验成功|`TC_IOT_ERR_SUCCESS`|`NULL`|固件文件路径|
|
|
140
|
+
|下载或校验失败|非 `TC_IOT_ERR_SUCCESS`|失败原因|`NULL`|
|
|
141
|
+
|
|
142
|
+
``` c
|
|
143
|
+
static void on_download_firmware_result(
|
|
144
|
+
const tc_iot_ota_firmware_info_t *firmware_info, tc_iot_error_e error_code,
|
|
145
|
+
const char *error_message, const char *file_path, void *user_data) {
|
|
146
|
+
ota_demo_context_t *context = (ota_demo_context_t *)user_data;
|
|
147
|
+
|
|
148
|
+
if (error_code != TC_IOT_ERR_SUCCESS) {
|
|
149
|
+
printf("[ota] download failed: module=%s, version=%s, error=%d, message=%s\n",
|
|
150
|
+
firmware_info->module_name, firmware_info->module_version, error_code,
|
|
151
|
+
error_message ? error_message : "");
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
printf("[ota] firmware ready: module=%s, version=%s, path=%s\n",
|
|
156
|
+
firmware_info->module_name, firmware_info->module_version, file_path);
|
|
157
|
+
|
|
158
|
+
/* 复制回调参数并通知升级线程执行固件刷写,不能长期持有回调中的指针。 */
|
|
159
|
+
schedule_firmware_install(context, firmware_info, file_path);
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
示例中的 `schedule_firmware_install` 由接入方实现,用于复制固件信息和文件路径,并通知**独立升级线程**执行固件刷写。
|
|
164
|
+
|
|
165
|
+
> **注意:**
|
|
166
|
+
> `firmware_info`、`error_message` 和 `file_path` 仅在回调期间有效,延后使用时必须复制内容。
|
|
167
|
+
>
|
|
168
|
+
|
|
169
|
+
### 步骤 5:上报固件刷写进度和结果
|
|
170
|
+
|
|
171
|
+
设备在固件刷写过程中,按实际进度调用 `tc_iot_ota_report_upgrade_progress`。固件刷写失败,或成功后无需重启时,调用 `tc_iot_ota_report_upgrade_result` 上报结果。
|
|
172
|
+
|
|
173
|
+
如果固件刷写成功后需要重启,设备在新固件启动并登录后,将实际运行的新版本填入 `tc_iot_ota_init` 配置。SDK 会上报新版本,后台据此确认升级完成。
|
|
174
|
+
|
|
175
|
+
以下示例演示固件刷写函数返回后主动上报结果的用法:
|
|
176
|
+
``` c
|
|
177
|
+
static void install_firmware(const tc_iot_ota_firmware_info_t *firmware_info,
|
|
178
|
+
const char *file_path) {
|
|
179
|
+
tc_iot_error_e error =
|
|
180
|
+
tc_iot_ota_report_upgrade_progress(firmware_info, 0);
|
|
181
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
182
|
+
printf("[ota] report upgrade progress failed: %d\n", error);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* 平台固件刷写过程中,应继续按实际固件刷写进度调用进度上报接口。 */
|
|
186
|
+
bool install_success = platform_install_firmware(file_path);
|
|
187
|
+
if (install_success) {
|
|
188
|
+
error = tc_iot_ota_report_upgrade_progress(firmware_info, 100);
|
|
189
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
190
|
+
printf("[ota] report upgrade progress failed: %d\n", error);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
int32_t result_code = install_success ? 0 : -1;
|
|
195
|
+
const char *description = install_success ? "upgrade_success" : "upgrade_failed";
|
|
196
|
+
error = tc_iot_ota_report_upgrade_result(
|
|
197
|
+
firmware_info, result_code, description);
|
|
198
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
199
|
+
printf("[ota] report upgrade result failed: %d\n", error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
|接口|说明|
|
|
205
|
+
|---------|---------|
|
|
206
|
+
|`tc_iot_ota_report_upgrade_progress(firmware_info, progress)`|上报固件刷写进度,`progress` 取值范围为 0~100。|
|
|
207
|
+
|`tc_iot_ota_report_upgrade_result(firmware_info, 0, description)`|上报升级成功。|
|
|
208
|
+
|`tc_iot_ota_report_upgrade_result(firmware_info, -1, description)`|上报升级失败。|
|
|
209
|
+
|
|
210
|
+
> **注意:**
|
|
211
|
+
> - 下载成功后才能上报固件刷写进度或结果。
|
|
212
|
+
> - 上报时使用下载成功回调中的目标模块和目标版本。
|
|
213
|
+
|
|
214
|
+
### 步骤 6:反初始化 OTA
|
|
215
|
+
|
|
216
|
+
设备退出登录或释放 SDK 前,调用 `tc_iot_ota_deinit` 停止下载并释放 OTA 资源:
|
|
217
|
+
``` c
|
|
218
|
+
tc_iot_error_e error = tc_iot_ota_deinit();
|
|
219
|
+
if (error != TC_IOT_ERR_SUCCESS) {
|
|
220
|
+
printf("tc_iot_ota_deinit failed: %d\n", error);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
tc_iot_logout();
|
|
224
|
+
tc_iot_deinit();
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## 常见问题
|
|
228
|
+
|
|
229
|
+
|现象|排查建议|
|
|
230
|
+
|---------|---------|
|
|
231
|
+
|`tc_iot_ota_init` 返回 `TC_IOT_ERR_NOT_INITIALIZED`|先调用 `tc_iot_init` 初始化 SDK,并调用 `tc_iot_login` 登录。|
|
|
232
|
+
|`tc_iot_ota_init` 返回 `TC_IOT_ERR_NOT_CONNECTED`|等待 `tc_iot_login` 回调通知登录成功后,再初始化 OTA。|
|
|
233
|
+
|`tc_iot_ota_init` 返回 `TC_IOT_ERR_OTA_INIT_PARAM_INVALID`|检查 `firmware_info` 和 `firmware_info_count` 是否正确;模块名称不可重复,名称和版本字符串以 `\0` 结尾。|
|
|
234
|
+
|`tc_iot_ota_init` 返回 `TC_IOT_ERR_OTA_INIT_OBSERVER_NULL`|需要传入合法的 observer,至少包含必填的 `on_receive_firmware_upgrade_notify` 和 `on_download_firmware_result`。|
|
|
235
|
+
|`on_download_firmware_result` 回调中的 `error_code` 为 `TC_IOT_ERR_OTA_START_FAILED`|检查模块名称和目标版本是否与本次升级通知一致,以及是否重复调用下载接口。|
|
|
236
|
+
|烧录完成重启后仍收到相同升级通知|确认新固件已生效,并在 `tc_iot_ota_init` 中使用实际运行的新版本初始化|
|
|
237
|
+
|