스마트 플러그를 직접 만들어본 후기 (Node-RED 연동)
1. 프로젝트 개요
이번 프로젝트에서는 라즈베리파이와 Node-RED를 이용해 스마트 플러그를 직접 제작했습니다.
시중에 판매되는 IoT 콘센트처럼, 웹 브라우저나 스마트폰으로 전원을 켜고 끄거나,
자동으로 스케줄링할 수 있는 기능을 구현하는 것이 목표였습니다.
Node-RED는 라즈베리파이에서 시각적으로 플로우를 구성해 IoT 장치를 제어할 수 있는 오픈소스 툴로,
프로그래밍을 잘 몰라도 블록 연결만으로 제어 로직을 만들 수 있어 매우 직관적입니다.
이번 실습을 통해 단순한 전원 제어를 넘어, 전류 감지 및 자동화 로직까지 직접 구성해보았습니다.
2. 사용한 부품과 준비물
- 라즈베리파이 4 (또는 3 이상)
- microSD 카드 (32GB 이상, OS 설치)
- 5V 3A 전원 어댑터
- 릴레이 모듈 (1채널 또는 2채널)
- 전류 센서 (ACS712 또는 INA219)
- 전원 플러그 및 콘센트 소켓 (220V)
- 점퍼 케이블, 브레드보드
- Node-RED, Python3 환경
주의할 점은 220V 전류를 직접 다루기 때문에, 전기 안전을 반드시 고려해야 합니다.
실습용이라면 멀티탭 내부를 분해하지 말고, 저전력 LED 전등이나 USB 전원을 테스트 대상으로 사용하는 것이 좋습니다.
3. 라즈베리파이와 Node-RED 환경 구성
Node-RED는 라즈베리파이에 기본적으로 설치되어 있거나, 다음 명령으로 간단히 설치할 수 있습니다.
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
설치가 완료되면 Node-RED를 실행합니다.
node-red-start
브라우저에서 http://라즈베리파이IP:1880으로 접속하면 Node-RED의 시각적 편집 화면이 열립니다.
여기서 플로우를 구성해 릴레이를 제어하거나, 센서 데이터를 시각화할 수 있습니다.
4. 스마트 플러그 제작 과정
1) 릴레이 연결
릴레이 모듈을 통해 전원선을 제어할 수 있습니다.
- 라즈베리파이 GPIO 17 → 릴레이 IN
- 5V, GND → 릴레이 전원 공급
릴레이의 COM, NO 단자를 전원 콘센트의 한쪽 라인에 연결하면,
GPIO 신호에 따라 전원 흐름을 차단하거나 연결할 수 있습니다.
2) 전류 센서 연결
전류 센서를 이용하면 플러그에 실제 전류가 흐르고 있는지 측정할 수 있습니다.
예를 들어, 플러그에 연결된 기기가 켜져 있는지 확인하거나, 대기 전력 차단 기능을 구현할 수 있습니다.
3) 파이썬 테스트 코드
import RPi.GPIO as GPIO
import time
relay_pin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(relay_pin, GPIO.OUT)
try:
while True:
GPIO.output(relay_pin, GPIO.HIGH)
print("전원 ON")
time.sleep(3)
GPIO.output(relay_pin, GPIO.LOW)
print("전원 OFF")
time.sleep(3)
except KeyboardInterrupt:
GPIO.cleanup()
이 코드는 릴레이를 3초 간격으로 켜고 끄는 간단한 테스트용 스크립트입니다.
기본 동작을 확인한 뒤 Node-RED를 통해 제어하도록 확장합니다.
5. Node-RED 대시보드 설정
Node-RED에는 Dashboard 플러그인을 설치하여 웹에서 직접 버튼을 클릭해 제어할 수 있습니다.
- 메뉴 → Manage Palette → Install 탭에서
node-red-dashboard설치 - 새 플로우를 생성 후 다음 노드 구성
ui_button→ 릴레이 제어용rpi-gpio out→ GPIO 17 연결ui_text→ 전류 센서 값 표시
이렇게 설정하면, 웹 브라우저에서 http://라즈베리파이IP:1880/ui로 접속해
스마트 플러그를 직접 켜고 끌 수 있습니다.
6. 자동화 플로우 구축
Node-RED의 장점은 자동화 로직을 시각적으로 쉽게 만들 수 있다는 점입니다.
예를 들어, 다음과 같은 자동화를 구현할 수 있습니다.
- 시간 기반 제어: 매일 오전 7시에 자동으로 전원 ON
- 소비 전력 감지: 전류 값이 0.1A 이하로 떨어지면 자동 OFF (대기 전력 차단)
- 스마트폰 제어: MQTT 또는 Telegram Bot으로 외부에서 명령 전송
간단한 예시 플로우는 다음과 같습니다.
[Inject Node (매일 07:00)] → [Relay ON]
[Current Sensor < 0.1A] → [Relay OFF]
이렇게 구성하면 전원 스케줄링 및 자동 절전이 동시에 가능합니다.
7. 실제 사용 후기
직접 만든 스마트 플러그는 상용 제품보다 느리지만 훨씬 유연했습니다.
Node-RED를 통해 버튼 인터페이스, 자동화 조건, 알림 시스템 등을 자유롭게 바꿀 수 있었고,
무엇보다도 내부 동작 원리를 완전히 이해할 수 있다는 점이 가장 큰 장점이었습니다.
다만 몇 가지 아쉬운 점도 있었습니다.
- 릴레이 클릭음이 약간 크다.
- Wi-Fi 지연으로 명령 반응이 1~2초 늦는 경우가 있음.
- 안전 규격(절연, 전압 보호 등)을 만족시키려면 추가적인 하드웨어 설계가 필요함.
하지만 IoT 자동화의 기초를 익히기에는 최고의 프로젝트였습니다.
8. 개선점 및 확장 아이디어
- MQTT 브로커 연동: Home Assistant, Node-RED, ESP8266 등과 통합 제어
- 음성 제어 추가: 구글 홈 또는 아마존 알렉사와 연결
- 전력 소비 데이터 로깅: InfluxDB + Grafana로 시각화
- 과전류 차단 기능 추가: 설정된 전류 이상 감지 시 자동 OFF
이런 기능을 더하면 직접 만든 스마트 플러그가 상용 제품 못지않은 완성도를 갖추게 됩니다.
9. 마무리
Node-RED와 라즈베리파이를 이용한 스마트 플러그 제작은,
하드웨어 제어와 IoT 자동화를 동시에 배울 수 있는 매우 유익한 프로젝트였습니다.
간단한 회로 구성과 시각적인 플로우 설계만으로,
나만의 맞춤형 스마트 플러그를 만들 수 있다는 점이 큰 매력입니다.
직접 만들어보면, 전원이 자동으로 켜지고 꺼지는 그 순간이 단순한 편리함을 넘어
“내가 만든 스마트홈 시스템이 실제로 작동한다”는 성취감으로 이어집니다.
스마트홈 입문자라면, 이 프로젝트로 시작해보는 것을 강력히 추천합니다.