python上传数据至onenet

import requests
import json
import sys




DEVICEID = '*****'

SENSORID = 'humidity'

VALUE = 49

APIKEY = 'ZPdLy****'

url = 'http://api.heclouds.com/devices/%s/datapoints'%(DEVICEID)
print url
dict = {"datastreams":[{"id":"TEMP","datapoints":[{"value":50}]}]}
dict['datastreams'][0]['id'] = SENSORID
dict['datastreams'][0]['datapoints'][0]['value'] = VALUE
print dict
s = json.dumps(dict)
headers = {
                "api-key":APIKEY,
                "Connection":"close"

           }
r = requests.post(url,headers=headers,data = s)

print r.headers

print r.text

### 使用Python实现数据上传OneNet平台的解决方案 #### 1. 基于HTTP协议上传数据 可以通过`requests`库以HTTP POST请求的方式将数据上传OneNet平台。以下是一个完整的示例代码,用于向OneNet云平台发送JSON格式的数据: ```python import requests import json # 定义API Key和URL url = "http://api.heclouds.com/datas" headers = {"api-key": "你的apikey"} # 替换为你的API Key # 构造要上传数据 data = { "device_id": "你的设备id", # 替换为你的设备ID "datastreams": [ { "id": "temperature", # 数据流ID "datapoints": [ { "at": "2023-03-01T12:00:00Z", # 时间戳(可选) "value": 25.5 # 温度值 } ] }, { "id": "humidity", # 数据流ID "datapoints": [ { "value": 60.0 # 湿度值 } ] } ] } # 将数据转换为JSON格式 json_data = json.dumps(data) # 发送POST请求 response = requests.post(url, headers=headers, data=json_data) # 输出响应结果 print("状态码:", response.status_code) print("响应内容:", response.text) ``` 上述代码中,`datastreams`字段定义了多个数据流及其对应的数值。每个数据流通过`id`标识,并包含一个或多个`datapoints`,每个`datapoints`表示一个时间点的测量值[^1]。 #### 2. 基于MQTT协议上传数据 如果需要使用MQTT协议上传数据,可以借助`paho-mqtt`库实现。以下是通过MQTT将数据上传OneNet平台的示例代码: ```python import paho.mqtt.client as mqtt import json # MQTT连接参数 server = "mqtt.heclouds.com" # OneNet MQTT服务器地址 port = 6002 # OneNet MQTT端口 product_key = "你的产品key" # 替换为你的产品Key device_id = "你的设备id" # 替换为你的设备ID auth_info = f"{product_key}|{device_id}|123" # 认证信息 topic = "$dp" # OneNet定义的主题 # 构造要上传数据 payload = { "temperature": 25.5, # 温度值 "humidity": 60.0 # 湿度值 } json_payload = json.dumps(payload) # MQTT客户端初始化 client = mqtt.Client(client_id=device_id, protocol=mqtt.MQTTv311) client.username_pw_set(username=auth_info, password="") # 连接回调函数 def on_connect(client, userdata, flags, rc): if rc == 0: print("成功连接到OneNet MQTT服务器") client.publish(topic, json_payload) # 发布数据 else: print("连接失败,返回码:", rc) # 连接到OneNet MQTT服务器 client.on_connect = on_connect client.connect(server, port, keepalive=60) # 循环等待消息发布完成 client.loop_forever() ``` 在上述代码中,`$dp`是OneNet平台定义的默认主题,用于接收设备上传数据点[^2]。 #### 3. 二进制文件上传 如果需要上传二进制文件(如图片或其他数据),可以参考以下代码: ```python import requests # 定义API Key和URL url = "http://api.heclouds.com/bindata" headers = {"api-key": "你的apikey"} # 替换为你的API Key # 定义参数 params = { "device_id": "你的设备id", # 替换为你的设备ID "datastream_id": "img" # 数据流ID } # 打开本地文件 with open('图片文件地址', 'rb') as file: files = {'file': file} response = requests.post(url, headers=headers, params=params, files=files) # 输出响应结果 print("状态码:", response.status_code) print("响应内容:", response.text) ``` 此代码片段展示了如何通过`requests`库上传二进制文件到OneNet平台[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值