본문 바로가기

Android 스마트폰 홈서버 구축! 스마트홈 설치 및 스마트 허브 구성 활용

728x90

Android 스마트폰을 활용하여 루팅 없이 완전한 Home Assistant 서버를 구축합니다.

이를 통해 저전력, 상시 가동이 가능한 스마트홈 허브를 만들 수 있습니다.

📱 시스템 요구사항

  • Android 버전: 5.0 (Lollipop) 이상
  • RAM: 최소 2GB (권장 4GB 이상)
  • 저장공간: 최소 4GB 여유 공간
  • 네트워크: Wi-Fi 연결 필수

🛠️ 필요한 도구

  • Android 앱: UserLAnd (Google Play Store)
  • PC 프로그램: MobaXterm (Windows) 또는 Terminal (Mac/Linux)
  • 기본 지식: Linux 터미널 명령어 기초

UserLAnd로 Linux 환경 구축

📲 UserLAnd 설치

  1. Google Play Store 접속
    • "UserLAnd" 검색 후 설치
    • 약 100MB 저장공간 필요
  2. Linux 배포판 선택
    ⚠️ 중요: Kali Linux를 선택하세요!
    - Ubuntu/Debian: Python 3.8 이하 (추가 작업 필요)
    - Kali: Python 3.10+ (Home Assistant 즉시 설치 가능)

🔧 Kali Linux 초기 설정

  1. 사용자 정보 입력
    💡 보안을 위해 실제 사용 시에는 복잡한 비밀번호 사용 권장
    Username: test
    Password: test
    VNC Password: test
  2. 연결 방식 선택
    • SSH 선택 (VNC보다 가볍고 안정적)
  3. 첫 로그인
    • 자동으로 터미널 실행
    • Password 입력: test

🔐 Root 권한 설정

# root 전환
sudo su

# root 비밀번호 설정
passwd root
# 새 비밀번호 2회 입력

SSH 환경 설정

💻 PC에서 원격 접속 준비

MobaXterm 설치 (Windows)

스마트폰 절전 모드 방지

  1. UserLAnd 메인 화면
  2. "Acquire wakelock" 버튼 클릭
  3. 화면 꺼짐 방지 활성화

🔒 OpenSSH 서버 구성

  1. 필수 패키지 설치
    apt update
    apt install openssh-server nano -y
  2. SSH 설정 파일 편집
    nano /etc/ssh/sshd_config
  3. 설정 변경 내용
    # 포트 변경 (22번은 UserLAnd에서 사용 불가)
    Port 2022
    
    # Root 로그인 허용
    PermitRootLogin yes
    
    # 비밀번호 인증 활성화
    PasswordAuthentication yes
  4. 저장 및 종료
    • Ctrl + OEnter (저장)
    • Ctrl + X (종료)
  5. SSH 서비스 시작 service ssh start

🖥️ PC에서 SSH 접속

  1. MobaXterm 실행
  2. 새 세션 생성
    Session → SSH
    - Remote host: [스마트폰 IP 주소]
    - Username: root
    - Port: 2022
  3. IP 주소 확인 방법
    # 스마트폰 터미널에서
    ip addr show | grep inet

시스템 기본 설정

📦 시스템 업데이트

# 패키지 목록 업데이트
apt update

# 시스템 업그레이드
apt upgrade -y

업그레이드 중 나타나는 프롬프트 응답

  • run (Y/I/N/O/D/Z) [default=N] ?Enter
  • Keyboard 선택: 26 (Other)60 (Korean)1 (Korean)
  • Console setup: 27 (UTF-8)
  • Character set: 23 (Guess optimal character set)

🌏 타임존 설정

dpkg-reconfigure tzdata
  • 6 (Asia)69 (Seoul) 선택

📚 필수 의존성 패키지 설치

apt install -y \
  software-properties-common \
  apparmor-utils \
  avahi-daemon \
  ca-certificates \
  wget curl git nano unzip \
  dbus jq network-manager socat \
  build-essential \
  libpq-dev libssl-dev openssl \
  zlib1g-dev gnupg-agent \
  python3 python3-pip python3-dev python3-venv \
  sqlite3 libsqlite3-dev \
  libjpeg-dev autoconf \
  libopenjp2-7 libturbojpeg0-dev \
  tzdata ffmpeg npm cargo

