[파이썬] 웹 프레임워크를 이용한 실시간 IoT 제어

이 글에서는 파이썬을 이용하여 웹 프레임워크를 활용해 실시간 IoT 제어를 구현하는 방법에 대해 알아보겠습니다.

IoT(Internet of Things)는 사물간의 연결을 통해 스마트한 환경을 구축하는 기술입니다. 이러한 IoT 시스템을 웹 애플리케이션을 통해 제어하면 실시간으로 기기를 모니터링하고 제어할 수 있습니다.

프로젝트를 시작하기 전에 다음과 같은 환경을 준비해야 합니다:

1. Flask 웹 프레임워크 설치

Flask는 가벼운 웹 프레임워크로, 파이썬으로 웹 애플리케이션을 간단하게 개발할 수 있게 도와줍니다. 다음 명령어로 Flask를 설치합니다:

pip install flask

2. Flask 웹 애플리케이션 구현

Flask를 사용하여 웹 애플리케이션을 구현해보겠습니다. 다음은 간단한 예제 코드입니다:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/control', methods=['POST'])
def control():
    device = request.form['device']
    action = request.form['action']
    # IoT 기기 제어 로직 구현
    return 'Success'

if __name__ == '__main__':
    app.run()

위 코드에서 / 경로에 접속하면 index.html 파일을 렌더링하는 함수가 호출됩니다. /control 경로로 POST 요청이 오면 deviceaction 파라미터를 받아와서 해당 기기를 제어하는 로직을 구현합니다.

3. 웹 프론트엔드 구현

웹 프론트엔드에서는 사용자가 기기를 선택하고 원하는 동작을 선택할 수 있는 UI를 제공해야 합니다. 다음은 간단한 웹 페이지의 예시입니다:

<!DOCTYPE html>
<html>
<head>
    <title>IoT Control</title>
</head>
<body>
    <h1>IoT Control Panel</h1>
    
    <form action="/control" method="post">
        <label for="device">Device:</label>
        <select id="device" name="device">
            <option value="light">Light</option>
            <option value="fan">Fan</option>
            <option value="heater">Heater</option>
        </select>
        
        <label for="action">Action:</label>
        <select id="action" name="action">
            <option value="on">On</option>
            <option value="off">Off</option>
        </select>
        
        <input type="submit" value="Submit">
    </form>
</body>
</html>

위 코드에서는 deviceaction을 선택할 수 있는 드롭다운 메뉴와 제출 버튼이 있습니다.

4. IoT 기기 제어 로직 구현

웹 애플리케이션에서 요청을 받으면 해당 기기를 실제로 제어해야 합니다. 이 부분은 실제 IoT 기기와 통신하는 로직을 구현해야 합니다. 예를 들어, MQTT 프로토콜을 사용하여 MQTT 브로커와 통신하여 IoT 기기를 제어하는 코드를 작성할 수 있습니다.

import paho.mqtt.client as mqtt

def control_device(device, action):
    # MQTT 클라이언트 설정
    client = mqtt.Client()
    client.connect('mqtt_broker_address', 1883)
    
    # 기기 제어 메시지 전송
    topic = f'iot/control/{device}'
    payload = action.encode('utf-8')
    client.publish(topic, payload)
    
    # 제어 완료 여부 확인
    # ...

위 코드에서는 paho.mqtt.client 모듈을 사용하여 MQTT 클라이언트를 생성하고 브로커에 연결합니다. 그 후, iot/control/{device} 토픽에 제어 명령을 전송하는 코드를 작성합니다. 이때, {device}는 선택한 기기 이름입니다.

이제 위에서 작성한 control_device 함수를 /control 경로에서 호출하도록 Flask 애플리케이션을 수정할 수 있습니다.

마치며

이제 웹 프레임워크를 이용하여 실시간 IoT 제어를 구현하는 방법을 알아보았습니다. Flask를 사용하여 간단한 웹 애플리케이션을 구축하고, MQTT 등의 프로토콜을 사용하여 IoT 기기와 통신하는 방법을 익혔습니다. 실제 프로젝트에서는 더 다양한 기능과 보안성을 고려하여 구현해야 합니다.