Raspberry PI Flask
- IoT
- 2022. 4. 25.
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>
이렇게 하면 라즈베리파이에서 서버를 만들고 할 수 있다.