🐍 Python 버전 확인

python3 --version
  • 최소 요구사항: Python 3.9+
  • Kali Linux: 보통 Python 3.10+ 설치됨
300x250

Home Assistant 설치

🏗️ Python 가상환경 생성

# 홈 디렉토리로 이동
cd /root

# 가상환경 생성
python3 -m venv homeassistant

# 가상환경 활성화
source /root/homeassistant/bin/activate

💡 가상환경 활성화 시 프롬프트가 (homeassistant) root@...로 변경됨

📥 Home Assistant 설치

# pip 업그레이드
pip install --upgrade pip

# wheel 설치 (의존성 관리)
pip install wheel

# Home Assistant 설치
pip install homeassistant

🚀 첫 실행

# Home Assistant 실행
hass

첫 실행 시

  • 초기 설정 파일 생성 (5-10분 소요)
  • 필요한 패키지 자동 다운로드

🌐 웹 인터페이스 접속

http://[스마트폰_IP]:8123
  • 예: http://192.168.219.128:8123

👤 초기 계정 설정

  1. 이름, 사용자명, 비밀번호 설정
  2. 위치 정보 설정 (선택사항)
  3. 통계 정보 공유 여부 선택

PM2 데몬 설정

📊 PM2 설치

# PM2 설치
npm i -g --unsafe-perm pm2

# npm 업데이트
npm install -g npm@8.11.0

🔄 Home Assistant 데몬 실행

# HA를 PM2로 실행
pm2 start /root/homeassistant/bin/hass \
  --interpreter=/root/homeassistant/bin/python \
  -- --config /root/.homeassistant/

# 현재 설정 저장 (재부팅 시 자동 시작)
pm2 save

🛠️ PM2 관리 명령어

# 프로세스 목록 확인
pm2 ls

# 로그 확인
pm2 logs hass

# 프로세스 제어
pm2 stop hass     # 중지
pm2 start hass    # 시작
pm2 restart hass  # 재시작

# 상세 정보
pm2 show hass

# 저장된 프로세스 복원
pm2 resurrect

필수 애드온 설치

🎨 HACS (Home Assistant Community Store)

# HACS 설치 스크립트 실행
cd /root/.homeassistant/
wget -q -O - https://install.hacs.xyz | bash -

설치 후

  1. Home Assistant 재시작
  2. 설정 → 기기 및 서비스 → 통합구성요소 추가
  3. "HACS" 검색 및 설치
  4. GitHub 계정 연동

📝 File Editor

# configurator 다운로드
cd /root/.homeassistant
wget https://raw.githubusercontent.com/danielperna84/hass-configurator/master/configurator.py

# PM2로 실행
pm2 start /root/.homeassistant/configurator.py \
  --interpreter=/root/homeassistant/bin/python

configuration.yaml에 추가

panel_iframe:
  configurator:
    title: File editor
    icon: mdi:wrench
    url: http://192.168.219.128:3218

🔌 ESPHome

# 가상환경 생성
python3 -m venv esphome
source /root/esphome/bin/activate

# ESPHome 설치
pip install --upgrade pip
pip install wheel
pip install esphome

# 가상환경 종료
deactivate

PM2로 실행

source /root/esphome/bin/activate
pm2 start /root/esphome/bin/esphome \
  --interpreter=/root/esphome/bin/python \
  -- /root/.homeassistant/esphome/ dashboard
deactivate
  • 접속 주소: http://192.168.219.128:6052

📡 MQTT (Mosquitto)

# Mosquitto 설치
apt install mosquitto -y

# 사용자 생성
mosquitto_passwd -c /etc/mosquitto/password_file admin
# 비밀번호 입력 (예: admin1234)

# 설정 파일 편집
nano /etc/mosquitto/mosquitto.conf

설정 파일 끝에 추가

per_listener_settings true
listener 1883
allow_anonymous false
password_file /etc/mosquitto/password_file
socket_domain ipv4
# 실행 디렉토리 생성
mkdir -m 775 /run/mosquitto

