OneNet 平台HTTP上报与获取设备数据

OneNet 平台HTTP上报与获取设备数据

@date:2017-03-24

事前准备

最近在看一些相关的物联网平台,中移动的onenet平台成为了首选,其中开放的接口比较明了,虽说现在的功能还比较简单,设备接入、数据上报与获取、触发应用及实时展现数据流功能。
- 访问ONENET平台http://open.iot.10086.cn/,进入右上角开发者中心,注册用户并登陆
- 根据文档中心http://open.iot.10086.cn/doc/art243.html#66,创建产品
- 创建设备
- 创建数据流
- 准备一台可以访问外网的机器,在该机器上安装python2.7版本,这里主要是想利用python脚本模拟设备的行为

调测

前面事前准备的步骤可根据开发者文档详细操作,调测目的是想验证HTTP设备是否可以接入平台,上报与获取相关数据。来吧,这里注意下python的版本问题,2与3版本API用法还是相差很大的。
HTTP方式,不论上报还是获取,data内容均为JSON格式。

上报数据

不说了,上代码

import urllib2
import json
import time
from time import sleep

DEVICE_ID='50479xx'
API_KEY='mNdiaXJ=1Nzdr57x8owelKi0QIs='

#添加代理
def http_proxy_handle():
    proxy_handler = urllib2.ProxyHandler({'http':'10.10.100.188:3328'})
    opener = urllib2.build_opener(proxy_handler)
    urllib2.install_opener(opener)
    return

def http_put_data(data):
    url='http://api.heclouds.com/devices/'+DEVICE_ID+'/datapoints'
    d = time.strftime('%Y-%m-%dT%H:%M:%S')
    values={'datastreams':[{"id":"temperature","datapoints":[{"at":d,"value":data}]}]}
    jdata = json.dumps(values)                  # 对数据进行JSON格式化编码
    print jdata
    request = urllib2.Request(url, jdata)
    request.add_header('api-key', API_KEY)
    request.get_method = lambda:'POST'           # 设置HTTP的访问方式
    request = urllib2.urlopen(request)
    return request.read()

http_proxy_handle()
rsp = http_put_data(30)
print rsp

执行结果如下

{"errno":0,"error":"succ"}

这里你可以在平台WEB界面中设备的数据展示中查看到己上报数据。

获取数据

获取数据是设备从平台获取己上报的数据,其代码如下

# get sensor data
def http_get_data():
        url='http://api.heclouds.com/devices/'+DEVICE_ID+'/datapoints'
        request = urllib2.Request(url)
        request.add_header('api-key',API_KEY)
        request.get_method = lambda:'GET'           # 设置HTTP的访问方式
        request = urllib2.urlopen(request)
        return request.read()

执行结果如下

{
    "errno": 0,
    "data": {
        "count": 2,
        "datastreams": [
            {
                "datapoints": [
                    {
                        "at": "2017-03-24 12:24:50.000",
                        "value": 20
                    }
                ],
                "id": "img"
            },
            {
                "datapoints": [
                    {
                        "at": "2017-03-24 13:36:34.000",
                        "value": 20
                    }
                ],
                "id": "temperature"
            }
        ]
    },
    "error": "succ"
}

你可能感兴趣的:(物联网)