关闭

树莓派-通过Web网页实现对树莓派的关机和重启操作

388人阅读 评论(0) 收藏 举报
分类:

实现思路:

1.通过在树莓派上搭建一个http服务器,如:Apache,增加一个控制树莓派的页面。

2.通过在树莓派的控制页面,写入需要在终端执行的命令。

3.服务器端通过python,定时读取文件内容,执行终端命令。


实现步骤:

1.搭建php+Apache环境:

本文主要描述程序编写,如何搭建php+Apache环境,可以网上查找资料,自行实现。

2.编写Web网页控制端:

大致界面像这样:


代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>树莓派Web控制中心</title>
    <script src="js/jquery-3.2.1.min.js" type="text/javascript"></script>
    <script src="js/bootstrap.min.js" type="text/javascript"></script>
    <link href="css/bootstrap.css" rel="stylesheet" type="text/css" />
    <link href="css/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .page-header { margin: 20px 0; border-bottom: 1px solid #eee; padding-bottom: 0; text-align: center; }
        .btn-item { text-align: center; }
        i { margin-right: 3px; display: inline-block; }
        h1 { text-align: center; }
        .tip { font-weight: bold; color: black; }
        .lead { font-size: small; }
    </style>
</head>
<body>
    <div class="container">
        <div class="page-header">
            <h3>
                树莓派Web控制中心</h3>
            <p class="lead">
                用于控制连接到树莓派的各种传感器
            </p>
        </div>
        <div class="panel panel-primary">
            <div class="panel-heading">
                设备</div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-xs-3 btn-item">
                    </div>
                    <div class="col-xs-3 btn-item">
                        <button type="button" class="btn btn-danger btn-trigger">
                            <i class="fa fa-power-off"></i>关机</button>
                    </div>
                    <div class="col-xs-3 btn-item">
                        <button type="button" class="btn btn-primary btn-trigger">
                            <i class="fa fa-refresh"></i>重启</button>
                    </div>
                    <div class="col-xs-3 btn-item">
                    </div>
                    <script type="text/javascript">
                        var url = "ajax/pi.php";
                        $(function () {
                            $(".btn-trigger").click(function () {
                                var text = $(this).text().replace(/ /g, "").replace(/\n/g, "").replace(/\r/g, "").replace(/\t/g, "");
                                var cmd = "";
                                switch (text) {
                                    case "关机":
                                        cmd = "sudo shutdown -h now";
                                        break;
                                    case "重启":
                                        cmd = "sudo reboot";
                                        break;
                                }
                                if (confirm("确定要执行该命令吗?")) {
                                    $.ajax({
                                        type: "POST",
                                        url: url,
                                        data: {
                                            action: "set-linux-cmd",
                                            cmd: cmd
                                        },
                                        success: function (result) {
                                            $(".tip").html(result);
                                        }
                                    });
                                }
                            });
                        });
                    </script>
                </div>
            </div>
        </div>
        <div class="panel panel-primary">
            <div class="panel-heading">
                传感器</div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-xs-12">
                        <span style="color: gray">待接入,敬请期待...</span>
                    </div>
                </div>
            </div>
        </div>
        <div class="panel panel-primary" style="border-color:#555">
            <div class="panel-heading" style="background: #555">
                终端</div>
            <div class="panel-body">
                <div class="row">
                    <div class="col-xs-12">
                        <div class="alert alert-success" style="" role="alert">
                            执行:<span class="tip"> </span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

请求处理代码:

<?php
$action=$_POST["action"];
$cmd=$_POST["cmd"];
if($action=="set-linux-cmd"){ 
	$myfile=fopen("linuxcmd.txt","w") or die("unable to open file!");
	fwrite($myfile,$cmd); 
	$str=file_get_contents("linuxcmd.txt");
	echo($str);	
}
?>
完整代码见文末附件。

3.服务器端Python脚本

import os

while True:
    #read cmd
    file=open("/var/www/html/pi/ajax/linuxcmd.txt","r")
    text=file.read()
    file.close()    
    
    if(text!=""):       
        #clear cmd
        file=open("/var/www/html/pi/ajax/linuxcmd.txt","w")
        file.write("")
        file.close()
        #print(text)
        os.system(text)

4.将脚本设置为开机运行

在终端运行:

sudo nano /etc/rc.local

在exit 0这行代码前一行,添加:

python /home/pi/linuxcmd.py

保存文件并退出。


5.重启系统


附:完整代码

1.Web端代码 

2.服务器端代码




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

树莓派之网络设置

笔者因无法直接操作路由器(仅知道WiFi密码)故只能用笔记本连接WiFi并共享网络给树莓派现实现树莓派WiFi连接网络与网络静态ip设置执行:sudo nano /etc/network/interf...
  • u012649162
  • u012649162
  • 2016-09-21 21:45
  • 2891

树莓派开发系列教程4——树莓派网络与更新配置(有线、无线)

树莓派的使用无法离开网络,如果没有网络,建议大家洗洗睡吧,没有网路就不要
  • xdw1985829
  • xdw1985829
  • 2014-08-25 10:35
  • 60156

树莓派学习笔记——webiopi网页控制LED

webiopi是一个可控制树莓派GPIO的web框架,该框架面向物联网IoT开发。该项目托管于google,并可在sourceforge上下载到源代码。现在webiopi已经发展到0.7版本,webi...
  • xukai871105
  • xukai871105
  • 2014-04-04 22:05
  • 15061

给树莓派换个浏览器

在Raspbian系统中,原配的网络浏览器是Epiphany,尽管我觉得它是轻量级的,而且反应速度也比较快了,但是当我浏览知乎、新浪、腾讯这些论坛和博客的时候!呵呵!这个反应速度让我有点接受不鸟!尽管...
  • farsight2009
  • farsight2009
  • 2016-09-02 15:17
  • 4650

树莓派实现web控制GPIO教程

  • 2013-01-28 01:40
  • 13KB
  • 下载

树莓派-Web控制家电

**给学生做的一个智能家居的教程: 采用树莓派作为服务器,我们通过访问服务器的方法,控制树莓派的I/O口的高低电平,I/O口接上继电器(实现低压控制高压),继电器上你就可以随意接上你想控制的...
  • luoshixian099
  • luoshixian099
  • 2015-04-12 19:18
  • 2007

Html--树莓派作为Web服务器

将树莓派作为一个Web服务器,然后外网可以实现访问。 这个网站的地址为“http://slin1972.vicp.cc:7000/index.html”实现的网页HTML代码 ...
  • qq_28877125
  • qq_28877125
  • 2016-11-19 21:09
  • 1435

树莓派架设http服务器挂载网页

需要在树莓派上挂在一个小型的网页测试用,比较方便 我们要用到的软件就是apache2
  • u010027419
  • u010027419
  • 2015-01-02 19:04
  • 2421

树莓派开发系列教程7——树莓派做web服务器(nginx、Apache)

nginx 是个轻量级的Web服务器,比Apache不差
  • xdw1985829
  • xdw1985829
  • 2014-08-29 09:43
  • 62309

树莓派 respberry安全关机命令重启命令

树莓派 respberry安全关机命令重启命令  - 树莓派可以通过下面几个命令来实现安全关机: sudo shutdown -h now sudo halt sudo poweroff s...
  • CsharpGame
  • CsharpGame
  • 2013-07-19 23:12
  • 21427
    个人资料
    • 访问:2313286次
    • 积分:22597
    • 等级:
    • 排名:第372名
    • 原创:415篇
    • 转载:130篇
    • 译文:22篇
    • 评论:270条
    最新评论