树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)

文章目录

  • 前言
  • 一、与OneNET的第一面
  • 二、进入Studio页面
  • 三、新建产品和设备
  • 四、http接口协议探究
  • 五、在线post测试
  • 六、python代码实现
  • 总结


前言

最近在帮同学解决毕设问题,接触到了onenet物联网平台,发现网上找到的都是旧版本的教程,而且官方文档给的实在是过于混乱对于新手特别不友好,于是在这里记录一下我的调试结果和思路。


一、与OneNET的第一面

首先我们进入到onenet官网https://open.iot.10086.cn/,注册登录,并点进右上角的控制台,进入到控制台页面,如下图所示
我们可以大概看到Studio的功能主要分为两大部分:我的产品,我的项目
我的产品: 指的是将物联网设备接入平台
我的项目: 对前端应用的开发
我们是要将树莓派获取到的数据上传,所以属于对我的产品进行开发
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第1张图片

二、进入Studio页面

平台概览: 大家可以自行看下了解下
设备接入与管理: 重点,所有操作都是在此完成
产品:一组相同功能的设备的集合
设备:具体的设备,产品的子集,比如我的设备就是树莓派
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第2张图片


三、新建产品和设备

3.1 点击产品管理–添加产品
产品名称和省市自己填就好了重点是产品类别,选择和自己要开发的接近的
节点类型直连,接入协议http,联网方式wifi,点击确定

树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第3张图片

3.2 现在我们进入刚创建好的产品页面查看,可以看到具体信息
这里重点看一下物模型,这里会大家选择的产品类别自动帮你生成一些物模型,简单说就是帮你定义好了一些数据名,提高开发效率,为了演示,我这里只保留一个温度的数据。

树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第4张图片
点击–设置物模型–批量删除,就可以删除你不需要的数据名
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第5张图片
3.3 接入设备
点击左侧的设备管理—添加设备–输入设备名字,即可完成创建
点击详情,可以看到设备详情,已经自动有了温度属性,但是没有数据,接下来就是http上传数据
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第6张图片


四、http接口协议探究

在这里卡了很久,对于一个新手,官网文档的体验实在是太糟糕了,根本无从下手,新版旧版的接口不同,文档中也没有标注。
这里整理了新版接口的文档,供大家参考。
.http接入简介 了解大致接入流程
https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/HTTP/HTTP-introduce.html

.设备属性上报API(设备属性就是设备数据,比如我的温度就是我新建的树莓派设备的属性)
https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/HTTP/api/devicePropertyNotify.html

.接入安全认证(http请求时需要在header加入token参数,这里介绍了token的生成原理)
https://open.iot.10086.cn/doc/v5/develop/detail/624

大家尽量多看看文档,看不懂的结合下一步的POST测试就能看懂了


1. 根据http简介里的说明和设备属性上报API的说明, POST的地址为

https://open.iot.10086.cn/studio/http//device/thing/property/post?topic=$sys/产品ID/设备名称/thing/property/post&protocol=http

树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第7张图片树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第8张图片
2.POST参数
参数我们直接复制官方提供的参数,自己修改
https://open.iot.10086.cn/doc/iot_platform/book/device-connect&manager/thing-model/protocol/OneJSON/property&event.html
我这里复制是上传设备属性,并且只保留了一个
注意:改好标识符,复制之前的物模型的标识符
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第9张图片

{
  "id": "123",
  "version": "1.0",
  "params": {
    "CurrentTemperature": {
      "value": 23
    }
  }
}

3.header参数

有两个

Content-Type:application/json
token:version=2018-10-31&res=products%*****************

token具体是什么请参考这里 https://open.iot.10086.cn/doc/v5/develop/detail/624
官方提供了工具,输入自己的参数后可以自动生成


五、在线post测试

随便找一个在线post的网站,填入我们上一步的内容
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第10张图片
返回的信息是成功了
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第11张图片
我们在OneNet网页里的设备里刷新,发现已经有数据显示了
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第12张图片
如果失败了可以自己排查下问题
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第13张图片

六、python代码实现

既然在线post成功了,python实现就很简单了,直接附上代码

"""
@author:xiaoing
@Time:2022/4/14 10:34
@Version: v1.0
"""

import urllib.request
import json
import time
from time import sleep
# 设备名
deviceId = ""
# 产品id
product_id = ""
# 产品key
APIKey = ""
# 鉴权token详见https://open.iot.10086.cn/doc/v5/develop/detail/624
token = "version=2018-10-31&res=products%***********"

# 上传函数,调用的是设备属性API
def http_put_data(data):
    url = "https://open.iot.10086.cn/studio/http//device/thing/property/post?topic=$sys/" + \
        product_id+"/"+deviceId+"/thing/property/post&protocol=http"
    d = time.strftime('%Y-%m-%dT%H:%M:%S')
    # CurrentTemperature是物模型的标识符,数值这里直接给了固定数date
    values = {
        "id": "123",
        "version": "1.0",
        "params": {
            "CurrentTemperature": {
                "value": data
            },
            "LightLux": {
                "value": data
            }
        }
    }
    header = {"Content-Type": "application/json", "token": token}
    jdata = json.dumps(values).encode("utf-8")
    request = urllib.request.Request(url, jdata, header)
    request.get_method = lambda: 'POST'
    request = urllib.request.urlopen(request)
    return request.read()


if __name__ == '__main__':
    R = http_put_data(10)
    print(R)


总结

写的比较乱,不想研究的直接复制python代码配置参数运行就好了,可以满足上传传感器数据的需要。

我的测试结果
树莓派上传数据到OneNet平台(基于OneNET Studio 5.0,2022最新)_第14张图片

你可能感兴趣的:(树莓派,python,物联网)