# PM2로 실행
pm2 start mosquitto -- -v -c /etc/mosquitto/mosquitto.conf

Home Assistant에서 MQTT 통합

  • 브로커: localhost
  • 포트: 1883
  • 사용자: admin
  • 비밀번호: admin1234

🐝 Zigbee2MQTT

# 소스코드 클론
git clone https://github.com/Koenkk/zigbee2mqtt.git /root/zigbee2mqtt

# 가상환경 설정
cd /root
python3 -m venv zigbee2mqtt
source /root/zigbee2mqtt/bin/activate

# 필요 패키지 설치
pip install --upgrade pip
pip install wheel nodeenv
nodeenv -p -n 10.15.1
deactivate

# npm 의존성 설치
cd /root/zigbee2mqtt
npm ci

설정 파일 생성

nano /root/zigbee2mqtt/data/configuration.yaml
homeassistant: true
frontend:
  port: 8080
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost
  user: admin
  password: admin1234
serial:
  port: tcp://192.168.219.197:8899  # ESPHome 코디네이터 주소
  adapter: zstack

PM2로 실행

cd /root/zigbee2mqtt
pm2 -n zigbee2mqtt start npm -- start

유지보수 및 업그레이드

🔄 Home Assistant 업그레이드

최신 버전으로

pm2 stop hass
source /root/homeassistant/bin/activate
pip3 install --upgrade homeassistant
deactivate
pm2 start hass

특정 버전으로

pm2 stop hass
source /root/homeassistant/bin/activate
pip3 install --upgrade homeassistant~=2024.1.0
deactivate
pm2 start hass

🐝 Zigbee2MQTT 업그레이드

pm2 stop zigbee2mqtt

cd /root/zigbee2mqtt

# 설정 백업
cp -R data data-backup

# 업데이트
git checkout HEAD -- npm-shrinkwrap.json
git pull
rm -rf node_modules
npm ci

# 설정 복원
cp -R data-backup/* data
rm -rf data-backup

pm2 start zigbee2mqtt

💾 백업 권장사항

# 전체 설정 백업
tar -czf ha_backup_$(date +%Y%m%d).tar.gz /root/.homeassistant

# 중요 파일만 백업
cd /root/.homeassistant
tar -czf config_backup.tar.gz \
  configuration.yaml \
  automations.yaml \
  scripts.yaml \
  scenes.yaml \
  secrets.yaml \
  .storage/

문제 해결 가이드

❌ 일반적인 문제와 해결방법

1. SSH 접속 실패

# UserLAnd에서 세션 재시작
# Sessions → SSH 길게 누르기 → Stop Session
# 다시 SSH 클릭하여 시작

2. Home Assistant 시작 실패

# 로그 확인
pm2 logs hass --lines 100

# 설정 파일 검증
source /root/homeassistant/bin/activate
hass --script check_config
deactivate

3. 메모리 부족

# 불필요한 프로세스 중지
pm2 stop all

# 메모리 사용량 확인
free -h

# 스왑 메모리 추가 (선택사항)
dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

4. 포트 충돌

# 사용 중인 포트 확인
netstat -tlnp | grep LISTEN

# PM2 프로세스 확인
pm2 ls

🔧 성능 최적화 팁

  1. 불필요한 통합구성요소 비활성화
  2. 로그 레벨 조정 (configuration.yaml)
    logger:
      default: warning
  3. 히스토리 보관 기간 단축
    recorder:
      purge_keep_days: 7

이를 통해 Android 스마트폰을 활용한 완전한 Home Assistant 서버를 구축할 수 있습니다.

루팅 없이도 다음과 같은 기능을 모두 사용할 수 있습니다.

  • ✅ 완전한 Home Assistant Core
  • ✅ HACS를 통한 커스텀 통합구성요소
  • ✅ ESPHome 장치 관리
  • ✅ MQTT 브로커
  • ✅ Zigbee2MQTT 지원
  • ✅ 자동 시작 및 백그라운드 실행

📌 추가 확장 가능성

  • Node-RED 설치
  • InfluxDB + Grafana 모니터링
  • 음성 어시스턴트 통합
  • 외부 접속을 위한 리버스 프록시 설정
728x90
그리드형(광고전용)

댓글