当我们使用把设备连接到onenet上之后,若想要控制设备,可以通过直接使用API的方式
建议先使用官方ucos-edp代码烧到开发板进行调试
文档网址:https://open.iot.10086.cn/doc/art257.html#68
一、edp协议
查看公开文档里面的API
1.1使用客户端postman进行调试
第一步:下载客户端
第二部:安装客户端
第三步:按照下图进行配置
先写header
再写body
再按send,就能够发送cmd指令了
1.2使用python
import requests
url = "http://api.heclouds.com/cmds"
querystring = {"device_id":"xxxxxx"}
payload = "name=\"{redled}1\"\r\n\r\n\r\n"
headers = {
'api-key': "xxxxxxxxxxxxxxxxxx=",
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(response.text)
二、MQTT
在官方文档里有提供按TOPIC发送命令的api
因此,只需要按照该方法进行POST即可
1.1 使用python的示例:
导入requests包,mqtt后面的“?”是带参数的意思
import requests
url = "http://api.heclouds.com/mqtt?topic=xxxYOURTOPICxxx"
querystring = {"device_id":"xxxYOURIDxxx"}
payload = "xxxxxxxxxxxxxx"\r\n\r\n\r\n"
headers = {
'api-key': "xxxxxYOURAPIKEYxxxxxxxx",
}
response = requests.request("POST", url, data=payload, headers=headers, params=querystring)
print(payload)
print(response.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://github.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:vGWaKT0MwmPZHgsYaGfsqPi5mSQ='));//这里要用自己的api-key 我用###########把自己的隐藏掉了
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
if($is_post){
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $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){
$content="命令发送成功!红灯已开";
}else{
$content="命令失败!\n错误码=".$ret_json["errno"]."\n错误信息".$ret_json["error"];
}
附录: