Raspberry PI Flask

Flask가 뭔지 찍먹해보자.

 

라즈베리파이

import random
from flask import Flask, render_template
import RPi.GPIO as gpio

app = Flask(__name__)
led_pin = 4
gpio.setmode(gpio.BCM)
gpio.setup(led_pin, gpio.OUT)

@app.route("/<command>") #하나의 경로를 이용해서 여러개를 사용할 수 있음
def action(command):
    if command == "on":
        gpio.output(led_pin, gpio.HIGH)
        message = "GPIO"+str(led_pin)+" ON"
    elif command == "off":
        gpio.output(led_pin, gpio.LOW)
        message = "GPIO"+str(led_pin)+" OFF"
    else:
        pass
    
    #response되는 웹 페이지에 값을 넘기고 싶은 경우
    msg = {"message":message,
           "status":gpio.input(led_pin),
           "hum":random.randrange(40,50),
           "temp":random.randrange(20,25),
           "distance":random.randrange(20,100)}
    
    return render_template("led.html",**msg)

if __name__ == "__main__":
    try:
        app.run(host="0.0.0.0",debug=True)
    except KeyboardInterrupt:
        pass
    finally:
        gpio.cleanup()

led.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>Flask LED제어</h1>
    <h3>
        <!-- flask내부에서 사용하는 프레임워크 (jinja2)-->
        {% if message %}
            {{message}}
            {{status}}
            {{hum}}
            {{temp}}
            {{distance}}
        {% endif %}

        {% if status == true %}
            (<a href="/off">Turn off</a>)
        {% else %}
            (<a href="/on">Turn on</a>)
        {% endif %}
    </h3>
</body>
</html>

이렇게 하면 라즈베리파이에서 서버를 만들고 할 수 있다.

 

댓글

Designed by JB FACTORY