< 구형스마트폰 안쓰는 스마트폰으로 집안 IoT 기기(스마트 조명, 스피커) 제어 서버 만들기
본문 바로가기

구형스마트폰 안쓰는 스마트폰으로 집안 IoT 기기(스마트 조명, 스피커) 제어 서버 만들기

📑 목차

    스마트홈의 중심을 내 손 안에서 만들다

    구형스마트폰 안쓰는 스마트폰으로 집안 IoT 기기(스마트 조명, 스피커) 제어 서버 만들기

    출처:pixabay

     

    요즘 대부분의 가정에는 하나쯤 스마트 조명이나 블루투스 스피커가 있다.
    하지만 대부분의 IoT 제품은 클라우드 기반 앱으로만 제어되기 때문에,
    인터넷이 끊기면 작동하지 않거나 제조사 서버 장애 시 제어가 불가능한 경우가 많다.


    나는 이 구조적인 불편함을 해결하기 위해 구형 스마트폰 안 쓰는 스마트폰을 IoT 제어 서버로 전환하는 실험을 시작했다.
    핵심 목표는 단 하나 — “모든 IoT 기기를 내 서버에서 직접 제어하고,
    외부 서버에 의존하지 않는 독립적인 스마트홈 시스템을 구축하자.”였다.

    이 아이디어는 단순하지만 강력했다.


    구형 스마트폰 안 쓰는 스마트폰은 이미 Wi-Fi, 블루투스, 음성 인식, 자동화 앱 환경을 모두 갖추고 있다.
    거기에 소형 리눅스 서버 환경을 구성하면,
    스마트홈의 ‘두뇌’ 역할을 완벽히 수행할 수 있었다.


    결국 구형 스마트폰 안 쓰는 스마트폰은 단순한 통신 장치가 아니라,
    집 전체를 제어하는 두 번째 허브로 진화할 수 있는 잠재력을 갖고 있었다.
    이 실험은 ‘내 손안의 홈 어시스턴트’를 현실로 만들기 위한 첫걸음이었다.


    기본 서버 구축 – Termux와 MQTT로 IoT 통신 허브 만들기

    IoT 기기의 핵심은 기기간 통신이다.
    이를 위해 대부분의 스마트홈 시스템이 사용하는 프로토콜이 바로 MQTT(Message Queuing Telemetry Transport) 다.
    가볍고 빠르며, 저전력 장치에서도 안정적으로 메시지를 주고받을 수 있는 구조다.
    따라서 구형 스마트폰 안 쓰는 스마트폰을 IoT 서버로 만들려면 MQTT 브로커를 구축하는 것이 첫 단계였다.

    안드로이드에 Termux를 설치한 뒤 다음 명령으로 MQTT 서버를 설치한다.

     
    pkg update && pkg upgrade pkg install mosquitto python

    설치 후 mosquitto를 실행하면, 구형 스마트폰 안 쓰는 스마트폰이 MQTT 브로커로 작동하기 시작한다.
    이제 같은 네트워크 안의 IoT 기기(예: ESP8266, 라즈베리파이, 아두이노 등)가
    스마트폰을 통해 신호를 주고받을 수 있다.
    예를 들어 조명을 켜거나 끄는 명령은 다음과 같이 전송된다.

     
    mosquitto_pub -h [스마트폰 IP] -t "light/room1" -m "ON"

    이 메시지를 받은 ESP8266이 릴레이를 작동시켜 전등이 켜지는 구조다.
    모든 과정은 인터넷 없이 로컬 네트워크 내에서만 이루어지므로
    속도도 빠르고, 개인정보 유출 우려도 없다.


    나는 이후 Python의 paho-mqtt 모듈을 사용해
    구형 스마트폰 안 쓰는 스마트폰에서 자동 제어 스크립트를 돌리며 완전한 로컬 IoT 허브를 완성했다.

    이 설정으로 조명, 커튼, 공기청정기, 스피커까지 한 번에 제어할 수 있었다.


    음성 명령과 자동화 로직 추가

    서버가 제대로 작동하기 시작하자, 나는 다음 단계로 ‘음성 제어’를 추가했다.
    스마트홈이라면 음성 인식은 필수다.
    Termux에 Python 기반 음성인식 모듈을 설치하고,
    Google Speech Recognition API와 gTTS(Text-to-Speech)를 함께 활용했다.

     
    pip install speechrecognition gtts paho-mqtt

    이제 마이크를 통해 “거실 불 꺼줘”라고 말하면
    AI 스크립트가 해당 명령을 분석해 MQTT 메시지를 전송한다.


    조명은 바로 꺼지고, 스피커에서는 “거실 조명을 껐습니다.”라는 음성이 출력된다.

    여기에 더해, 일정·센서 데이터를 활용한 자동화 스케줄러를 추가했다.
    Python의 schedule 모듈과 Termux:API를 이용해
    시간, 밝기, 온도 센서 데이터를 기반으로 자동 제어 규칙을 만들었다.


    예를 들어, 오후 11시가 되면 모든 조명을 자동으로 끄고
    아침 7시에는 커튼을 열며, 스피커에서 알람 음악을 재생하도록 설정했다.
    이렇게 구형 스마트폰 안 쓰는 스마트폰 하나로 완전한 ‘스마트홈 중앙 시스템’을 구현할 수 있었다.


    특히 놀라웠던 점은 구형 스마트폰 안 쓰는 스마트폰의 절전 설계 덕분에
    이 서버가 하루 24시간 구동되어도 발열이 거의 없었다는 것이다.
    결국 나는 거대한 스마트홈 허브 대신 손바닥만 한 제어 센터를 가지게 되었다.


    외부 접속과 보안 설정 – 언제 어디서나 제어하기

    로컬 네트워크 제어만으로는 아쉬웠다.
    그래서 외부에서도 스마트폰 IoT 서버에 접속할 수 있도록 설정했다.
    이를 위해 라우터에서 MQTT 포트(기본 1883)를 외부로 열고,
    DDNS(Dynamic DNS) 서비스를 이용해 고정 도메인을 부여했다.


    이제 집 밖에서도 mqtt://myhome.duckdns.org 주소를 통해
    조명이나 스피커를 제어할 수 있게 된 것이다.

    물론 외부 연결에는 반드시 보안 암호화가 필요하다.
    mosquitto.conf 파일에 다음 옵션을 추가해 SSL/TLS 통신을 활성화했다.

     
    cafile /data/data/com.termux/files/home/ca.crt certfile /data/data/com.termux/files/home/server.crt keyfile /data/data/com.termux/files/home/server.key require_certificate true
     

    이 설정 덕분에 암호화된 인증서 기반의 통신만 허용되었다.
    추가로 ufw(방화벽)와 fail2ban을 설치해
    무단 접속 시도를 실시간으로 차단하도록 했다.


    이제 내 IoT 서버는 외부 공격에도 강한 보안형 스마트홈 플랫폼이 되었다.
    심지어 VPN 연결을 추가해 외부 제어 시에도 마치 내부망처럼 빠른 응답을 유지할 수 있었다.

     

    결론 – 스마트홈의 자립, 스마트폰으로 완성되다

    이번 프로젝트는 단순한 기술 실험이 아니라,
    집 안의 모든 IoT 기기를 스스로 제어할 수 있는 자립형 스마트홈 구축기였다.
    조명, 스피커, 커튼, 공기청정기까지 —
    이제 모든 기기가 내 구형 스마트폰 안 쓰는 스마트폰 서버를 중심으로 작동한다.
    클라우드 의존도는 0%, 보안은 강화되고, 응답 속도는 즉각적이다.
    더 이상 외부 플랫폼의 장애나 개인정보 수집을 걱정할 필요가 없다.

     

    구형 스마트폰 안 쓰는 스마트폰은 이제 단순한 사용자 기기가 아니라,
    스마트홈의 주체이자 제어 센터로 진화했다.
    이 시스템을 통해 나는 내 생활 패턴을 데이터로 분석하고,
    에너지 효율까지 최적화할 수 있었다.


    기술이란 결국, 거창한 장비가 아니라 작은 장치를 얼마나 똑똑하게 쓰느냐의 문제다.
    구형 스마트폰 안 쓰는 스마트폰 하나로 시작된 실험이
    결국 내 집 전체를 움직이는 자동화 혁명으로 이어졌다.
    이제 내 거실의 불빛 하나도, 내 손끝이 아니라 내 서버의 명령으로 켜지고 꺼진다.