==================================Outline====================================
플라스크 기반의 GPIO 포트 제어
스마트홈
----------------------------------------------------------------------------
플라스크 기반의 GPIO 포트 제어
교재 p/211
웹의 링크를 통해 GPIO를 제어 하는 코딩을 해보자.
[leds.py]
from flask import Flask, render_template, request import RPi.GPIO as GPIO
app = Flask(__name__)
GPIO.setmode(GPIO.BCM)
leds = { 23 : {'name' : 'RED LED', 'state' : GPIO.LOW}, 24 : {'name' : 'GREEN LED', 'state' : GPIO.LOW}, 25 : {'name' : 'BLUE LED', 'state' : GPIO.LOW}, }
for led in leds: GPIO.setup(led, GPIO.OUT) GPIO.output(led, GPIO.OUT)
def getGpioState(): for led in leds: leds[led]['state']=GPIO.input(led)
return leds
@app.route("/") def main(): gpioState = { 'leds' : getGpioState() }
return render_template('main.html', **gpioState)
@app.route("/<led>/<act>") def action(led, act): led = int(led) leds = getGpioState() dev = leds[led]['name'] if act == "on": GPIO.output(led, GPIO.HIGH) msg = "Turned " + dev + " on. " elif act == "off": GPIO.output(led, GPIO.LOW) msg = "Turned " + dev + " off. " elif act == "toggle": GPIO.output(led, not GPIO.input(led)) msg = "Toggled " + dev + "." else: msg = "Undefined action!"
gpioState = { 'msg' : msg, 'leds' : getGpioState() }
return render_template('main.html', **gpioState)
if __name__ == "__main__": app.run(host='192.168.0.173', port=8888, debug=True)
|
[main.html]
<html> <head> <title>RGB LED Status</title> </head>
<body> <h1>RGB Led Status</h1>
{% for led in leds %} <p> {{ leds[led].name }} {% if leds[led].state == true %} is currently on (<a href="/{{led}}/off">turn off</a>) {% else %} is currently off (<a href="/{{led}}/on">turn on</a>) {% endif %} </p> {% endfor %}
{% if msg %} <h2>{{ msg }}</h2> {% endif %}
</body> </html>
|
스마트홈
교재 p/221
캐리어 주파수는 통신 내용을 전송하기 위해 만들어져 있는 주파수이다. 이 때 캐리어 주파수에 내용을 싣기 위한 작업을 변조라고 하고 변조된 내용을 해석하는 것을 복조라고 한다.
LonWork

LonWork는 네트워크로 가전을 제어하는데 따로 랜선과 네트워크 수신 장치를 사용하지 않고 제어하는 방법을 고안해냈다.