用flask框架搭建树莓派控制LED

最近做了个小玩意,在树莓派上搭建了一个简易的flask框架来控制led的开、关。

之前不太熟悉flask的搭建,代码写的乱糟糟的,功能跑通,代码将就着看吧。

树莓派需要安装三个组件
1、python运行环境

2、python-GPIO驱动库

3、flask框架

$ pip install flask

效果视频如下,代码在最后

乱糟糟的代码块


#!/usr/bin/env python
# encoding: utf-8

from flask import Flask
from flask import request


import RPi.GPIO
#import time

# 指定GPIO口的选定模式为GPIO引脚编号模式(而非主板编号模式)
RPi.GPIO.setmode(RPi.GPIO.BCM)

# 指定GPIO14(就是LED长针连接的GPIO针脚)的模式为输出模式
# 如果上面GPIO口的选定模式指定为主板模式的话,这里就应该指定8号而不是14号。
RPi.GPIO.setup(14, RPi.GPIO.OUT)


#RPi.GPIO.output(14, True)

app = Flask(__name__)

@app.route('/home', methods=['GET', 'POST'])
def home():
    return '<h1>Home</h1>'

@app.route('/', methods=['GET'])
def signin_form():
    return '''<form action="/signin" method="post">
              <h3>用户名:admin,密码:password</h3>
              <p><input name="username"></p>
              <p><input name="password" type="password"></p>
              <p><button type="submit">登录</button></p>
              </form>'''

@app.route('/signin', methods=['POST'])
def signin():
    # 需要从request对象读取表单内容:
    if request.form['username']=='admin' and request.form['password']=='password':
        return '''<form action="/on" method="POST">
                  <h3>请点击按钮控制LED</h3></p>
                  <button type="submit">打开LED</button>'''
    return '<h3>Bad username or password.</h3>'

@app.route('/on', methods=['POST'])
def on():
    RPi.GPIO.output(14, True)
    return '''<form action="/off" method="POST">
              <h3>请点击按钮控制LED</h3></p>
              <button type="submit">关闭LED</button>
              <h1>LED已开启</h1></p>'''

@app.route('/off', methods=['POST'])
def off():
    RPi.GPIO.output(14, False)
    return '''<form action="/on" method="POST">
              <h3>请点击按钮控制LED</h3></p>
              <button type="submit">打开LED</button>
              <h1>LED已关闭</h1></p>'''



if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)