在各种工程中我们经常和工业总线/以太网设备及部分RF/IR设备打交道,这方面想必大家已经轻车熟路。随着技术的发展现在大家也能见到一些混合通信设备,他们是配备了互联网领域常见的REST风格的控制接口的控制设备或终端设备,最早此类设备出现在家用领域,多以WIFI的方式接入和云端通信,现在这类设备也开始混杂的出现在常规控制领域了。当然现在的需求也常常让我们和云靠拢,不免我们就要接入很多的开放平台、云服务等。在这些方面HTTP接口大行其道,现行网络环境中HTTP其实是一种建立在TCP/IP协议上的上层协议(偶见UDP做的),实战派的OHSCE提供了对HTTP接口方便的调用。
初识你强大的工具伙伴函数:Ohsce_url_c (Ohsce_eng_url_c)
(OHSCE >=V0.1.22 -執行一箇URL請求。支持身份驗證,支持帶COOKIE、支持GET/POST、支持多協議。
本函數設計爲多用於控製HTTP方式控製的控製設備(如HTTP/TCP網絡繼電器),亦可以做爪取網頁內容時使用。
依賴:PHP/EXT/CURL 請開啟CURL擴展,該擴展爲PHP自帶基本覆蓋所有目前主流使用的PHP環境,大部分部署的環境已默認開啟。
/*************本函數是Ohsce_url_c函數的彆名**********/
Ohsce_eng_url_c($surl,&$odata,$username=null,$password=null,$cookie=false,$short=true,$headers=null)
-$surl 資源目標
string:URL地址 如http://192.168.1.40/do/on1
或
array:複閤資源地址
如array(0=>'http://192.168.1.40/do/on1','postdata'=>$postdata,'proxy'=>'socks5','proxyaddress'=>'10.10.58.42','proxypassword'=>'123456','headers’=>$headerdata)
-$odata 取迴數據所存入的變量
-$username 登陸用戶名
-$password 登陸密碼
-$cookie 保存cookie的文件地址
-$short 短操作
-$headers HEADER數據 ARRAY 0=>true 1=>data
EXAMPLE:
<?php
ini_set('memory_limit',"88M");//重置php可以使用的內存大小爲64M
set_time_limit(0);
ob_implicit_flush(1);
i n c l u d e('loadohsce.php');
Ohsce_url_c('http://www.baidu.com',$data);
echo $data;
sleep(30);
NOTICE:
硬件延時由邏輯控製
我们就通过OHSCE内置的这个函数,通过近乎一行的代码撸各种HTTP(S)API。
一、【GET】
GET方式是最流行的HTTP接口调用方式,调用很多开放平台的接口大多是以GET方式进行,当然一些设备也是。我们以随身云的天气API为示例,查询一条天气信息。
<?php
echo ohsce_url_c("http://wthrcdn.etouch.cn/weather_mini?citykey=101010100");
或
<?php
Ohsce_url_c("http://wthrcdn.etouch.cn/weather_mini?citykey=101010100",$ohsceurldata);
echo $ohsceurldata;
当然我们推荐您使用第二种方式,因为您取回来的数据很可能编码上有问题,您需要进行编码转换和JSON/XML解码。而将数据暂存在一个变量中更为合理一些。
更互联网化一点
现行的很多API是需要使用HEADER传送TOKEN的,例如百度APISTORE,ohsce_url_c函数的最后一个参数便是您用来设置HEADER的地方。当然还可以将HEADER作为数组数据加入URL部分使得代码更加的简短(如POST)。
二、【POST】
POST常见于表单的提交,但是咱网络控制器领域也常见一些厂家将其作为控制指令的提交方式,虽然它未必是最佳的解决方案(至少交给我不会这么做),但存在即为合理,有这样的产品我们就要适应。
<?php
Ohsce_url_c(array(0=>'http://192.168.0.166:80/relay.cgi','postdata'=>"saida2pluse=pluse"),$ohsceurldata,'admin','12345678');
只需要将OHSCE的URL变为数组并加入POST内容即可。
三、牛刀小试。
这是一个来自某宝的继电器设备例子。(群内空间有文件)
<?php
//OHSCE V0.1.25 更新组件请去OHSCE.ORG
include('loadohsce.php');
error_reporting(1);
if(isset($_GET['kg'])){
switch($_GET['kg']){
case "on1":
$sd_kjg_data='saida1on=on';
goto urlc;
case "off1":
$sd_kjg_data='saida1off=off';
goto urlc;
case "pluse1":
$sd_kjg_data='saida1pluse=pluse';
goto urlc;
case "on2":
$sd_kjg_data='saida2on=on';
goto urlc;
case "off2":
$sd_kjg_data='saida2off=off';
goto urlc;
case "pluse2":
$sd_kjg_data='saida2pluse=pluse';
goto urlc;
default:
goto cend;
}
}
goto thtml;
urlc:
Ohsce_url_c(array(0=>'http://192.168.1.166:80/relay.cgi','postdata'=>$sd_kjg_data),$ohsceurldata,'admin','12345678');
thtml:
?>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>演示</title>
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">
<script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>
<br />
<a href="?kg=on1" class="btn btn-success">打开回路1</a>
<a href="?kg=off1" class="btn btn-danger">关闭回路1</a>
<a href="?kg=pluse1" class="btn btn-info">点触1</a>
<br /><br />
<a href="?kg=on2" class="btn btn-success">打开回路2</a>
<a href="?kg=off2" class="btn btn-danger">关闭回路2</a>
<a href="?kg=pluse2" class="btn btn-info">点触2</a>
<nav class="navbar navbar-default navbar-fixed-bottom" role="navigation">
<div class="container">
<center>Powered by <a href="http://www.ohsce.org">OHSCE 0.1.25</a></center>
</div>
</nav>
</body>
</html>
<?php
cend:
exit;
以HTTP方式向位于192.168.1.166IP地址的设备的80端口的relay.cgi文件POST提交进行开启指定回路、关闭指定回路和点控指定回路,并且进行了身份认证admin:12345678。
四、HTTPS
调用方式和HTTP一样,使得HTTPS URL为可用。
<?php
Ohsce_url_c("https://www.baidu.com",$ohsceurldata);
echo $ohsceurldata;
五、更多
这个函数还同时支持更多的协议,它为您操作各家设备提供了方便。例如三星厂的韩华品牌的监控摄像头提供FTP方式的操作,您便可以使用本函数操作它。
六、打磨您的工艺细化您的控制流程,并保持更新您的OHSCE框架至最新的稳定版本。
OHSCE愿每一名控制工程师都可以搭上互联网+的翅膀,每一名PHPWEB工程师都可以冲在物联网的前言,我们的程序是您可靠的基石。
官方网站:http://www.ohsce.org & http://www.ohsce.com
开发者QQ群:374756165
GITHUB:https://github.com/OpenIBC/Ohsce
GIT@OSC:https://git.oschina.net/SFXH/Ohsce
手册地址:http://www.ohsce.com/index.php/book/
捐助&支持OHSCE:http://www.ohsce.com/index.php/company/
合作&赞助:393562235(393562235@qq.com)