首页 > 代码库 > 树莓派安装FLASK服务;并在端网页读取 GPIO状态和系统时间

树莓派安装FLASK服务;并在端网页读取 GPIO状态和系统时间

做过一些物联网的作品;因为不想一直做APP来控制,因为不能每个人都去下载你自己做的APP,浏览器大家都是有的;那么每个人通过浏览器WEB来访问我们服务器,岂不是很简单和方便,采用flask+python。
Flask是一个使用 Python 编写的轻量级 Web 应用框架,操作简单,上手容易。
安装FLask:
sudo apt-get install python-pip
sudo pip install flask

然后一个简单的服务器就搭好了,都存在我们的树莓派下,估计大家要写几个程序,那么:
mkdir flask && cd flask
mkdir read_gpio && cd read_gpio

sudo nano hello-gpio.py

from flask import Flask, render_template
import datetime#导入系统时间
import RPi.GPIO as GPIO  #导入GPIO
app = Flask(__name__)

GPIO.setmode(GPIO.BCM)#设置GPIO模式为BCM

@app.route("/")
def readPin():
      now = datetime.datetime.now()#抓取时间
      timeString = now.strftime("%Y-%m-%d %H:%M:%S")#抓取系统时间函数到timeString
try:
      GPIO.setup(20, GPIO.IN)#读取BCM_gpio_20
      if GPIO.input(20) == True:
         response = "BCM_gpio_20 is high!"
      else:
         response = "BCM_gpio_20 is low!"
   except:
      response = "There was an error reading pin"

   templateData = {
      time: timeString
      title : Status of Pin + pin,
      response : response
      }

   return render_template(read_pin.html, **templateData)#把templates送到read_pin.html


if __name__ == "__main__":
   app.run(host=0.0.0.0, port=80, debug=True)

sudo nano read_pin.html

<!DOCTYPE html>
   <head>
      <title>{{ title }}</title>
   </head>

   <body>
      <h1>Pin Status</h1>
      <h2>{{ response }}</h2>
      <h2>{{ time }}</h2>
   </body>
</html>

注意:html文件要在.py同行目录下新建子目录文件夹templates,不然找不到template会报错;
格式如下:
 read_gpio(文件夹)--
          ---hello-gpio.py
          ---templates(文件夹)
             ---read_pin.html
  
然后一个读取GPIO状态的就建好了,我们读的是BCM_gpio_20,可以修改;
然后在浏览器访问你树莓派的IP地址 ifconfig
在你的不管手机还是Pc只要和你的树莓派在同一局域网下都可以访问你的网页;读取树莓派系统时间和GPIO状态。game_over,看一下状态。

技术分享
最后再说一点吧:可能大家也想不能实时观看我们的网页,只是一个网页状态;可以不停点刷新网页去get数据,不太人性化,那么就设置网页刷新时间就好了;根据浏览器来选择,博主用的火狐。在树莓派上名字是iceweasel
安装方式是sudo apt-get install iceweasel;
安装好后;然后选择插件 Reladevery 安装; 重启浏览器;在你想要的网页右击 relad_every 自定时间,最短一秒,看到读取效果还可以。科科

下篇介绍网页控制GPIO

 

树莓派安装FLASK服务;并在端网页读取 GPIO状态和系统时间