소개
인터넷을 통해 연결된 장치인 IoT(IoT(Internet of Things)) 디바이스는 우리의 일상 생활을 혁신하고 편리성을 제공하는 데 중요한 역할을 합니다. 이러한 디바이스들은 센서와 액추에이터를 갖추고 있어 환경 데이터를 수집하고 제어할 수 있습니다.
그러나 종종 IoT 디바이스에서 수집된 데이터를 효과적으로 활용하기 위해서는 웹 애플리케이션과 연동할 필요가 있습니다. 이를 위해 Python과 웹 프레임워크를 사용하여 IoT 디바이스와 웹 애플리케이션을 연동해보겠습니다.
센서 데이터 수집
먼저, IoT 디바이스에서 센서 데이터를 수집하는 과정을 알아보겠습니다. 이 예제에서는 Raspberry Pi와 온습도 센서(DHT11)를 사용합니다.
import Adafruit_DHT
DHT_SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4
def get_temperature_humidity():
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
if humidity is not None and temperature is not None:
return temperature, humidity
else:
return None
위의 코드에서 Adafruit_DHT
라이브러리를 사용하여 DHT11 센서에서 온도와 습도를 읽어옵니다. DHT_SENSOR
변수는 사용할 센서를 지정하고, DHT_PIN
변수는 센서가 연결된 GPIO 핀 번호를 나타냅니다. get_temperature_humidity
함수는 센서에서 데이터를 읽어와 온도와 습도를 반환합니다.
웹 애플리케이션 연동
이제 IoT 디바이스에서 수집한 데이터를 웹 애플리케이션과 연동하여 사용자에게 제공할 수 있습니다. 이를 위해 Flask 웹 프레임워크를 사용하겠습니다.
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/api/sensor', methods=['GET'])
def get_sensor_data():
data = get_temperature_humidity()
if data is not None:
temperature, humidity = data
return jsonify({'temperature': temperature, 'humidity': humidity})
else:
return jsonify({'error': 'Failed to read sensor data'})
if __name__ == '__main__':
app.run()
위의 코드에서 Flask 애플리케이션을 구성하고, ‘/api/sensor’ 경로에 GET 요청이 들어오면 get_sensor_data
함수가 호출됩니다. 이 함수는 get_temperature_humidity
함수를 통해 센서에서 데이터를 읽어와 JSON 형식으로 반환합니다.
결과 확인
이제 Raspberry Pi에 웹 애플리케이션을 실행시키고, 브라우저에서 ‘http://
{
"temperature": 25,
"humidity": 50
}
이처럼 Python을 사용하여 IoT 디바이스와 웹 애플리케이션을 연동할 수 있습니다. 이를 통해 센서 데이터를 효과적으로 활용하고 모니터링하는 등 다양한 기능을 구현할 수 있습니다.