Table of Contents
히스토리
- 생성 — Tuya 홈카메라(GKW-IC021 등)를 RPi5 Hailo-8 NPU GStreamer 파이프라인에 연동하는 방법 조사
Tuya 홈카메라 RPi5 Hailo-8 연동 조사
Tuya 홈카메라(GKW-IC021 등)를 RPi5의 Hailo-8 NPU(26 TOPS) + GStreamer 파이프라인에 연결하는 방법을 조사한 결과.
결론 요약
연동 가능 여부: 가능하다 (단, 직접 RTSP는 아님)
Tuya 카메라는 대부분 로컬 RTSP를 기본 지원하지 않는다. P2P/클라우드 기반 프로토콜을 사용한다. 그러나 아래 경로로 RTSP 스트림을 확보하여 GStreamer + Hailo 파이프라인에 연결할 수 있다.
추천 경로: go2rtc (최우선)
go2rtc v1.9.13부터 Tuya source를 네이티브 지원한다. Tuya Smart API 또는 Tuya Cloud API를 통해 WebRTC 스트림을 받아 RTSP로 변환해준다.
| 경로 | 난이도 | 안정성 | 레이턴시 | 비용 |
|---|---|---|---|---|
| go2rtc + Tuya source | 중 | 높음 | 200-500ms | 무료 |
| Tuya Cloud RTSP API | 중 | 중 | 500ms+ | 클라우드 트래픽 과금 |
| 커스텀 펌웨어 | 상 | 높음 (성공 시) | 100ms 이하 | 무료 |
| USB 웹캠 직접 연결 | 하 | 매우 높음 | 최소 | 카메라 비용 |
1. Tuya 카메라 RTSP 스트림 접근 방법
Tuya 카메라는 기본적으로 로컬 RTSP를 제공하지 않음
- Tuya/Smart Life 카메라는 P2P 프로토콜(MQTT + WebRTC)로 클라우드를 경유하여 스트리밍한다
- 일부 Yoosee 기반 카메라는 RTSP를 지원하지만 (
rtsp://admin:password@IP:554/onvif1), GKW-IC021이 이에 해당하는지는 확인 불가 - Tuya Cloud에 RTSP API가 있지만 클라우드를 경유하므로 트래픽 과금 발생
Tuya Cloud RTSP API
Tuya Developer Platform에서 제공하는 HTTP API로 RTSP URL을 동적 발급받을 수 있다:
POST /v1.0/users/{uid}/devices/{device_id}/stream/actions/allocate
Body: {"type": "rtsp"}
응답: rtsps://echo:TOKEN@tx-wework9.tuyacn.com:443/v1/DEVICE_ID/...- URL은 클라우드 릴레이 경유 (로컬이 아님)
- 30초 내 연결 필요 (만료됨)
- GB당 과금 (소액이지만 24/7 운영 시 누적)
GKW-IC021 모델 정보
- 웹 검색 결과 GKW-IC021의 공식 스펙/데이터시트는 찾을 수 없었음
- Tuya OEM 카메라로 추정되며, 정확한 SoC/프로토콜은 기기를 직접 확인해야 함
- Tuya Smart 앱에서 디바이스 ID를 확인하고 go2rtc에서 테스트하는 것이 가장 빠른 방법
2. 추천 경로 1: go2rtc (가장 현실적)
go2rtc는 수십 가지 카메라 프로토콜을 RTSP로 통합 하는 오픈소스 스트리밍 서버이다.
설정 방법
- Tuya Smart 앱 설치 (Smart Life 앱과는 다름!)
- 카메라를 Tuya Smart 앱에 등록
- go2rtc 설치 (ARM64 바이너리 또는 Docker)
- go2rtc.yaml 설정:
streams:
# 방법 A: Tuya Smart API (추천)
tuya_main:
- tuya://protect-us.ismartlife.me?device_id=XXX&email=XXX&password=XXX
# 방법 B: Tuya Cloud API (개발자 플랫폼 필요)
tuya_cloud:
- tuya://iot.tuya.com?device_id=XXX&client_id=XXX&client_secret=XXX&uid=XXXTuya Smart API 주의사항
- Smart Life 계정은 지원 안 됨 — 반드시 Tuya Smart 계정 필요
- Smart Life에 등록된 카메라는 삭제 후 Tuya Smart 앱에 다시 등록해야 함
- go2rtc 웹UI(http://localhost:1984)에서 Add > Tuya로 디스커버리 가능
Tuya Cloud API 설정
- Tuya IoT Platform 에서 클라우드 프로젝트 생성
device_id,client_id,client_secret,uid확보- IoT Video Live Stream 서비스 무료 체험판 구독 필수 (안 하면 스트림 안 됨)
- go2rtc에서 해당 자격증명으로 설정
go2rtc → RTSP 출력
go2rtc가 실행되면 다음 URL로 RTSP 스트림 접근 가능:
rtsp://RPi5_IP:8554/tuya_main이것을 GStreamer 파이프라인에 입력하면 된다.
3. GStreamer + Hailo 파이프라인
기본 RTSP → Hailo 추론 파이프라인
gst-launch-1.0 \
rtspsrc location="rtsp://localhost:8554/tuya_main" latency=200 ! \
rtph264depay ! h264parse ! avdec_h264 ! \
videoconvert ! videoscale ! \
video/x-raw,width=640,height=640,format=RGB ! \
hailonet hef-path=/path/to/yolov8s.hef ! \
hailooverlay ! videoconvert ! \
autovideosinkHailo RPi5 예제에서 RTSP 입력 사용하기
hailo-rpi5-examples (또는 후속 hailo-apps) 프로젝트에서 RTSP 입력 지원:
# hailo_apps_infra/gstreamer_helper_pipelines.py 수정 필요
# get_source_type()에 추가:
# elif input_source.startswith("rtsp"):
# return 'rtsp'
# SOURCE_PIPELINE()에 추가:
# elif source_type == 'rtsp':
# source_element = (
# f'rtspsrc location="{video_source}" latency=200 name={name}_rtsp ! '
# f'rtph264depay ! h264parse ! avdec_h264 ! '
# f'videoconvert ! videoscale'
# )
python basic_pipelines/detection.py --input "rtsp://localhost:8554/tuya_main"레이턴시/버퍼링 최적화
latency=200(ms) — RTSP 버퍼. 200~500ms 권장drop=true— 프레임 드랍 허용 시 추가- WiFi 카메라이므로 네트워크 지연 불가피 (USB보다 200-500ms 느림)
- 해상도: 720p 권장 (1080p도 가능하지만 Hailo 추론 시 리사이즈됨)
4. 대안 비교: Tuya 카메라 vs USB 웹캠
| 항목 | Tuya 카메라 (WiFi) | USB 웹캠 |
|---|---|---|
| 레이턴시 | 200-500ms (go2rtc 경유) | 30-50ms (v4l2src 직접) |
| 안정성 | 중 (WiFi, 클라우드 의존) | 높음 (직접 연결) |
| 해상도 | 1080p (카메라 의존) | 720p~1080p |
| 설치 난이도 | 중 (go2rtc 설정 필요) | 하 (플러그앤플레이) |
| 카메라 위치 | 자유로움 (WiFi) | RPi5 근처 (USB 케이블) |
| PTZ 제어 | Tuya API로 가능 | 불가 (대부분) |
| 양방향 오디오 | go2rtc 지원 | 마이크 별도 |
| 기존 인프라 활용 | 회사 카메라 재활용 | 추가 구매 필요 |
판단
- 실시간 추론 성능이 최우선이면: USB 웹캠이 압도적으로 유리 (레이턴시 10배 차이)
- 기존 Tuya 카메라를 활용하고, 200-500ms 딜레이가 허용되면: go2rtc 경유가 합리적
- 원격 모니터링 + AI 추론 조합이면: Tuya 카메라 + go2rtc가 최적 (카메라를 원하는 곳에 배치)
5. Frigate NVR 옵션
Frigate NVR이 Hailo-8/8L을 공식 지원한다 (2025년부터 Hailo와 파트너십).
장점
- Tuya 카메라 → go2rtc → Frigate 파이프라인이 이미 잘 문서화됨
- 이벤트 기반 녹화, 객체 추적, Home Assistant 연동
- Hailo detector 타입:
hailo8l, 모델:yolov9
설정 예시
# go2rtc.yaml
streams:
tuya_cam:
- tuya://protect-us.ismartlife.me?device_id=XXX&email=XXX&password=XXX
# frigate config.yml
go2rtc:
streams:
tuya_cam:
- tuya://protect-us.ismartlife.me?device_id=XXX&email=XXX&password=XXX
detectors:
hailo:
type: hailo8l
device: PCIe
cameras:
tuya_cam:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/tuya_cam
input_args: preset-rtsp-restream-low-latency
roles:
- detect
detect:
width: 640
height: 640
fps: 10주의
- Frigate는 Docker로 실행 (RPi5에서 가능하지만 리소스 부담)
- HomeAgent 아키텍처와 별개의 시스템 — Phase 5(Agent Intelligence)에서 통합 고려
6. 커스텀 펌웨어 옵션 (참고만)
- yi-hack, wz-mini-hacks 등이 일부 Tuya OEM 카메라에 적용 가능
- GKW-IC021의 SoC가 확인되면 호환 펌웨어 탐색 가능
- 로컬 RTSP를 활성화하면 go2rtc 없이 직접 GStreamer 연결 가능
- 위험: 벽돌 가능성, 보증 상실
7. 실행 계획 (단계별)
Phase A: 검증 (1일)
- GKW-IC021을 Tuya Smart 앱에 등록
- RPi5에 go2rtc ARM64 설치
- go2rtc WebUI에서 Tuya 디스커버리 테스트
- VLC로 RTSP 스트림 확인:
rtsp://RPi5:8554/tuya_main
Phase B: Hailo 연동 (1일)
- hailo-apps-infra에 RTSP source type 추가 (3줄 수정)
python detection.py --input "rtsp://localhost:8554/tuya_main"- FPS/레이턴시 측정
Phase C: 평가 (반나절)
- USB 웹캠과 A/B 비교 (레이턴시, FPS, 안정성)
- 24시간 안정성 테스트
- 최종 아키텍처 결정
참고 링크
- go2rtc GitHub — Tuya 네이티브 소스 지원 (v1.9.13+)
- go2rtc Tuya 설정 문서
- Tuya RTSP API 문서
- Hailo Apps Infra — RPi5 GStreamer 파이프라인
- Frigate + Hailo 설정
- RPi5 AI Kit + IP Camera 가이드
관련 노트
- (저널 미발견)
Comments