使用API控制连接到OneNET的物联网设备
当我们使用把设备连接到onenet上之后,若想要控制设备,可以通过直接使用API的方式意思就是呢...无论你在哪里,只要你能上网,并且晓得id和apikey,就可以和设备互动了
本文展示了如何使用php和python发送cmd到onenet来控制设备,
当然这也只是我的一点使用经验,如果有错误的地方请及时指正~建议先使用官方ucos-edp代码烧到开发板进行调试
文档网址:https://open.iot.10086.cn/doc/art257.html#68
一、edp协议=======
查看公开文档里面的API
1.1使用客户端postman进行调试
可以直接使用postman客户端调试同时,该软件还可用于生成你想要的语言的代码。黑好用!
下面开始吧第一步:下载客户端第二部:安装客户端第三步:按照下图进行配置
先写header再写body
再按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
因此,只需要按照该方法进行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
页:
[1]