电话&微信

18600577194

物联网系统开发包括哪些环节?从终端设备、通信接入到平台与设备控制

标签: 物联网软件开发 嵌入式开发 2026-09-15 

很多物联网项目最初的需求看起来很简单:

“设备把数据上传到服务器。”

或者:

“做一个可以用手机远程查看和控制的硬件。”

但真正进入研发以后,项目往往会很快扩展成多个相互关联的部分。

终端设备需要采集数据,嵌入式程序需要管理传感器和通信,设备需要接入网络,服务端需要识别设备、接收数据和下发控制命令,Web或APP还需要完成用户、设备、数据和权限管理。

因此,一个完整的物联网系统通常不是“硬件 + 一个APP”,而是由多个技术层共同组成:

终端硬件 → 嵌入式系统 → 通信接入 → 设备联网 → 服务端/云端 → Web/APP/管理平台 → 数据管理与设备控制

不同项目不一定全部包含这些模块,但在方案阶段需要先明确哪些能力属于本次系统范围。

真正需要解决的问题也不是“设备能不能联网”,而是:

设备联网以后,如何被识别、管理、采集、控制和长期维护。

IoT完整系统架构图

一、物联网系统为什么不能只理解成“设备联网”?

一台设备能够连接Wi-Fi、4G或者网关,只能说明它具备联网条件。

这并不等于已经形成完整的物联网系统。

例如设备成功连接服务器之后,还要继续解决:

  • 服务器如何识别这台设备;

  • 设备属于哪个用户或项目;

  • 数据按照什么格式上传;

  • 网络断开以后数据怎么办;

  • 设备是否在线如何判断;

  • 平台如何远程控制设备;

  • 命令执行失败如何反馈;

  • 多台设备如何批量管理;

  • 固件如何升级;

  • 历史数据如何保存和查询;

  • 不同用户能够看到哪些设备;

  • 设备出现异常如何报警。

这些问题已经同时涉及终端、嵌入式、通信和服务端。

所以,物联网系统开发本质上是一个跨设备端和软件平台的系统工程,而不是单独完成某一层。

二、一个完整IoT系统通常由哪些部分组成?

从系统架构上看,可以把常见物联网项目划分为七个主要部分。

1. 终端硬件

负责与真实物理世界交互,例如:

  • 传感器;

  • MCU或SoC;

  • 执行器;

  • 电源;

  • 存储;

  • Wi-Fi、BLE、4G等通信模块;

  • RS485、CAN等现场接口。

2. 嵌入式系统

运行在设备内部,负责:

  • 数据采集;

  • 设备控制;

  • 状态管理;

  • 本地逻辑;

  • 通信协议;

  • 数据缓存;

  • 网络连接;

  • OTA等。

3. 通信接入

负责把设备连接到上层系统,例如:

  • Ethernet;

  • Wi-Fi;

  • 4G/5G;

  • BLE;

  • LoRa等无线方式;

  • 网关转发;

  • RS485/CAN等现场总线接入网关。

4. 设备接入服务

负责服务器侧识别和管理设备连接。

通常会处理:

  • 设备身份;

  • 鉴权;

  • 消息接收;

  • 状态维护;

  • 指令下发。

5. 服务端业务系统

负责:

  • 用户;

  • 设备;

  • 权限;

  • 数据;

  • 告警;

  • 规则;

  • 业务流程。

6. Web、APP和管理平台

把设备和数据提供给实际用户使用,例如:

  • 查看设备;

  • 实时数据;

  • 历史记录;

  • 参数配置;

  • 报警;

  • 远程控制。

7. 数据和设备运维

随着设备长期运行,还会涉及:

  • 日志;

  • OTA;

  • 设备版本;

  • 在线状态;

  • 故障记录;

  • 数据生命周期;

  • 批量设备管理。

因此,完整IoT架构更适合理解成:

物理设备层 → 连接层 → 设备接入层 → 业务服务层 → 应用层

而不是一个单一软件或硬件产品。

三、终端硬件在IoT系统中承担什么角色?

物联网系统最终仍然要通过硬件感知和控制真实设备。

因此终端设计需要先回答:

  • 采集什么数据;

  • 控制什么对象;

  • 工作环境是什么;

  • 使用什么通信方式;

  • 是否电池供电;

  • 数据量有多大;

  • 设备是否长期在线;

  • 是否需要本地存储;

  • 网络断开后是否继续工作。

例如一个环境监测终端,可能包含:

传感器 → MCU → 本地数据处理 → 无线模组 → 云端

而一个工业设备接入项目可能采用:

现场RS485设备 → 网关 → Ethernet/4G → 服务端

两者都属于IoT,但终端架构完全不同。

因此,终端硬件不能脱离整个系统单独规划。

四、嵌入式系统为什么是设备与平台之间的关键层?

嵌入式程序位于硬件和云端之间。

它既需要管理设备,又需要理解上层通信协议。

典型职责包括:

  • 初始化传感器;

  • 采集数据;

  • 控制执行器;

  • 本地参数管理;

  • 数据过滤;

  • 数据缓存;

  • 网络连接;

  • 心跳;

  • 数据上报;

  • 控制命令解析;

  • 异常处理;

  • OTA升级。

一个典型的数据链路可能是:

传感器 → MCU → 数据处理 → 协议封装 → 网络发送 → 服务端

远程控制则正好反过来:

平台 → 服务端 → 网络 → 设备 → 嵌入式程序 → 执行器

因此,IoT系统开发时必须明确:

哪些逻辑在设备本地执行,哪些逻辑放在服务端。

如果所有逻辑都依赖云端,那么网络断开以后设备可能无法正常工作。

如果所有业务都塞进设备端,则后续管理和升级又会变得困难。

合理的架构应该根据产品场景划分本地和云端职责。

五、设备应该直接联网,还是通过网关接入?

设备直接联网 vs 网关接入对比图

IoT项目常见两种接入结构。

设备直接联网

例如设备自身带有:

  • Wi-Fi;

  • 4G/5G;

  • Ethernet。

设备可以直接连接服务端。

优点是结构直接,适合单台设备独立部署。

典型场景包括:

  • 智能家居;

  • 无线终端;

  • 独立监测设备;

  • 联网控制器。

设备通过网关联网

现场设备使用:

  • RS485;

  • CAN;

  • BLE;

  • LoRa;

  • 其他本地通信;

先连接网关,再由网关统一连接服务器。

这种方式比较适合:

  • 多设备集中管理;

  • 工业现场;

  • 本地总线设备;

  • 现场设备本身不适合直接联网。

网关还可以承担:

  • 协议转换;

  • 本地缓存;

  • 边缘计算;

  • 设备聚合;

  • 断网续传。

因此,是否需要网关不能只看设备数量,还要结合现场通信方式、网络条件和系统管理方式判断。

六、设备通信协议应该怎样选择?

物联网项目经常会涉及:

  • MQTT;

  • HTTP/HTTPS;

  • WebSocket;

  • TCP/UDP;

  • 私有协议。

不同协议适合的问题不同。

MQTT

比较适合设备消息上报、状态通知和平台下发指令等场景。

常见优势是:

  • 发布/订阅模型;

  • 消息主题组织;

  • 设备和平台耦合相对较低;

  • 适合大量设备持续通信。

HTTP/HTTPS

更适合:

  • 请求/响应式接口;

  • 配置;

  • 文件上传;

  • 部分数据上报;

  • 与Web服务直接集成。

WebSocket

适合需要长连接和实时双向通信的应用场景,例如平台实时状态交互。

私有TCP协议

对于某些专用设备,也可以设计自定义数据帧。

关键不在于“哪种协议最先进”,而在于:

  • 数据频率;

  • 网络质量;

  • 设备数量;

  • 实时性;

  • 服务端架构;

  • 安全要求。

