参照baoxiaozhong的红外接收http://forum.eepw.com.cn/thread/258762/1 设置好了红外接收器,然后尝试用相似的方法实现了红外发射器,成功控制电暖器,后续将考虑控制电视,空调等 设备。
初级篇:用电脑来控制电暖器 参照 我的另外一篇,在这里http://forum.eepw.com.cn/thread/258763/1。
高级篇:通过手机来控制电暖器 安装LNMP
参照http://geekpi.cn/blog/2012/10/1908
-
apt-get install mysql-server mysql-client nginx php5 php5-fpm php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps
- php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
先配置/etc/nginx/nginx.conf,需要做的就是限定线程数和开启gzip支持,gzip开启后将大幅降低传输html的流量占用。
-
worker_processes 1; #只有一个CPU,单进程即可
-
worker_connections 256; #一般支持100在线连接就达到raspberry pi的极限了
-
gzip on; #gzip开启取消前面的#让默认设置生效即可
-
gzip_disable “msie6″;
-
gzip_vary on;
-
gzip_proxied any;
-
gzip_comp_level 6;
-
gzip_buffers 16 8k;
-
gzip_http_version 1.1;
- gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
-
root /var/www ; #站点存储位置
-
index index.php index.html index.htm; #加入index.php为默认页面
-
location ~ \.php$ {
-
fastcgi_split_path_info ^(.+\.php)(/.+)$;
-
fastcgi_pass unix:/var/run/php5-fpm.sock;
-
fastcgi_index index.php;
-
include fastcgi_params;
-
}
- #开启php解析,使用php-fpm作为Fastcgi通信模块
然后配置php sudo权限,这样php执行命令的时候不需要输入自己的密码
为 nginx,而想透过 PHP 发送irsend,用 root 输入指令 vi /etc/sudoers,
在档案最底加上以下一行: www-data ALL=NOPASSWD: /usr/local/bin/irsend
在/usr/share/nginx/www/下 编写cmd.php
-
<?php
-
$cmd = $_POST['cmd'];
-
if(!$cmd){
-
$cmd = $_GET['cmd'];
-
}
-
$device = $_POST['device'];
-
if(!$device){
-
$device = $_GET['device'];
-
}
-
if($cmd&$device){
-
$cmdline = “/usr/bin/sudo /usr/local/bin/irsend SEND_ONCE “.$device.” “.$cmd ;
-
echo($cmdline);
-
$output = shell_exec($cmdline);
-
echo($output);
-
}
- ?>
这里的xxx是可以不同设备的哦。看你前面irrecord里面配置的 当然这种方式操作不方便,和shell操作差不多,所以可以自己做一个html页面,放上若干按钮,每个按钮分别调用cmd.php上面的指令。
这是个简单的例子
index.html
-
-
<html xmlns=”http://www.w3.org/1999/xhtml”>
-
<head>
-
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
-
<meta name=”apple-mobile-web-app-capable” content=”yes”>
-
<title>智能家庭控制台</title>
-
<script type=”text/javascript” src=”js/jquary-1.7.1.js”></script>
-
<script type=”text/javascript”>
-
var xmlHttp;
-
//创建XMLHttpRequest对象
-
function createXMLHttpRequest(){
-
if (window.ActiveXObject){
-
xmlHttp=new ActiveXObject(“Microsoft.XMLHTTP”);
-
}else if (window.XMLHttpRequest){
-
xmlHttp=new XMLHttpRequest();
-
}
-
}
-
function checkMe(url){
-
createXMLHttpRequest();
-
xmlHttp.open(“post”,url,true);
-
xmlHttp.onreadystatechange=send; //用send函数进行发数
-
xmlHttp.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded;”);
-
xmlHttp.send(null);
-
}
-
function send(){
-
//alert(“指令成功发送!”);
-
}
-
</script>
-
</head>
-
<body>
-
<div id=”content”>
-
<div id=”menu_mode”>
-
<ul>
-
<li><input type=”button” onclick=”checkMe(‘cmd.php?cmd=KEY_ON&device=heater’)” value=”开/关”/></li>
-
<li><input type=”button” onclick=”checkMe(‘cmd.php?cmd=KEY_LOW&device=heater’)” value=”低档”/></li>
-
<li><input type=”button” onclick=”checkMe(‘cmd.php?cmd=KEY_HIGH&device=heater’)” value=”高档”/></li>
-
<li><input type=”button” onclick=”checkMe(‘cmd.php?cmd=KEY_HIGH&device=heater’)” value=”定时”/></li>
-
</ul>
-
</div>
-
</div>
-
</body>
- </html>
对于使用iphone或者ipad的用户,还可以把网页快捷方式放到主屏幕,打开就是一个操作界面,是不是很来福啊?
后记:
根据相同的方式,控制机顶盒基本成功,但是有bug,还要继续测试。
TCL电视的遥控器,扫描记录成功,但是发射后电视没有反应,还没找到原因。
空调还没测试,不过之前研究过,它的码比较特别,是N个键组合的结果,所以将来在考虑加入。
其他的遥控器,比如DVD的,接收器有信号输入表示,但是没有去解码。
不过红外控制有个弊端,就是无法知道设备的运行状态,比如说你通过远程试图开启设备,而如果设备之前已经开启,反而将设备关闭了,这大概是目前无法解决的问题吧,只能等到物联网真正普及,设备能够自动上报状态才行。