히스토리

  • [2026-03-30 Mon 16:36] 생성 — 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 API500ms+클라우드 트래픽 과금
커스텀 펌웨어높음 (성공 시)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로 통합 하는 오픈소스 스트리밍 서버이다.

설정 방법

  1. Tuya Smart 앱 설치 (Smart Life 앱과는 다름!)
  2. 카메라를 Tuya Smart 앱에 등록
  3. go2rtc 설치 (ARM64 바이너리 또는 Docker)
  4. 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=XXX

Tuya Smart API 주의사항

  • Smart Life 계정은 지원 안 됨 — 반드시 Tuya Smart 계정 필요
  • Smart Life에 등록된 카메라는 삭제 후 Tuya Smart 앱에 다시 등록해야 함
  • go2rtc 웹UI(http://localhost:1984)에서 Add > Tuya로 디스커버리 가능

Tuya Cloud API 설정

  1. Tuya IoT Platform 에서 클라우드 프로젝트 생성
  2. device_id, client_id, client_secret, uid 확보
  3. IoT Video Live Stream 서비스 무료 체험판 구독 필수 (안 하면 스트림 안 됨)
  4. 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 ! \
  autovideosink

Hailo 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일)

  1. GKW-IC021을 Tuya Smart 앱에 등록
  2. RPi5에 go2rtc ARM64 설치
  3. go2rtc WebUI에서 Tuya 디스커버리 테스트
  4. VLC로 RTSP 스트림 확인: rtsp://RPi5:8554/tuya_main

Phase B: Hailo 연동 (1일)

  1. hailo-apps-infra에 RTSP source type 추가 (3줄 수정)
  2. python detection.py --input "rtsp://localhost:8554/tuya_main"
  3. FPS/레이턴시 측정

Phase C: 평가 (반나절)

  1. USB 웹캠과 A/B 비교 (레이턴시, FPS, 안정성)
  2. 24시간 안정성 테스트
  3. 최종 아키텍처 결정

참고 링크

관련 노트

  • (저널 미발견)