使用说明
使用巨万云服务,使设备接入云的步骤分成四步:
1、注册巨万云帐号。
2、登录帐户,创建设备并获取到设备的apikey等信息
具体步骤请点击《创建设备》。
3、上传设备数据
相应api请点击《发送数据API》
相关代码实例请点击《发送数据代码实例》
4、创建应用获取设备数据
具体步骤请点击《创建应用》
创建设备
成功登录到系统之后,点击顶部导航栏的“我的设备”便进入到用户设备管理界面。
如果“我的设备”中,还没有合适设备,请点击页面中的“添加设备”,进行添加。
这里以创建新的温湿度检测设备为例进行说明:
1.在“我的设备”中,点击“添加设备”,填写设备信息完成设备添加。
2.在“我的设备”中,选择要操作的设备,打开设备链接,就能够看到关于该设备的设备ID以及apikey等信息。
不同的设备,apikey是不一样的。apikey作为设备访问安全性的保障,因此获取到了设备的apikey请注意不要泄密。
3.传递数据需要新建数据流,点击“添加数据流”添加。这里添加了temp温度、hu湿度两个数据流。
这时设备的详细信息如下图所示。
发送设备数据API
客户向服务器上发送设备数据的接口
请求地址:http://www.juwanyun.com/121CloudApi/SendData
请求方式:post
请求参数:data。data的内容是一个标准的json字符串,比如,{"deviceid":"设备ID","apikey":"用户ApiKey","stream":数据流}
| deviceid | 设备的ID号。客户有效的设备ID号,请查阅 |
| apikey | 用户ApiKey。不同用户的apikey是不一样的;如何获取apikey,请看《获取apikey》 |
| stream | 上传的设备数据,是一个json数组对象,格式:stream : [ {数据名1 : 值 } ,{数据名2 : 值} ,{数据名x : 值} ] |
返回结果:
访问成功时,将返回:{"result" : "successs"} ;访问失败时,将返回一个包含错误原因的字符串,像这样的: {"error" : "错误码"} ;错误代码,可查阅《常量说明》
使用例子:
那么对应要传递的参数就为:data = {"deviceid" : "10927" , "apikey" : "fcdb0300d4564b3ca5d0da6c8340bd17" , "stream" :[{"temp":23.5},{"hu":25}]}
在线测试
发送设备数据代码实例
设备ID:“10927”
Apikey:“fcdb0300d4564b3ca5d0da6c8340bd17”
设备数据流:[{temp:23.5},{hu:25}]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import threading
import time
import requests
import json
'HTTP通信处理'
class HttpHandle():
def __init__(self, deviceid, apikey):
self.userApikey=str(apikey)
self.deviceid =str(deviceid)
if len(self.deviceid )==0:
print("请输入deviceid")
if len(self.userApikey)==0:
print("请输入apikey")
def posthttpdata(self,url='',data={}):#提交数据
try:
if len(data)>0:
postdata=json.dumps(data)
response=requests.post(url,data= postdata)
result=response.json()
if result=={'result': 'successs'}:
self.log('result','successs')
return response.content
elif result['error']=='ERROR01':
self.log('ERROR01',"系统错误")
elif result['error']=='ERROR02':
self.log('ERROR02',"设备无效,ID或ApiKey错误")
elif result['error']=='ERROR03':
self.log('ERROR03',"命令格式错误")
elif result['error']=='ERROR04':
self.log('ERROR04',"访问频繁错误")
elif result['error']=='ERROR05':
self.log('ERROR05',"非法的json协议 错误")
elif result['error']=='ERROR06':
self.log('ERROR06',"stream不是json数组对象")
return
else:
return
except Exception as ex:
print("connect web post fail!!!",":",ex)
def log(self,flag,text):
#print text
print(flag,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+' '+text)
if __name__=="__main__":
#请求地址
host_sendData="http://www.juwanyun.com/121CloudApi/SendData"
#apikey 不同设备的apikey不一样
deviceid=10927
userApikey='fcdb0300d4564b3ca5d0da6c8340bd17'
httphandle=HttpHandle(deviceid,userApikey)
data={"deviceid" : "10927" , "apikey" : "fcdb0300d4564b3ca5d0da6c8340bd17 " , "stream" :[{"temp":23.5},{"hu":25}]}
#发送数据
httphandle.posthttpdata(host_sendData,data)
package com.ugrow;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JuWanYunTest{
public static final String URL = "http://www.juwanyun.com/121CloudApi/SendData";
public static void main(String[] args) {
sendData("23.5", "25","10927","fcdb0300d4564b3ca5d0da6c8340bd17");
}
public static void sendData(String wd,String sd,String deviceid,String apikey) {
try {
//创建连接
URL url = new URL(URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Charset", "UTF-8");
// 设置文件类型:
connection.setRequestProperty("Content-Type","application/json; charset=UTF-8");
// 设置接收类型否则返回415错误
//conn.setRequestProperty("accept","*/*")此处为暴力方法设置接受所有类型,以此来防范返回415;
connection.setRequestProperty("accept","application/json");
connection.connect();
//POST请求
DataOutputStream out = new DataOutputStream(
connection.getOutputStream());
JSONObject obj = new JSONObject(true);
String str = "[{\"wendu\":"+wd+"},{\"shidu\":"+sd+"}]";
JSONArray ja1 = JSONArray.parseArray(str);
obj.put("deviceid", deviceid);
obj.put("apikey", apikey);
obj.put("stream", ja1);
String jsonStrng = JSON.toJSONString(obj);
System.out.println(jsonStrng);
out.writeBytes(jsonStrng);
out.flush();
out.close();
//读取响应
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String lines;
StringBuffer sb = new StringBuffer("");
while ((lines = reader.readLine()) != null) {
lines = new String(lines.getBytes(), "utf-8");
sb.append(lines);
}
System.out.println(sb);
reader.close();
// 断开连接
connection.disconnect();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
获取apikey
apikey作为设备访问安全性的保障,因此获取到到了设备的apikey请注意不要泄密。
如何获取到apikey。首先需要有注册账户,没有账户的请注册;已有注册账户的, 请登录系统。
成功登录到系统之后,点击顶部导航栏的“我的设备”;便进入到用户设备管理界面。
不同的设备,apikey是不一样的。如果“我的设备”中,还没有设备,请点击页面中的“添加设备”,进行添加。
在“我的设备”中,选择要操作的设备,打开设备链接,就能够看到关于该设备的设备号以及apikey等信息。如下图所示。 图中,由于考虑到安全性问题,把设备号和apikey都进行了涂盖。
创建应用
在“我的应用”中,点击“添加WEB应用”或者“添加手机应用”。可以进行上传数据、读取数据等操作。
这里以创建读取数据的手机应用为例进行说明:
1.创建应用后可将左侧相关控件拖拽到面板,例如折线图、柱状图、表格数据等。
2.选中面板中的任一控件,选择对应的设备以及传输的数据流。本例以折线图为例进行说明。即选择对应检测设备且数据流选择温度,那么保存以后该折线图显示的就是温度变化的折线图,如下图所示。
3.点击保存
4.保存成功后会显示二维码,使用手机扫描二维码可以显示刚刚创建的页面。
注意:要选择跟传输数据相对应的设备以及数据流才能正确显示数据。
常量说明
| ERROR01 | 系统错误 |
| ERROR02 | 设备无效,ID或ApiKey错误 |
| ERROR03 | 命令格式错误 |
| ERROR04 | 访问频繁错误 |
| ERROR05 | 非法的json协议 错误 |
| ERROR06 | stream不是json数组对象 |