feat: 완전한 Tapo 스마트 플러그 백엔드 시스템 구현
✨ 새로운 기능: - Tapo P110/P100 스마트 플러그 완전 연동 - 동적 기기 관리 (추가/제거/수정) - 실시간 전력 데이터 수집 API - 설정 파일 기반 확장 가능한 아키텍처 🔧 기술 개선: - Docker Compose 파일 통합 (mac-mini 전용 제거) - MariaDB 설정 최적화 (호환성 문제 해결) - 포트 구조 개선 (9304-9307 대역 사용) - Express.js 기반 RESTful API 완성 📚 문서화: - README 전면 업데이트 (구현된 API 반영) - Tapo API 엔드포인트 상세 문서화 - 실제 사용 가능한 curl 예제 추가 🗄️ 데이터베이스: - MariaDB 11 안정화 - Redis 캐시 시스템 구축 - 사용자 권한 모델 준비 🚀 Docker 환경: - 단일 docker-compose.yml로 통합 - 포트 충돌 해결 - 헬스체크 및 자동 재시작 설정
This commit is contained in:
139
README.md
139
README.md
@@ -6,10 +6,19 @@
|
||||
|
||||
## 🎯 주요 기능
|
||||
|
||||
- **디바이스 관리**: 홈 IoT 기기 등록 및 모니터링
|
||||
- **전력 소비 추적**: 실시간 전력 데이터 수집 및 분석
|
||||
- **네트워크 트래픽 모니터링**: 디바이스별 네트워크 사용량 추적
|
||||
### ✅ **구현 완료**
|
||||
- **Tapo 스마트 플러그 관리**: 동적 기기 추가/제거/모니터링
|
||||
- **전력 소비 추적**: Tapo P110 플러그를 통한 실시간 전력 데이터 수집
|
||||
- **확장 가능한 아키텍처**: 설정 파일 기반 기기 관리
|
||||
- **RESTful API**: Express.js 기반 완전한 백엔드 API
|
||||
- **데이터베이스**: MariaDB를 통한 안정적인 데이터 저장
|
||||
- **캐시 시스템**: Redis를 통한 고성능 데이터 처리
|
||||
|
||||
### 🚧 **개발 예정**
|
||||
- **웹 대시보드**: 실시간 모니터링 인터페이스
|
||||
- **개인 문서관리**: Paperless 연동 문서 시스템
|
||||
- **시스템 리소스 모니터링**: CPU, 메모리, 디스크 사용량 추적
|
||||
- **네트워크 트래픽 모니터링**: 디바이스별 네트워크 사용량 추적
|
||||
- **알림 시스템**: 임계값 기반 실시간 알림
|
||||
- **사용자 관리**: 역할 기반 접근 제어
|
||||
|
||||
@@ -28,7 +37,7 @@
|
||||
- Docker & Docker Compose
|
||||
- Git
|
||||
|
||||
## 🚀 빠른 시작 (Mac Mini)
|
||||
## 🚀 빠른 시작
|
||||
|
||||
### 1. 저장소 클론
|
||||
|
||||
@@ -37,57 +46,91 @@ git clone https://git.hyungi.net/hyungi/myhome-server.git
|
||||
cd myhome-server
|
||||
```
|
||||
|
||||
### 2. Mac Mini 자동 설정
|
||||
### 2. 필요한 디렉토리 생성
|
||||
|
||||
```bash
|
||||
# 실행 권한 부여
|
||||
chmod +x scripts/setup-mac-mini.sh
|
||||
|
||||
# 자동 설정 실행
|
||||
./scripts/setup-mac-mini.sh
|
||||
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. 수동 설정 (선택사항)
|
||||
### 3. Docker Compose 실행
|
||||
|
||||
```bash
|
||||
# Mac Mini 전용 Docker Compose 사용
|
||||
docker-compose -f docker-compose.mac-mini.yml up -d
|
||||
# 모든 서비스 시작
|
||||
docker-compose up -d
|
||||
|
||||
# 로그 확인
|
||||
docker-compose logs -f
|
||||
|
||||
# 서비스 상태 확인
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
### 4. 수동 배포
|
||||
### 4. Tapo 기기 설정
|
||||
|
||||
```bash
|
||||
# 배포 스크립트 사용
|
||||
chmod +x scripts/deploy-mac-mini.sh
|
||||
./scripts/deploy-mac-mini.sh
|
||||
# Tapo 기기 설정 파일 편집
|
||||
nano config/tapo-devices.json
|
||||
|
||||
# 또는 직접 배포
|
||||
git pull origin main
|
||||
docker-compose -f docker-compose.mac-mini.yml up -d --build
|
||||
# 실제 IP, 이메일, 패스워드 입력 후 저장
|
||||
```
|
||||
|
||||
## 📊 서비스 확인 (Mac Mini)
|
||||
## 📊 서비스 확인
|
||||
|
||||
- **API 서버**: http://localhost:3000 (Mac Mini 로컬)
|
||||
- **API 서버**: http://mac-mini-m4.local:3000 (네트워크 접근)
|
||||
- **phpMyAdmin**: http://localhost:8080
|
||||
- **API 문서**: http://localhost:3000/api
|
||||
### 🌐 **서비스 접속 정보**
|
||||
- **API 서버**: http://localhost:9306
|
||||
- **phpMyAdmin**: http://localhost:9304
|
||||
- **MariaDB**: localhost:9305
|
||||
- **Redis**: localhost:9307
|
||||
|
||||
### 헬스체크
|
||||
### 🏥 **헬스체크**
|
||||
|
||||
```bash
|
||||
# Mac Mini 로컬에서
|
||||
curl http://localhost:3000/health
|
||||
# API 서버 상태 확인
|
||||
curl http://localhost:9306/health
|
||||
|
||||
# 다른 기기에서 (IP 주소는 실제 Mac Mini IP로 변경)
|
||||
curl http://192.168.1.100:3000/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 # 새 디바이스 생성
|
||||
@@ -95,29 +138,39 @@ PUT /api/devices/:id # 디바이스 업데이트
|
||||
DELETE /api/devices/:id # 디바이스 삭제
|
||||
```
|
||||
|
||||
### 기본 사용 예제
|
||||
### 💡 기본 사용 예제
|
||||
|
||||
```bash
|
||||
# 디바이스 목록 조회
|
||||
curl http://localhost:3000/api/devices
|
||||
# Tapo 기기 목록 조회
|
||||
curl http://localhost:9306/api/tapo/devices
|
||||
|
||||
# 새 디바이스 생성
|
||||
curl -X POST http://localhost:3000/api/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 '{
|
||||
"device_id": "test_device",
|
||||
"name": "테스트 디바이스",
|
||||
"device_type": "server",
|
||||
"location": "테스트실"
|
||||
"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
|
||||
```
|
||||
|
||||
## 🗄️ 데이터베이스
|
||||
|
||||
### 접속 정보 (Mac Mini)
|
||||
### 접속 정보
|
||||
|
||||
- **Host**: localhost (Mac Mini 로컬) / mac-mini-m4.local (네트워크)
|
||||
- **Port**: 3306
|
||||
- **Host**: localhost
|
||||
- **Port**: 9305
|
||||
- **Database**: home_management
|
||||
- **Username**: homeuser
|
||||
- **Password**: mac_mini_home_password
|
||||
|
||||
Reference in New Issue
Block a user