2019-7-24 13:44:55 [显示全部楼层]
4020浏览
查看: 4020|回复: 0

[项目教程] 使用API控制连接到OneNET的物联网设备

[复制链接]

当我们使用把设备连接到onenet上之后,若想要控制设备,可以通过直接使用API的方式


意思就是呢...无论你在哪里,只要你能上网,并且晓得id和apikey,就可以和设备互动了




本文展示了如何使用php和python发送cmd到onenet来控制设备,


当然这也只是我的一点使用经验,如果有错误的地方请及时指正~


建议先使用官方ucos-edp代码烧到开发板进行调试


文档网址:https://open.iot.10086.cn/doc/art257.html#68


一、edp协议

=======


查看公开文档里面的API


使用API控制连接到OneNET的物联网设备图1


1.1使用客户端postman进行调试


可以直接使用postman客户端调试

同时,该软件还可用于生成你想要的语言的代码。黑好用!


下面开始吧

第一步:下载客户端

第二部:安装客户端

第三步:按照下图进行配置


先写header

使用API控制连接到OneNET的物联网设备图2

再写body


使用API控制连接到OneNET的物联网设备图3


再按send,就能够发送cmd指令了


1.2使用python

-----------

```

import requests


url = "http://api.heclouds.com/cmds"


querystring = {"device_id":"**"}


payload = "name=\"{redled}1\"\r\n\r\n\r\n"


headers = {

        'api-key': "******=",

    }


resp**e = requests.request("POST", url, data=payload, headers=headers, param**uerystring)


print(resp**e.text)

```


PS: 在写设备端代码时,要在下发的命令中寻找“redled”,如果找到了对应指令再执行命令。


二、MQTT

======


在官方文档里有提供按TOPIC发送命令的api


使用API控制连接到OneNET的物联网设备图4


因此,只需要按照该方法进行POST即可


1.1 使用python的示例:

导入requests包,mqtt后面的“?”是带参数的意思


```


import requests


url = "http://api.heclouds.com/mqtt?topic=**YOURTO**xx"


querystring = {"device_id":"**YOURID**"}


payload = "****"\r\n\r\n\r\n"


headers = {

        'api-key': "**YOURAPIKEY**x",

    }


resp**e = requests.request("POST", url, data=payload, headers=headers, param**uerystring)

print(payload)

print(resp**e.text)

```


1.2 使用php的示例


1、官方rest api的写法

```

$apikey = '';

$apiurl = 'http://api.heclouds.com';

$device_id = 12345;

//创建api对象

$sm = new OneNetApi($apikey, $apiurl);

$device = $sm->device($device_id);

var_dump($device);

```

就这么几行...

参考地址:https://**.com/cm-heclouds/PHPSDK


2、**在公众号后台服务器中的写法


```

先定义了一个函数

        private function request_url($url = '', $is_post=0 ,$post_data="") {


        $ch = curl_init();//初始化curl

        curl_setopt($ch, CURLOPT_URL,$url);//抓取指定网页

        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header

        curl_setopt($ch, CURLOPT_HTTPHEADER ,array('api-key:vGWaKT0MwmPZHgsYaGf**Pi5m**='));//这里要用自己的api-key 我用###########把自己的隐藏掉了

        curl_setopt($ch, CURLOPT_RE**RANSFER, 1);//要求结果为字符串且输出到屏幕上

        if($is_post){

                  curl_setopt($ch, CURLOPT_POST, 1);//post提交方式

                  curl_setopt($ch, CURLOPT_POS**DS, $post_data);

        }

        $data = curl_exec($ch);//运行curl

        curl_close($ch);


        return  ($data);

    }


再调用(看前三行就行)

            $url = 'http://api.heclouds.com/cmds?device_id=12044783';

            $cmd = "{redled}1";

            $ret_json = json_decode($this->request_url($url,1,$cmd),true);


            if( $ret_json["errno"]==0){

                    $con**="命令发送成功!红灯已开";

             }else{

                    $con**="命令失败!\n错误码=".$ret_json["errno"]."\n错误信息".$ret_json["error"];

                  }


```

----------

祝成功~

----------

附录:

官方文档:https://open.iot.10086.cn/doc/art246.html#68

各种sdk包:https://**.com/cm-heclouds


设备端使用HTTP API的使用详解

https://open.iot.10086.cn/bbs/thread-1041-1-1.html

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail