跳到主要内容

OneNET相关

· 阅读需 4 分钟
Eureka X
Mr.Nobody

OneNET杂记

最近尝试复盘之前使用了MQTT的项目,打算重走一遍设备到OneNet平台的连接。OneNet平台已经有较为详细的文档了,再次只列出在观看官方文档中,遇到的疑惑。 因此最好的方法是结合官方文档一起看。

由于现在的我也只是一知半解,所以这篇博客的初稿肯定不怎么样,有了进一步理解后会进行完善的。

下面主要讲设备连接onenet平台时,遇到的可能疑惑。

Broker地址和端口在这里查看。

两个图片:

连接成功后,就需要订阅主题

$sys/{pid}/{device-name}/thing/property/post/reply

产品ID666666设备名称d1时为例,那么这个需要订阅的主题为:

$sys/666666/d1/thing/property/post/reply

这是为了设备能够接收来自平台的回复,告诉本地数据是发送失败了还是成功了。总之在如果想要设备发送数据给平台成功,那么需要先订阅这个主题。

注意

粘贴替换的时候要去掉 {}

之后就可以上传数据到平台了。

$sys/{pid}/{device-name}/thing/property/post

JSON格式是:

{
"id": "123",
"version": "1.0",
"params": {
"temp": {
"value": 66
},
"humi": {
"value": 24
},
"reset": {
"value": true
}
}
}

而要想设备能够收到来自平台的数据,那么就需要订阅这个主题。

$sys/{pid}/{device-name}/thing/property/set

设备端利用这个

$sys/{pid}/{device-name}/thing/property/set_reply

来回复平台已经收到数据。

JSON格式是:

{
"id": "2",
"code": 200,
"msg": "success"
}

需要进行修改的就是id字段。平台下发数据的时候,会返回一个id字段,这个字段需要和发送数据时保持一致。其他的不用修改。

事件上报

订阅主题:

$sys/{pid}/{device-name}/thing/event/post/reply

设备上报事件给平台,如果成功,会让你知道。

上报先:

$sys/{pid}/{device-name}/thing/event/post

JSON格式是:

{
"id": "123",
"version": "1.0",
"params": {
"switch1": {
"value": {
"led1": 66,
"led2": 66
}
}
}
}

🧩 属性?事件?服务?

你的需求该用哪种?为什么?
每 10 秒上报一次温度属性状态持续变化,需平台监控
温度超过 50℃ 时通知平台事件异常情况,需告警而非持续上报
平台想远程打开设备开关属性(可写)开关是状态,可读可写
平台想让设备立即重启服务是一个“动作”,需要确认是否执行成功
记录用户每次按键操作事件操作是一次性行为,不是状态
设备上报当前固件版本属性版本是静态状态,可被平台读取
平台下发 OTA 升级指令服务需要设备返回“开始下载”或“失败原因”

Token 生产软件说明

⚠️ 四、常见误区

误区正确做法
用“事件”上报温度❌ → 应用“属性”
用“属性”上报“门被打开”❌ → 应用“事件”(因为这是瞬时行为)
服务调用后不回复❌ → 必须回复 _reply,否则平台认为超时失败
属性设置后不更新本地状态❌ → 收到 property/set 后,必须执行并更新自身状态

✅ 五、OneNET 控制台操作提示

  • 定义物模型时
    • 属性 → 选“属性”,勾选“可读”、“可写”;
    • 事件 → 选“事件”,设置“事件类型”(info/warning/error);
    • 服务 → 选“服务”,定义输入/输出参数。
  • 发布物模型后,设备才能按对应 Topic 通信。
  • 规则引擎可基于事件或属性变化触发自动化(如:当 temp > 50 → 发短信)。

❤️ 总结

属性 = 状态(What is)
事件 = 通知(Something happened)
服务 = 命令(Do this and tell me)

合理使用这三者,你的设备将:

  • 与平台高效通信;
  • 支持远程控制 + 告警 + 监控完整闭环;
  • 符合 OneNET AIoT 平台最佳实践,便于后续接入规则引擎、大屏、APP等上层应用。
加载评论中...