通信协议应该与设备和平台架构一起设计。

七、设备身份为什么是IoT系统最基础的问题之一?

设备一旦连接平台,系统必须知道:

它是谁。

否则服务器无法判断数据来自哪台设备。

常见设备身份可能包含:

  • SN;

  • Device ID;

  • MAC;

  • 芯片唯一ID;

  • 平台分配的设备编号;

  • 密钥或证书。

但一个编号通常还不够。

平台还要解决:

  • 设备是否合法;

  • 设备属于哪个产品型号;

  • 设备属于哪个用户;

  • 是否已经激活;

  • 是否允许连接;

  • 是否有权限接收某个命令。

因此IoT设备接入一般需要同时考虑:

身份 + 鉴权 + 绑定关系

而不是只给设备分配一个序列号。

八、设备上线以后,平台怎样判断它是否在线?

设备管理平台通常需要展示:

  • 在线;

  • 离线;

  • 最近上线时间;

  • 最近通信时间。

但网络连接本身并不能永远可靠。

因此系统通常需要设计心跳或状态机制。

例如设备可以每隔一段时间:

  • 上报心跳;

  • 上报状态;

  • 维持长连接。

服务端再根据:

最后通信时间 + 超时规则

判断设备是否离线。

这里需要注意:

设备主动断网、网络故障、断电和服务器异常,在平台上可能都表现为“没有继续通信”。

因此在线状态更多是系统根据通信状态做出的判断,而不是设备绝对真实物理状态。

九、设备断网以后,数据应该怎么处理?

这个问题对工业设备和移动设备尤其重要。

如果网络临时中断,设备是否继续采集?

通常需要根据业务判断。

一种常见方案是:

设备继续工作 → 数据本地缓存 → 网络恢复 → 补传

但这又会引出新的设计问题:

  • 本地能存多少数据;

  • 数据存在哪里;

  • 存满以后怎么办;

  • 补传时如何保证顺序;

  • 如何避免重复;

  • 时间戳从哪里获取。

如果业务允许丢失部分数据,则可以简化设计。

因此,离线策略需要根据数据重要程度决定,而不是所有IoT设备都必须实现复杂断点续传。

十、远程控制为什么比远程查看数据复杂?

数据上报通常是:

设备 → 平台

而远程控制则是:

平台 → 设备 → 执行动作 → 返回结果

因此至少需要处理:

  • 命令下发;

  • 设备是否在线;

  • 命令ID;

  • 参数;

  • 超时;

  • 执行结果;

  • 重复命令;

  • 权限。

例如APP点击“打开设备”,并不意味着按钮按下后就一定已经执行。

平台可能需要区分:

命令已提交

设备已收到

设备执行成功

三个不同状态。

对于关键控制功能,还需要考虑重复命令是否会产生风险。

所以远程控制协议通常比简单数据上报更需要明确状态反馈。

十一、IoT服务端通常需要管理哪些数据?

IoT服务端并不只是接收一串传感器数据。

根据系统复杂度,常见数据可以分成几类。

用户数据

例如:

  • 用户;

  • 企业;

  • 角色;

  • 权限。

设备数据

例如:

  • SN;

  • 型号;

  • 固件版本;

  • 激活状态;

  • 在线状态。

实时数据

例如:

  • 温度;

  • 电压;

  • 状态;

  • 定位;

  • 控制参数。

历史数据

用于:

  • 趋势;

  • 查询;

  • 报表;

  • 分析。

事件和告警

例如:

  • 参数超限;

  • 设备故障;

  • 离线;

  • 电量过低。

运维数据

例如:

  • 日志;

  • OTA版本;

  • 升级记录;

  • 操作记录。

因此,服务端数据库设计需要结合实际数据量、查询方式和保存周期,而不是所有数据都使用同一种存储结构。

十二、APP、Web后台和设备管理平台分别解决什么问题?

