
简介面向物联网开发初学者与设备接入工程师的百度IOT平台操作手册围绕设备上云、远程管理、数据交互等实际问题展开覆盖创建产品、下载CA与Profile文件、心跳检测、数据点设置与测试、批量生产及OTA升级等关键环节。压缩包内仅含1个doc文档约1.35MB按研发管理、数据分析、服务与应用管理三大模块编排便于按流程查阅和核对配置项。文档还解释新增设备、设备存活、设备活跃、在网时长及固件版本分布等统计口径并梳理服务列表、应用创建以及Android包名签名与iOS Bundle ID等配置要点对排查设备未激活、心跳失败、数据点不通等问题具有参考价值。已有384人学习适合需要快速熟悉百度IOT平台接入路径、理清云端管理流程的读者作为案头资料也可供团队在设备接入与联调阶段对照使用。1. 物联网 IoT 基础平台接入四样东西的顺序错了后面全是白费刚上手物联网 IoT 基础平台的人最费时间的往往是把产品、Profile、CA、数据点这四样东西的先后顺序搞对并非写代码。我见过一个小组产品建了三遍Profile 下了七八份设备上电后控制台一直显示未激活最后一查是 CA 烧成了上一批的跟固件版本一点关系都没有。这类平台的入口其实很固定控制台建产品和数据点下载 Profile 和 CA 烧进设备设备联网后靠心跳确认设备身份然后才是数据点测试、批量生产、OTA。顺序一颠倒后面的按钮基本都会失败。这份平台使用手册 Word 完整版就是按这条链路排的适合手上有一块能联网的模组、准备把设备接进云端的嵌入式开发者也适合要给一批设备做固件升级和出货统计的运维。2. 环境清点账号、产品型号与联网方式的三个必填项接入前的准备工作看起来只有三步实际返工率最高的也在这三步。产品类别选错控制台给你的模板和文档入口对不上产品型号写错设备端固件里那份硬编码就全废联网方式选错模组 SDK 的初始化参数得从头改。所以别急着点【新建产品】先把账号权限、文件保存位置、字段含义这三件事理清楚后面每一步都能少问一遍“这个能不能改”。2.1 进开发者中心之前先把账号和文件保存目录理清注册流程走完之后进开发者中心设备接入页面就是整条链路的起点。这里第一件事是定权限和文件保存位置而不是点【新建产品】。常见做法是主账号只管成员和账单日常操作走子账号每个设备型号对应一个独立产品不要一个产品里塞三个型号否则后面导数据点、下 Profile、发 OTA 全要手工挑迟早出错。文件保存位置我一般强制这样分层调试期和量产期用同一套结构# 联调前把产物目录定死后面每一步产物都往对应目录里放 mkdir -p ~/iot-env/{profile,ca,descriptor,firmware,log} tree -L 1 ~/iot-env 2/dev/null || ls -1 ~/iot-envprofile放设备身份文件ca放证书descriptor放导出的设备描述文件firmware放待上传的 zip 固件log存串口日志和测试记录。为什么要分这么细量产阶段一个批次就是上万份 Profile全堆在一个目录里你根本分不清哪份是调试用的、哪份是批次下载回来的。tree只是确认目录建出来了机器上没装这个命令用ls -1一样看。进控制台前把这张表填一遍能省掉大部分来回准备项具体内容不准备的后果账号角色主账号、子账号、项目空间归属建完产品发现没权限下载 CA产品类别设备所属品类模板和文档入口对不上数据点要重建产品型号设备端固件要硬编码的标识型号写错全部设备重烧固件联网方式Wi-Fi、蓝牙、蜂窝、以太网模组 SDK 初始化参数全错自定义配置序列号规则、心跳周期、上报间隔后期排查没有参照物2.2 产品类别、型号、联网方式三个填错就返工的字段点【新建产品】之后控制台会让你设置产品类别、产品型号、联网方式需要的话再填一段自定义配置信息填完点【新建】。创建成功后在“新产品研发”右边区域就能看到刚建的产品点进去才是后面下载 Profile 和 CA 的入口。这一步看着简单三个字段的改动成本完全不一样。产品类别影响的是控制台给你的数据点模板、文档入口和默认建议。选错了能改但改完关联的模板和文档会跟着变已经建好的数据点可能需要重新核对一遍。产品型号是设备端固件里要写死的那个值改了等于所有在网设备都要重烧。所以建之前先跟硬件和产线对一遍型号里带上版本含义别用“测试1”“新新新”这种名字。联网方式决定模组选型和 SDK 初始化参数Wi-Fi 设备接入流程里多一步配网蓝牙设备多一层服务发现蜂窝设备要在心跳频率和流量之间做取舍心跳密一点在线状态判断更准流量也涨得快。这一项改掉设备端代码基本等于重写。自定义配置信息容易被当成摆设其实很有用。把序列号生成规则、期望的心跳周期、数据上报间隔写进去三个月后接手的人打开产品页就知道当时的约定比翻聊天记录靠谱得多。2.3 应用侧凭据AK/SK、Android 包名与 iOS Bundle ID设备要能被 APP 控制得先在“应用”里创建应用。点【创建应用】输入应用名称就能创建成功然后选中这个应用进入配置就能看到 API Key 和 Secret Key这两个值可以复制。按平台填的参数不一样Android 需要填包名和应用签名iOS 需要填 Bundle ID。手册里这一项印成了 Bunld ID是个拼写错误填的时候以工程里实际的 Bundle Identifier 为准别照着错字去搜。凭据我一般只走环境变量不落代码文件# 应用侧凭据统一走环境变量避免写进前端包和代码仓库 export IOT_APP_AK你的_API_Key export IOT_APP_SK你的_Secret_KeyIOT_APP_AK是公开标识IOT_APP_SK只用来做服务端签名绝对不能出现在 APP 的前端包里也别提交进仓库——这类密钥一旦进了 Git 历史清理成本比重新申请高得多。提示包名区分大小写应用签名是签名证书的指纹从调试签名换成正式签名之后要回控制台更新否则 APP 拿得到登录态也拿不到设备数据。这是接入后期最常见的“玄学问题”。3. Profile 与 CA 落地下载、烧录、心跳三连怎么走通产品和应用建完之后工作重心从控制台转到设备端。这一段是整个接入过程里最像“黑匣子”的部分控制台只告诉你心跳成没成功中间发生了什么全在设备上。所以下载的文件是什么、烧到哪个分区、烧完怎么验这三件事必须一次搞清楚。3.1 下载 Profile 和 CA文件对照与命名习惯产品创建成功后点进这个产品页面上有【下载 Profile】和【下载 CA】两个按钮分别下载即可。这两份文件是设备接入的关键具体怎么用要参考设备端开发者手册按它说的位置烧进去。文件内容烧录位置丢失或错配的后果Profile设备身份信息业内习惯叫三元组产品标识、设备名、设备密钥模组身份分区或文件系统云端不认识这台设备心跳必然失败CA设备与云端建立连接用的证书证书分区或安全存储区连接直接被拒串口日志里多半是握手失败命名上建议统一成“产品型号_批次_序号”比如一个蜂窝温湿度产品第一批第 7 台。别用中文名、别带空格也别在文件名里写“最终版”“最最终版”——量产阶段要按批次归档文件名是唯一能自解释的东西。3.2 烧录串口、量产工具和三个必查项烧录方式常见三种开发阶段走串口加模组厂商的下载工具小批量用厂测工装量产阶段用批次文件配合产线工具。三种方式烧的东西一样差别在于效率和可追溯性。开发阶段我习惯一边烧一边把串口日志写到文件里出问题时不用重新复现# 打开串口并把上电日志落盘烧录有问题第一时间看这里 stty -F /dev/ttyUSB0 115200 raw -echo cat /dev/ttyUSB0 | tee -a ~/iot-env/log/boot.log115200是波特率必须和模组固件里的配置一致不一致就是满屏乱码raw -echo关掉回显避免本地键盘输入混进日志tee -a用追加写一天下来能连着看完整的上电过程。烧完有三个必查项。一是串口参数和固件配置对齐波特率、数据位、校验位错一项都读不出正常日志。二是回读校验别只看下载工具弹了个成功就收工。三是确认 CA 和 Profile 属于同一个产品、同一批次——这一条最容易被跳过。注意Profile 和 CA 不配对是心跳检测失败里出现频率最高的原因而且控制台不会直接告诉你只会显示检测失败。3.3 心跳检测按钮点下去之后看什么设备联网后回到设备接入页面点【心跳检测】平台会自动检测设备有没有向云端上报心跳。检测过程中会有状态提示成功会弹窗提醒失败就按提示回头查烧录过程改完可以重新检测。想清楚心跳的统计口径后面看数据才不会误解。平台的数据统计里一次心跳代表设备在网 30 分钟在网时间是按心跳次数折算的在网时长分布也是基于这个口径做区间划分。它不是实时的在线判定只是统计基准。# 平台口径一次心跳记 30 分钟在网用上报次数反推设备当日在线时长 HEARTBEAT_MINUTES 30 # 统计口径不是实时在线判定 heartbeats 46 # 当日心跳次数从平台数据或本地日志里数出来 online_hours heartbeats * HEARTBEAT_MINUTES / 60 print(f当日估算在网时长 {online_hours:.1f} 小时) if heartbeats 48: # 48 次 x 30 分钟 24 小时理论上限 print(存在缺报先查弱网重连策略和心跳线程是否被业务阻塞)HEARTBEAT_MINUTES跟着平台口径走平台改了统计规则这个值要同步改48是理论上限低于它说明有丢报。这套折算只适合看趋势和分布别拿去做计费或者对外承诺。检测失败时按这个顺序查别乱试设备是否真的联网串口里有没有拿到地址和握手成功记录→ 烧录是否回读校验过 → Profile 和 CA 是否配对 → 云端产品是不是刚被人改过。这四步查完九成问题都能定位。4. 数据点建模到批量出货类型、描述文件、10000 个 Profile 与 OTA心跳通了只代表设备能连上云端能不能互相看懂对方说的话取决于数据点。这一段是整个接入里最像“填表”的部分但填错的代价很高数据点定义一变导出的设备描述文件就得重新烧量产批次和 OTA 包也都得跟着重来。所以顺序是先把数据点定稿再做测试再做批量最后才是 OTA。4.1 数据点类型和数据类型怎么选在产品数据点页面先选中要编辑数据点的那款产品然后点【新建数据点】选择数据点类型再按需要选数据类型编辑完点【确认】。已创建的数据点可以继续编辑和删除。数据点类型一般分三类选之前先想清楚数据流向数据点类型典型场景注意点只读上报温湿度、电量、位置这类传感器值设备端定时上报云端不改写可读写开关状态、阈值、工作模式要处理云端下发与本地操作的冲突事件上报告警、故障码、按键触发带时间戳注意重复上报的去重数据类型上能确定范围的数值优先用整型别一上来就用浮点浮点在两端序列化和比较时容易出误差排查起来很费时间。枚举类字段用固定枚举值不要用自由字符串否则早晚出现“on”“ON”“开启”三种写法。命名统一小写下划线别混用驼峰和拼音。数据点一旦开始被设备使用改动就要谨慎。删掉一个数据点设备还在按老描述文件上报云端对不上号这类问题在联调后期非常耗时间。4.2 导出设备描述文件跟 CA 一起烧进设备数据点建好之后要在数据点设置页面把它导出成设备描述文件然后跟 CA 一起集成、烧进设备设备与云端才能真正实现数据互通。描述文件是数据点定义的机器可读版本设备端按它解析上下行报文。顺序别搞反改数据点 → 重新导出描述文件 → 重新烧进设备 → 重新测试。只改控制台不重烧设备是“云端收到了数据但字段对不上”的头号原因。描述文件建议按产品型号命名并存进descriptor目录同时在文件里或旁边记一笔生成时间。数据点改过几轮之后光看文件名根本分不清哪个是当前生效的版本。4.3 Demo APP 扫码做数据点测试数据点设置页面有【数据点测试】按钮点进去用 Demo APP 扫描页面上的二维码就能开始测试。这一步验证的是完整链路设备上报的数据能不能被云端解析成数据点、APP 下发能不能被设备收到。扫码没反应通常是三种情况二维码已经过期刷新页面重扫APP 登录的账号和建产品的账号不是同一个设备此时不在线心跳都没上来扫码也测不出东西。所以数据点测试之前一定先确认心跳检测是通过的。测试时建议一次只测一个数据点把上报值和下发值都验一遍再换下一个。一次性全测出了问题根本不知道是哪条定义写错了。4.4 批量生产批次、10000 上限与下载数据点创建完并检测没问题之后就可以申请批量生产批量生成大量 Profile。流程是先选要批量生产的产品型号点【新建批次】设置批次信息注意单个批次的 Profile 数量最多 10000 个创建完成后点进这个批次就能下载 Profile。批次不是随便切的。我一般按产线工单或者生产日期切分一个批次对应一张烧录工单这样后面哪批设备出了问题能直接定位到那一万份 Profile。下载回来的 Profile 要和调试期手动下载的那几份分开存千万别混用——批次里的身份信息和单独下载的不是一回事混烧的直接后果就是心跳失败。超过 10000 台的量就拆成多个批次别指望一个批次装完。4.5 OTA 升级10MB zip 固件和四种通知方式在 OTA 升级页面先选择要升级的产品然后点上传固件固件最大 10MB格式必须是 zip。上传之后填固件版本号再配置通知方式。四种通知方式的差别在用户干预程度。静默是直接对设备进行升级没有提醒也不需要用户干预强提醒、弱提醒和被动提醒都是推送到 APP 端的信息具体的升级规则在 APP 里配置。选哪种取决于设备形态装在配电箱里的传感器静默升级最省事消费类设备用弱提醒更合适强提醒适合升级会中断设备功能的场景。打包前先在本地确认体积和结构# 打进 zip 之前先确认体积和目录结构避免传上去才发现不合规 zip -r firmware_v1.0.3.zip ./bin ./resource/manifest.json ls -lh firmware_v1.0.3.zip # 确认没超过 10MB unzip -l firmware_v1.0.3.zip | head -20 # 确认没有多套一层同名目录-r递归打包子目录ls -lh看实际体积10MB 是硬上限超了控制台直接不收unzip -l列出包内清单重点看有没有多套一层同名目录——设备端解压逻辑如果按固定路径找文件多这一层就全找不到。版本号要单调递增别用日期糊弄回滚的时候不好判断先后。5. 常见问题排查五条踩过的坑和它们的解法接入这类平台报错信息往往只有一句“失败”真正的原因藏在设备端和文件里。下面五条都是我在实际环境里反复遇到的按“现象 → 原因 → 解决”记下来遇到类似的直接对号入座。5.1 心跳检测一直失败重新烧录也没用现象设备上电、串口能看到联网成功但控制台点【心跳检测】始终失败反复重烧固件没有任何变化。原因CA 和 Profile 不是同一批次或同一产品。批量生产的 Profile 和手动下载的 CA 混着烧设备身份和证书对不上云端握手阶段就断了控制台只会给出一个笼统的失败提示。解决把 CA 和 Profile 成对归档按“产品型号_批次_序号”命名烧录工单上写明来源批次。重烧前先比对两份文件的来源别盲目重试——重试十次和重试一次的结果一样。5.2 设备明明在线“新增设备”数量不涨现象设备心跳正常APP 也能控制但数据统计里的新增设备一直是 0或者比预期少很多。原因新增设备的定义是设备首次向云端上报心跳、即表示该设备已激活统计的是指定时间范围内激活设备的数量。已经激活过的设备不会重复计数另外统计有延迟刚上电就去看大概率是空的。解决先把统计时间范围拉大再确认这台设备此前是否已经激活过。批量出货时更靠谱的做法是按批次看激活量而不是盯着实时数字否则容易误判成接入失败。5.3 数据点改了云端收到的还是老字段现象控制台里加了新数据点设备也在上报但数据解析出来还是改动前的字段新字段一直是空。原因设备描述文件没有重新导出、重新烧录。控制台的改动只影响云端定义设备端还在按旧描述文件组包。解决按“改数据点 → 重新导出描述文件 → 重新烧设备 → 重新测试”走全流程。删掉的数据点尤其危险设备还在上报云端已经不认日志里看起来像丢包。5.4 OTA 固件传不上去或者升级后设备失联现象上传固件时提示失败或者升级完成后设备再也不上线。原因上传失败多半是超过 10MB 或者不是 zip 格式也有包内多套一层目录导致设备解压找不到文件的情况升级后失联一般是版本号没递增、或者静默升级覆盖掉了回滚分区。解决打包后先ls -lh看体积、unzip -l看结构版本号严格递增静默升级前先在一台样机上跑一遍确认掉电重启后能重新上线再推整批。5.5 应用侧连不上设备侧却一切正常现象设备心跳、数据上报都正常APP 就是拿不到数据。原因Android 的包名或应用签名、iOS 的 Bundle ID 与控制台里填的不一致或者把测试应用的 AK/SK 配到了正式包上。签名证书从调试换成正式之后忘了更新是最常见的一种。解决把控制台里的平台参数和工程配置逐字对一遍注意大小写切换签名后回控制台更新。密钥按环境分开管理测试和正式的 AK/SK 不要放在同一个配置文件里。6. 装完怎么验证三条链路的落地检查表接入的最后一步不是看到某个弹窗就算完而是把三条链路一次性跑通设备到云端的上行、云端到设备的下行、APP 到云端的鉴权。任何一条断了产品上线之后都会在原地打转。我的做法是固定用一张表过一遍全部通过才算这套环境装完。链路验证动作通过标准设备 → 云上电后点【心跳检测】弹窗提示检测成功设备 → 云触发一次数据点上报平台能看到对应数据点的值云 → 设备用 Demo APP 下发一次可读写数据点设备端串口打印收到指令并按值动作云 → 设备OTA 传一个版本号递增的小固件设备升级后重新上线固件版本分布里能看到新版本APP → 云用正式签名的包登录并拉一次数据能拿到数据鉴权不报错统计查看新增设备、设备存活、设备活跃三项新增设备数量与本次激活台数吻合验证前先把产物点一遍缺件就直接补别等联调现场才发现import pathlib # 联调前把关键产物点一遍缺一件就别往下走 need { Profile: profile/*, CA 证书: ca/*, 描述文件: descriptor/*, OTA 固件: firmware/*.zip, } base pathlib.Path.home() / iot-env for name, pattern in need.items(): files list(base.glob(pattern)) status fOK {len(files)} 个 if files else 缺失 print(f{name:8s} {status})base指向第 2 章建的那个目录路径换了改这一行就行pattern用的是 glob 通配目录里有多份文件时会全部列出来但只数个数够用来判断“有没有”。这个脚本不检查内容对不对只做缺件预警真正的一致性还得靠文件名里的产品型号和批次号人工核对。还有一个看统计的技巧验证当天别只看“设备存活”把“设备活跃”一起看。设备存活包含心跳上报设备活跃只算非心跳数据上报两个数字差得离谱说明设备连上了但业务数据没通问题多半在数据点定义或者描述文件版本上。另外在网时间按一次心跳折算 30 分钟这个口径看趋势可以别拿去算精确在线率我吃过这个亏跟业务方解释了半天。从那以后我每次接新平台都强制走一遍这张表哪怕只是加一个数据点也重跑一次心跳和数据点测试宁可在联调阶段多花半天也不要在出货之后靠日志猜。手册的 Word 完整版就是按这条链路排的照着对照一遍基本不会漏项。希望帮到你。本文还有配套的精品资源点击获取