阿里云物联网平台使用总结
阿里云物联网平台设备连接的限制
- 一个三元组(clientID, deviceName, productKey)只能有一个连接,硬件设备和小程序不能共用一个三元组同时在线,否则会互相踢掉。
- 修改clientID也无效,因为阿里云会校验deviceName和productKey。
也就是说不能使用同一套连接配置给小程序和通信模块同时连接
小程序和硬件双向同步的思路
教程:
采用M2M方案,就是创建两个设备:
- 一个是真正的硬件设备;
- 一个是小程序对应的虚拟设备。
各自连接自己的三元组和配置信息。
然后利用消息转发中的云产品流转功能,配置两个设备间的消息互相流转,实现简单的双向同步。
流转规则的解析器示例:
// 设备上报数据内容,json格式
var data = payload('json');
// 流转到另一个Topic
writeIotTopic(1001, "/sys/axxxLP/webapp/thing/event/property/post", data);
writeIotTopic(1001, "/" + "axxx" + "/" + "tempdevice_1" + "/user/get", data);
新的问题:小程序只能一个人同时使用
小程序和设备虽然同步了,但小程序只能有一个用户连接。如果有两个人同时连接小程序,就会互相踢掉。
解决方案是:
- 使用阿里云官方的消息转发的AMQP服务,通过云平台推送消息到后端服务器,由后端统一处理和转发给多个客户端。
- 但这个方案比较复杂,也不适合个人开发者。
另一个更简便的方法:基于官方OpenAPI调用
架构示意图如下
[小程序用户A] \
\
[小程序用户B] ----> [自建后端服务] <---> [阿里云IoT平台] <---> [真实设备]
/
[小程序用户C] /
打开阿里云官方的OpenAPI门户,可以发现有大量API可以用来:
- 查询设备历史数据;
- 设置设备属性;
- 等等
我们可以:
- 可以基于官方的SDK,自己搭建一个后端服务;
- 前端通过调用后端API获取数据或操作设备。
这样就可以避免连接数限制和消息同步的复杂问题,实现多用户访问。
总结建议:如何选择?
| 场景类型 | 推荐方案 | 理由 |
|---|---|---|
| 单用户设备控制 | M2M 方案 | 实时性强、实现简单(如智能家电控制,数据大屏展示) |
| 多用户后台系统 | OpenAPI + 后端服务 | 支持并发、权限控制灵活(如物业管理平台,报表统计) |
| 混合型需求 | 结合两者 | 例如:前端操作走 API,实时推送走 WebSocket + IoT 平台订阅机制 |

浙公网安备 33010602011771号