这些软件经常被统称为“平台”,但面向对象不同。

APP

通常面向终端用户。

常见功能包括:

  • 登录;

  • 设备绑定;

  • 数据查看;

  • 参数设置;

  • 控制;

  • 消息提醒。

Web后台

可能面向:

  • 管理人员;

  • 运维人员;

  • 企业客户。

功能通常更偏:

  • 用户管理;

  • 设备管理;

  • 数据查询;

  • 权限;

  • 配置;

  • 报表。

设备管理平台

重点围绕设备生命周期。

例如:

  • 产品型号;

  • 设备注册;

  • 在线状态;

  • 固件版本;

  • OTA;

  • 告警;

  • 日志;

  • 批量操作。

一个项目可能同时包含以上三种能力,也可能只需要其中一部分。

因此软件系统应根据实际使用者设计,而不是默认每个IoT项目都开发完整APP和管理后台。

十三、IoT系统为什么要提前设计数据模型?

设备数据如果没有统一规则,系统越做越复杂以后越容易出现问题。

例如同一个温度:

设备A上传:

temp

设备B上传:

temperature

设备C上传:

T1

平台后续做统一查询就会很麻烦。

因此,系统早期最好统一定义:

  • 设备类型;

  • 属性名称;

  • 数据类型;

  • 单位;

  • 时间戳;

  • 状态值;

  • 告警规则。

复杂平台还可能使用:

产品模型 / 物模型

来统一描述不同设备的:

  • 属性;

  • 事件;

  • 服务。

是否需要完整物模型,应根据项目规模判断。

小型项目没有必要为了架构形式增加过多复杂度。

十四、IoT系统中的OTA应该放在哪一层设计?

OTA看起来属于嵌入式功能,但实际上同时涉及:

  • 设备端;

  • 通信;

  • 服务端;

  • 文件存储;

  • 管理后台。

设备端需要处理:

  • 固件下载;

  • 校验;

  • 写入;

  • 切换;

  • 失败恢复。

平台需要管理:

  • 固件文件;

  • 版本;

  • 设备型号;

  • 升级范围;

  • 升级状态。

如果设备量增加,还可能需要:

  • 灰度升级;

  • 分批升级;

  • 失败统计;

  • 版本回滚策略。

所以,如果产品后续明确需要OTA,应该在系统架构早期就纳入考虑。

十五、IoT系统还需要考虑哪些异常情况?

一个系统在正常网络环境中跑通,并不能代表可以长期稳定运行。

还需要考虑:

  • 设备突然断电;

  • 网络断开;

  • SIM卡异常;

  • Wi-Fi密码修改;

  • 服务端暂时不可用;

  • MQTT连接断开;

  • APP命令超时;

  • 数据重复上传;

  • 设备时间错误;

  • 固件升级失败;

  • 本地存储写满。

不同问题应该由不同层处理。

例如:

网络断开主要由设备通信层和服务端连接管理处理;

数据缓存由设备端负责;

重复数据可以通过消息ID或数据ID处理;

平台权限问题则属于服务端业务层。

因此,IoT系统可靠性来自多个层共同处理异常,而不是单独依赖某一端“足够稳定”。

十六、IoT系统开发中最常见的几个架构误区

1. 只先做硬件,最后才考虑平台

这样容易导致设备协议、身份和数据结构频繁调整。

2. 只先做APP,设备协议后补

APP界面可以很快完成,但如果设备通信边界没有确定,后续联调会不断返工。

3. 所有业务都放在云端

一旦网络中断,设备无法完成基础功能。

4. 所有功能都塞在设备端

后期升级、管理和业务扩展会越来越困难。

5. 一开始就做过度复杂的平台

设备只有几十台,却直接设计复杂微服务、大数据和多租户系统,会显著增加开发和运维成本。

6. 没有明确设备版本

硬件、固件、协议和服务端版本缺乏对应关系,后期问题很难追踪。

