# 홈 관리 시스템 (Home Management API) 홈 IoT 기기 모니터링 및 관리를 위한 백엔드 API 시스템입니다. > **Mac Mini M4 Pro 전용 버전** - 고성능 홈 서버 환경에 최적화 ## 🎯 주요 기능 ### ✅ **구현 완료** - **Tapo 스마트 플러그 관리**: 동적 기기 추가/제거/모니터링 - **전력 소비 추적**: Tapo P110 플러그를 통한 실시간 전력 데이터 수집 - **확장 가능한 아키텍처**: 설정 파일 기반 기기 관리 - **RESTful API**: Express.js 기반 완전한 백엔드 API - **데이터베이스**: MariaDB를 통한 안정적인 데이터 저장 - **캐시 시스템**: Redis를 통한 고성능 데이터 처리 ### 🚧 **개발 예정** - **웹 대시보드**: 실시간 모니터링 인터페이스 - **개인 문서관리**: Paperless 연동 문서 시스템 - **시스템 리소스 모니터링**: CPU, 메모리, 디스크 사용량 추적 - **네트워크 트래픽 모니터링**: 디바이스별 네트워크 사용량 추적 - **알림 시스템**: 임계값 기반 실시간 알림 - **사용자 관리**: 역할 기반 접근 제어 ## 🛠 기술 스택 - **Backend**: Node.js, Express.js - **Database**: MariaDB 11.x - **ORM**: Sequelize - **Cache**: Redis - **Logging**: Winston - **Container**: Docker & Docker Compose ## 📋 요구사항 - Node.js 18+ - Docker & Docker Compose - Git ## 🚀 빠른 시작 ### 1. 저장소 클론 ```bash git clone https://git.hyungi.net/hyungi/myhome-server.git cd myhome-server ``` ### 2. 필요한 디렉토리 생성 ```bash mkdir -p /Users/$(whoami)/home-management-db mkdir -p /Users/$(whoami)/home-management-redis mkdir -p /Users/$(whoami)/home-management-data mkdir -p /Users/$(whoami)/home-management-logs ``` ### 3. Docker Compose 실행 ```bash # 모든 서비스 시작 docker-compose up -d # 로그 확인 docker-compose logs -f # 서비스 상태 확인 docker-compose ps ``` ### 4. Tapo 기기 설정 ```bash # Tapo 기기 설정 파일 편집 nano config/tapo-devices.json # 실제 IP, 이메일, 패스워드 입력 후 저장 ``` ## 📊 서비스 확인 ### 🌐 **서비스 접속 정보** - **API 서버**: http://localhost:9306 - **phpMyAdmin**: http://localhost:9304 - **MariaDB**: localhost:9305 - **Redis**: localhost:9307 ### 🏥 **헬스체크** ```bash # API 서버 상태 확인 curl http://localhost:9306/health # API 엔드포인트 목록 확인 curl http://localhost:9306/api # Tapo 기기 목록 확인 curl http://localhost:9306/api/tapo/devices ``` ## 📚 API 엔드포인트 ### 🔌 Tapo 스마트 플러그 관리 ```bash # 기기 목록 조회 GET /api/tapo/devices # 새 기기 추가 POST /api/tapo/devices # 기기 설정 업데이트 PUT /api/tapo/devices/:deviceId # 기기 제거 DELETE /api/tapo/devices/:deviceId # 실시간 전력 데이터 조회 GET /api/tapo/devices/:deviceId/power # 모든 기기 전력 데이터 조회 GET /api/tapo/power # 연결 테스트 POST /api/tapo/test-connection # 기기 설정 템플릿 GET /api/tapo/template ``` ### 📊 디바이스 관리 ```bash GET /api/devices # 모든 디바이스 조회 GET /api/devices/:id # 특정 디바이스 조회 POST /api/devices # 새 디바이스 생성 PUT /api/devices/:id # 디바이스 업데이트 DELETE /api/devices/:id # 디바이스 삭제 ``` ### 💡 기본 사용 예제 ```bash # Tapo 기기 목록 조회 curl http://localhost:9306/api/tapo/devices # Tapo 기기 설정 템플릿 확인 curl http://localhost:9306/api/tapo/template # 새 Tapo 기기 추가 curl -X POST http://localhost:9306/api/tapo/devices \ -H "Content-Type: application/json" \ -d '{ "id": "living_room_plug", "name": "거실 스마트 플러그", "ip": "192.168.1.100", "email": "your-tapo-email@gmail.com", "password": "your-tapo-password", "location": "거실", "device_type": "smart_plug", "enabled": true }' # 전력 소비 데이터 조회 curl http://localhost:9306/api/tapo/power ``` ## 🗄️ 데이터베이스 ### 접속 정보 - **Host**: localhost - **Port**: 9305 - **Database**: home_management - **Username**: homeuser - **Password**: mac_mini_home_password ### 기본 데이터 시스템 초기화시 다음 데이터가 자동으로 생성됩니다: - **관리자 계정**: admin / admin123 - **가족 계정**: family / admin123 - **기본 디바이스**: Mac Mini M4 Pro, Synology DS1525+, RT6600ax ## 🔧 개발 가이드 ### 폴더 구조 ``` src/ ├── config/ # 설정 파일 ├── controllers/ # 컨트롤러 ├── middleware/ # 미들웨어 ├── models/ # 데이터베이스 모델 ├── routes/ # 라우터 ├── services/ # 비즈니스 로직 ├── utils/ # 유틸리티 └── app.js # 메인 애플리케이션 ``` ### 스크립트 ```bash npm run dev # 개발 서버 실행 npm run test # 테스트 실행 npm run lint # 코드 검사 npm run db:migrate # 데이터베이스 마이그레이션 ``` ### 로그 확인 ```bash # Docker 컨테이너 로그 docker-compose logs -f api # 로컬 로그 파일 tail -f logs/combined.log ``` ## 🐳 Docker 명령어 (Mac Mini) ```bash # 모든 서비스 시작 (Mac Mini 전용) docker-compose -f docker-compose.mac-mini.yml up -d # 특정 서비스만 시작 docker-compose -f docker-compose.mac-mini.yml up -d mariadb redis # 로그 확인 docker-compose -f docker-compose.mac-mini.yml logs -f # 컨테이너 상태 확인 docker-compose -f docker-compose.mac-mini.yml ps # 서비스 중지 docker-compose -f docker-compose.mac-mini.yml down # 볼륨까지 삭제 (주의: 데이터 손실) docker-compose -f docker-compose.mac-mini.yml down -v ``` ## 🔍 문제 해결 ### 데이터베이스 연결 오류 ```bash # MariaDB 컨테이너 상태 확인 docker-compose -f docker-compose.mac-mini.yml ps mariadb # 데이터베이스 로그 확인 docker-compose -f docker-compose.mac-mini.yml logs mariadb # 컨테이너 재시작 docker-compose -f docker-compose.mac-mini.yml restart mariadb # Mac Mini 재배포 ./scripts/deploy-mac-mini.sh ``` ### 포트 충돌 기본 포트가 사용 중인 경우 `docker-compose.mac-mini.yml`에서 포트를 변경하세요: ```yaml ports: - "3001:3000" # 3001로 변경 ``` ### Mac Mini 네트워크 접근 문제 ```bash # 방화벽 확인 sudo pfctl -s all # 포트 사용 확인 lsof -i :3000 # 네트워크 인터페이스 확인 ifconfig ``` ## 📈 모니터링 ### phpMyAdmin으로 데이터베이스 모니터링 1. http://localhost:8080 접속 (Mac Mini에서) 2. Server: `mariadb` 3. Username: `homeuser` 4. Password: `mac_mini_home_password` ### API 성능 모니터링 ```bash # API 응답 시간 테스트 time curl http://localhost:3000/api/devices # 부하 테스트 (Apache Bench) ab -n 1000 -c 10 http://localhost:3000/api/devices ``` ## 🔐 보안 - JWT 기반 인증 (추후 구현) - 비밀번호 bcrypt 해싱 - API 요청 제한 (Rate Limiting) - 입력 데이터 검증 ## 📝 라이센스 MIT License ## 🤝 기여하기 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## 📞 지원 문제가 있으시면 [Issues](https://git.hyungi.net/hyungi/myhome-server/issues)에 등록해주세요.