使用说明

  使用巨万云服务,使设备接入云的步骤分成四步:

    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" : "错误码"} ;错误代码,可查阅《常量说明》

使用例子:

  若请求设备ID是 10927,apikey是fcdb0300d4564b3ca5d0da6c8340bd17,上传的设备数据为temp,hu;
  那么对应要传递的参数就为:data = {"deviceid" : "10927" , "apikey" : "fcdb0300d4564b3ca5d0da6c8340bd17" , "stream" :[{"temp":23.5},{"hu":25}]}
在线测试

发送设备数据测试

URL地址: 发送方式: data内容:  


发送设备数据代码实例

  设备ID:“10927”

  Apikey:“fcdb0300d4564b3ca5d0da6c8340bd17”

  设备数据流:[{temp:23.5},{hu:25}]

  Python代码实例:
						
    	
#!/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)
    	
    	
    	

  Java代码实例:
						
    	
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数组对象