因此,IoT架构应该随着真实业务规模增长,而不是为了“技术先进”一次性设计到最大。

十七、物联网项目启动前至少应该确认哪些信息?

如果项目还处于需求阶段,可以优先整理以下内容。

终端

设备采集什么、控制什么?

通信

Wi-Fi、4G、Ethernet还是通过网关?

数据

上传哪些数据,多长时间一次?

控制

平台是否需要下发命令?

用户

谁使用设备?一个用户管理几台?

软件

是否需要APP、Web或管理后台?

网络

设备是否长期在线?

离线

断网以后设备是否继续工作?

OTA

是否需要远程升级?

规模

首期设备数量和未来大致规模是多少?

权限

是否存在管理员、企业用户、普通用户等不同角色?

系统边界

已有硬件、平台、APP或第三方系统哪些需要保留?

这些信息并不要求第一天全部冻结,但关键架构边界越早明确,后续修改成本越低。

物联网软硬件一体化开发

十八、北京心玥科技如何参与IoT系统开发?

北京心玥科技有限公司在智能硬件与IoT方向,可以根据项目需求参与从终端设备到软件系统的不同研发环节。

IoT相关工作可以涉及:

  • 终端硬件;

  • MCU/SoC及嵌入式开发;

  • 传感器与数据采集;

  • Wi-Fi、BLE、Ethernet、4G/5G等通信;

  • MQTT、HTTP等设备通信;

  • 网关;

  • 设备接入;

  • 服务端;

  • Web后台;

  • APP;

  • 设备管理平台;

  • 数据管理;

  • 设备控制;

  • OTA;

  • 软硬件系统联调。

不同项目并不一定全部从零开发。

如果客户已经有硬件,可以继续开发服务端、APP、Web或设备管理平台。

如果已经有软件平台,也可以针对现有协议开发新的终端设备或网关。

如果已经存在部分设备和系统,则可以先分析现有接口,再决定是否进行协议适配、设备接入或系统扩展。

软件开发既可以独立承接,也可以作为IoT、智能硬件、电子产品和工业电子项目中的组成部分。

项目最终交付的硬件资料、固件源码、服务端源码、APP/Web源码、通信协议、部署资料以及测试资料等,根据具体合作范围和合同约定确定,并非所有项目默认采用完全相同的交付清单。

一个完整IoT项目真正需要解决的,不是让硬件“连上互联网”这么简单。

更重要的是:

让设备、通信、服务端和应用软件形成一套能够持续运行、管理和扩展的系统。

只有各层之间的边界提前明确,后续设备增加、功能扩展和运维管理才更容易控制复杂度。

常见问题 FAQ

1. 物联网系统开发一般包括哪些部分?

通常可能包括终端硬件、嵌入式系统、通信接入、设备接入服务、服务端、APP/Web、设备管理、数据管理和远程控制等模块。不同项目根据实际需求选择对应范围。

2. 物联网项目一定需要云平台吗?

不一定。有些项目只在局域网或本地服务器中运行,也可以形成完整系统。是否采用公有云、私有云或本地部署,应根据网络环境、数据要求和项目管理方式决定。

3. MQTT和HTTP应该怎么选?

MQTT更适合持续设备消息通信和发布/订阅场景;HTTP更适合请求/响应、配置、文件和部分业务接口。很多IoT系统也会同时使用多种协议。

4. IoT设备一定需要APP吗?

不一定。如果设备主要由企业后台或已有系统管理,可以只开发Web管理系统。APP通常适用于用户绑定、移动查看、配置和控制等场景。

5. 设备断网以后还能继续工作吗?

取决于系统架构。对需要本地独立运行的设备,应把关键控制逻辑放在设备端,并根据需要设计本地数据缓存和断网恢复机制。

6. 已经有硬件设备,可以单独开发物联网平台吗?

可以。只要现有设备能够提供稳定通信协议和必要接口,就可以评估服务端、Web、APP或设备管理平台的独立开发与接入方案。