600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > irsend 树莓派 php 使用树莓派(Raspberry Pi)实现智能家居(3/4)

irsend 树莓派 php 使用树莓派(Raspberry Pi)实现智能家居(3/4)

时间:2021-01-05 21:07:29

相关推荐

irsend 树莓派 php 使用树莓派(Raspberry Pi)实现智能家居(3/4)

继上次文章使用树莓派(Raspberry Pi)实现智能家居(2/4)初步介绍了如何使用树莓派CLI(命令行)家里的简易电器进行控制之后,这篇文章将会进阶介绍一下,如何使用网页和手机APP对家里电器进行控制,实现智能家居。

其实原理上也并不是很难,大致上就是编写一个简单的HTTP页面,然后将页面上的点击事件触发系统调用其CLI命令,CLI命令对红外发射器的开和关进行操作;对于手机APP来说,也是在简易界面的基础上,将按钮和HTTP链接进行关联,即在手机APP上点击这个按钮,等同于用手机访问了某个URL,URL本身通过PHP来触发系统的CLI命令。

通过HTTP网页来控制家电

首先安装LNMP(Linux,Nginx,Msql,PHP)作为基础的HTTP环境

sudo 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-ps0php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

配置/etc/nginx/nginx.conf,限定线程数和开启gzip支持,gzip开启后将大幅降低传输html的流量占用

worker_processes 1;

worker_connections 256;

gzip on;

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;

配置php

修改/etc/php5/fpm/php.ini,将

cgi.fix_pathinfo=1改为

cgi.fix_pathinfo=0

配置/etc/nginx/sites-avaliable/default,将大部分行前面的#注释符去掉

root /var/www/html ; #站点存储位置

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;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

#开启php解析,使用php-fpm作为Fastcgi通信模块

这个地方挨踢小茶调试了蛮久,WEB一直没有成功运行php页面,后来加上了fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;才生效。所以如果想测试php是否生效可用,可以在/var/www/html下创建phpinfo.php文件,内容如下

// Show all information, defaults to INFO_ALL

phpinfo();

?>

然后打开页面http:///phpinfo.php就可以看到一些关于主机和php的信息。如果这个页面可以显示正常则说明PHP和HTTP安装是成功的。否则,还需要重新对HTTP,PHP配置进行检查。

因为HTTP默认使用www-data这个用户来对主机进行操作,这个用户默认无法执行大多数CLI的权限(包括本文需要用到的irsend这个命令),因此需要赋予www-data这个用户可以使用irsend这个命令的root权限。

编辑/etc/sudoers文件(可能这个文件默认是不能编辑的,如果是这样,可以先用sudo +w /etc/sudoers赋予该文件写入的权限),再最后一行加入以下代码。

www-data ALL=NOPASSWD: /usr/local/bin/irsend

编写cmd.php, 保存在/var/www/html下。该文件为本文最关键的文件了,这个文件主要是用php来调用系统CLI的irsend命令,这样子任何网页只需要调用cmd.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/bin/irsend SEND_ONCE ".$device." ".$

cmd ;

echo($cmdline);

$output = shell_exec($cmdline);

echo($output);

}

?>

这个时候,你就可以在客户端上使用http:///cmd.php?cmd=KEY_ENTER&device=xxx来控制你的家电啦!(其中,KEY_ENTER和xxx需要根据自己的情况进行相应的替换,请参考上一篇文章)

进阶

这个时候你可以写一个简单的Web界面,包含一些描述和开关按钮,只需要把开或关的按钮链接到上述的URL,就可以利用网页来对家里的简易电器进行开和关的操作了!本文就不做太细致的描述了。

利用手机APP对家里电器进行控制

利用手机APP控制家电基本原理和上述的差不多,只是GUI从Web网页变成了手机APP。然而如果你像挨踢小茶一样没有太多手机APP的开发经验的话,也可以利用别人开发好的来使用。比如苹果上可以使用iControl Web,安卓也可以使用类似的软件。之后,根据软件介绍中的,对配置文件进行定义,比方说第一页的Light开关的on键,是链接到http:///cmd.php?cmd=KEY_ENTER&device=xxx的,这样就可以了。

挨踢小茶也录了一个简单的视频,抛砖引玉了,前面一部分拍得比较暗,请不要见怪!

/v_show/id_XMTM4ODE5ODY0MA==.html?from=y1.7-1.2

后面将会在使用树莓派(Raspberry Pi)实现智能家居(4/4)中给大家介绍,如何使用语音来控制家里电器(类似Siri)!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。