본문 바로가기
스마트폰 (Mobile)

Home Assistant AI Task 지능형 자동화, Gemini 내장 OpenRouter 확장

by 날으는물고기 2025. 8. 9.

Home Assistant AI Task 지능형 자동화, Gemini 내장 OpenRouter 확장

728x90

Home Assistant와 ESPHome, Google Gemini API, Frigate, Wyze Camera 등을 통합하여 지능형 자동화를 실현한 훌륭한 사례(Google Gemini 기반 거위/닭장 자동문 제어 및 AI 기반 존재 탐지 시스템 - houndhillhomestead.com)입니다. 기존에는 단순한 시간 기반 자동화로 해가 지면 문을 닫고, 해가 뜨면 문을 여는 방식이었습니다. 하지만 거위는 해가 져도 들락날락하기 때문에 종종 문이 닫히고 밖에 갇히는 문제가 발생했습니다.

이를 해결하기 위해

📷 카메라 이미지를 AI에게 분석시켜 안에 있는지 확인 후 문을 닫는 로직을 구성하게 되었습니다.

구성 요소 설명
Wyze Cam + wz_mini_hacks Coop 내부 촬영용, Frigate와 연동
Frigate 객체 감지 기반 NVR, camera.goose_coop 등록
Home Assistant 모든 자동화의 중심 허브
ESP8266 + Relay Board Ador 자동문 제어 (ESPHome으로 연동)
Google Gemini API (Gemini 1.5/Flash 2.0) 이미지 기반 AI 분석
Helper (input_text, input_number) AI 결과 저장 및 추론 활용

이미지 캡처 스크립트

alias: Take snapshot from goose coop camera
sequence:
  - service: camera.snapshot
    target:
      entity_id: camera.goose_coop
    data:
      filename: /config/tmp/goose_coop_snap.jpg
  • Frigate에 등록된 camera.goose_coop로부터 이미지 저장
  • 저장된 이미지는 Gemini에게 전달될 입력 데이터로 사용

문 자동 닫기 자동화 (AI 기반 제어)

작동 시간: 매 5분, 19:00 ~ 23:00

조건: 문이 열려 있을 때만 수행

alias: Goose Coop - Gemini check
trigger: 매 5분
조건:
  - 시간 조건: 19시 ~ 23시
  - 문이 열려 있음
동작:
  - 이미지 캡처 실행 (위 스크립트)
  - 5초 지연
  - Gemini에게 이미지 전송 및 판단 요청
    prompt:
    > "3 geese and 1 turkey live in this coop. ...
    > If there are at least 2 geese and one turkey in this image, say: **"Birds inside"**
    > Otherwise ... say: **"Birds not inside"**"
  - 결과를 `input_text.goose_coop_response`에 저장
  - 결과가 **Birds inside**면:
    - 릴레이 꺼서 문 닫기
    - 사용자 폰에 알림 전송

AI 기반 점유 수(count) 센서 자동화

  • 닭장/거위장 각각에 대해 내부 촬영 이미지를 AI에게 분석시켜 새의 수를 카운트
  • 그 결과를 input_number helper로 저장
  • Home Assistant의 Lovelace UI에서 상태 시각화
alias: Gemini - Coop Occupancy Count
trigger: 매 5분
동작:
  - 두 카메라 모두 캡처 실행
  - 5초 대기
  - Goose coop 이미지 Gemini 분석:
    prompt: "How many birds ... Respond only with a number"
    결과 → `input_number.goose_coop_occupancy_count`에 저장
  - Chicken coop 이미지 Gemini 분석:
    결과 → `input_number.chicken_coop_occupancy_count`에 저장

추가 구현 포인트

  • Gemini의 답변을 | int 필터로 정수 변환하여 input_number helper에 저장
  • AI가 새를 정확히 인식하면 조도 변화와 상관없이 동작 가능 (IR 야간 촬영 포함)

사용자 인터페이스 (UI 연동)

  • Lovelace UI에서 각 Coop의 새 수를 실시간 그래프 또는 숫자 센서로 표시
  • 필요 시 자동 알림과 연동하여 시각적 + 알림 대응 가능

Google Gemini API 설정

안정성 가이드

항목 설명
📡 인터넷 연결 필수 Gemini API는 클라우드 기반이므로 인터넷 연결 필요
🕵️‍♂️ 프라이버시 주의 영상 촬영이 포함되므로 개인 정보 보호 정책 확인
🧪 신뢰성 확보 IR 영상이나 흐릿한 장면에서 오류 가능 → 보완 로직 필요
🕹️ 수동 제어 백업 자동화 실패 시 수동 제어 장치 제공 필요

향후 확장 아이디어

  1. Bird Recognition → 새의 개별 식별 (목걸이 색상 등으로)
  2. AI + mmWave 센서 조합 → 존재 여부 보정
  3. 야간 모션 탐지 자동 알림 → 외부 동물 침입 탐지
  4. 데이터 로깅 → 장기적 습성 분석
  5. Solar 전력 연동 제어 → 에너지 최적화 운영

이 프로젝트는 단순한 IoT 자동문 제어를 넘어서, Google Gemini와 Home Assistant를 결합한 AI 기반 지능형 자동화 사례입니다.

  • 실시간 존재 탐지수량 기반 센서 구현이 핵심
  • 무인 상태에서도 안전한 닭장 관리가 가능
  • 향후 다양한 AI 자동화 확장 가능성 열려 있음
300x250

2025년 8월 Home Assistant의 AI 통합은 기존보다 훨씬 강력하고 유연하게 개선되어 이러한 자동화를 손쉽게 구현할 수 있게 되었습니다. AI Task, Suggest with AI, 그리고 Streaming Text-to-Speech, OpenRouter 지원을 포함한 기능들이 주요 업데이트 내용입니다. 이 기능들은 단순히 음성 제어를 넘어서, 지능형 자동화, 상태 분석, 카메라 영상 인식, AI 기반 추천 등 다양한 활용을 가능하게 합니다.

Home Assistant의 AI 통합 주요 개선 사항 요약

기능 설명
AI Tasks (🆕) 카메라 이미지, 파일 등을 기반으로 AI가 분석하여 결과를 반환
Suggest with AI (🆕) 자동화 편집 시, AI가 자동화 추천
OpenRouter 통합 (🆕) 400개 이상의 다양한 LLM을 OpenRouter를 통해 쉽게 사용
Streaming TTS (텍스트 음성 변환) 긴 답변도 빠르게 음성 재생 가능, 지연 최소화
Sub-entries 구조 하나의 AI 계정(예: OpenAI API Key)으로 여러 Agent를 생성 가능

통합 구조 개편: Sub-entries

이전에는 AI를 활용할 때마다 개별 설정이 필요했지만, 이제는 하나의 통합 엔트리 아래 여러 에이전트를 생성할 수 있게 되었습니다.

  • OpenAI Key 1개 등록
    • Agent 1: 이미지 분석용 GPT-4 Vision
    • Agent 2: 자동화 추천용 GPT-3.5
    • Agent 3: 요약 응답용 Claude

장점: 다양한 목적에 맞게 구성 가능하며, 재사용성도 높아졌습니다.

AI Task: AI를 통한 데이터 생성

  • ai_task.generate_data 액션을 통해, AI에게 파일/이미지를 전달하고 결과를 받아오는 구조
  • 자동화, 스크립트, 템플릿 센서 등에 활용 가능
  • 결과를 텍스트 또는 JSON 구조화 데이터로 받을 수 있음

활용 예시: 닭장 내부 AI 새 수 세기

template:
  - triggers:
      - trigger: homeassistant
        event: start
      - trigger: time_pattern
        minutes: "/5"
    actions:
      - action: ai_task.generate_data
        data:
          task_name: Count chickens
          instructions: >-
            This is the inside of my goose coop.
            How many birds (chickens, geese, and ducks) are inside the coop?
          structure:
            birds:
              selector:
                number:
          attachments:
            media_content_id: media-source://camera/camera.chicken_coop
            media_content_type: image/jpeg
        response_variable: result
    sensor:
      - name: "Chickens"
        state: "{{ result.data.birds }}"
        state_class: total

구성 요소 설명

  • attachments: 카메라 영상 혹은 파일 첨부
  • instructions: 프롬프트 형태로 AI에게 지시
  • structure: AI가 응답할 데이터 형식(JSON) 명시
  • response_variable: 결과를 저장할 변수 지정

응용 아이디어

  • AI 기반 침입자 탐지
  • 강아지가 현관에 앉아 있으면 자동 문 열기
  • 고양이가 밥그릇 근처에 오래 있으면 자동 급식

Streaming Text-to-Speech 개선

기존에는 AI 응답이 완전히 생성된 후 음성 변환이 시작되어 대기 시간이 길었습니다.

이제는 AI 응답이 생성되는 중간에도 바로 음성 재생을 시작할 수 있습니다.

적용 범위

  • Home Assistant Cloud 음성 (Google/OpenAI 기반)
  • 이전 릴리즈에서 Piper(Local TTS)에도 적용됨
  • 긴 응답, 느린 AI 응답(예: 로컬 LLM)일수록 체감 효과 큼

Suggest with AI

자동화 편집 화면에서 AI에게 다음을 요청할 수 있습니다.

"나의 특정 조건을 기반으로 추천 자동화를 만들어줘"

이 기능은 아직 공개 예시가 많지 않지만, 아래와 같은 시나리오에 유용합니다.

사용 시나리오

  • 특정 센서 조건 기반 자동화 추천
  • 사용자 행동 패턴 기반 자동화 학습
  • 다단계 자동화 흐름 구성 시 가이드 역할

OpenRouter 통합: 수백 가지 LLM 접근

이제 OpenAI나 Google 뿐만 아니라 OpenRouter 통합을 통해 다양한 모델들을 쉽게 활용할 수 있습니다.

장점 설명
✅ 다양한 모델 Claude, Mixtral, Gemini 등 400개 이상의 LLM 접근 가능
🔧 설정 편의 API Key 하나로 다양한 AI Task에 활용
💰 요금 선택 가능 저비용 또는 무료 모델 선택 가능

활용 예시 종합

자동화 목적 활용 방법
🐓 닭장 점유수 측정 카메라 이미지 → AI Task로 새 수 파악 → 센서화
🔐 문 닫기 판단 “닭 3마리 이상 안에 있음” 조건 → 문 닫기 액션
🗣️ 스마트 알림 AI가 요약한 상태 보고 → TTS로 스피커 출력
🎵 AI 음악 필터 "Country 노래면 스킵해줘" → AI가 장르 판별
💬 대화형 상태 질문 “지금 집안 상태 요약해줘” → LLM 응답 후 음성 출력

보안 및 설정 유의사항

항목 설명
📡 인터넷 필요 클라우드 AI 모델 사용 시 필수
🔐 API 키 관리 OpenAI, Google, OpenRouter 키는 노출되지 않도록 주의
🧪 테스트 권장 IR 카메라, 저해상도 영상 등에서 인식률 테스트 필요
👥 사용자 설정 기반 동작 기본 비활성화, 설정 시에만 활성화됨 (비사용자 배려 정책 반영)

이제 Home Assistant는 진짜 AI 어시스턴트가 되었다

이번 2025.08 업데이트는 단순한 대화형 AI 수준을 넘어서 Home Assistant의 모든 자동화 흐름 속에 AI를 내장할 수 있는 기반을 제공했습니다. 특히 ai_task.generate_data와 Streaming TTS는 실질적인 응답속도 개선과 스마트 분석을 가능하게 하며, 오픈 모델(OpenRouter) 지원은 비용 효율성모델 다양성을 크게 확장했습니다. AI 기능 통합 개선은 기존에는 사용자 커스터마이징으로 별도로 구성해야 했던 부분들을 공식적으로 기능화/표준화하여 훨씬 더 쉽게 사용할 수 있도록 내장 형태로 발전시킨 것입니다.

이전 구조 vs 2025 통합 구조 비교

항목 기존 사용자 구현 (수작업) 2025 통합 구조 (AI Task 내장)
AI 호출 방식 Google Gemini API 직접 호출 + 응답 파싱 ai_task.generate_data로 내장 호출
이미지 전송 파일 경로 → 직접 업로드 attachments: 키로 media_source 직접 참조
응답 저장 input_text, input_number에 수동 저장 자동 변수 (response_variable)로 저장 후 매핑
자동화 연결 수동 script 호출 → delay 후 호출 템플릿 센서나 자동화 내에서 바로 사용 가능
모델 설정 Gemini API Key 직접 설정, 모델별 프롬프트 관리 OpenAI / Google / OpenRouter 등 Sub-entry로 다중 Agent 관리 가능

AI Task: 이미지/데이터 분석용 기본 내장 모듈

기존의 Gemini 활용 자동화 (예: 새 수 세기, 존재 여부 판단)ai_task.generate_data 액션 하나로 구현됩니다.

- action: ai_task.generate_data
  data:
    task_name: Count chickens
    instructions: >-
      This is the inside of my goose coop.
      How many birds (chickens, geese, and ducks) are inside?
    structure:
      birds:
        selector:
          number:
    attachments:
      media_content_id: media-source://camera/camera.chicken_coop
      media_content_type: image/jpeg
  response_variable: result
  • 이전에는 직접 HTTP 호출, 파일 저장, 응답 파싱을 모두 스크립트로 구현해야 했습니다.
  • 이제는 YAML에서 단 한 번의 액션으로 모든 것이 자동 처리됩니다.
  • structure 항목은 JSON 포맷으로 원하는 응답 형태를 정의하며, 실시간 파싱 없이도 센서 데이터화가 가능합니다.

OpenRouter 지원: Gemini 포함 수백 개 모델 연결 가능

Home Assistant는 이제 기본적으로 OpenRouter 통합을 제공합니다. OpenRouter는 다음과 같은 장점을 지닙니다.

  • Google Gemini, Claude, Mistral, Mixtral, Llama2 등 다양한 모델 연결
  • Gemini Flash 1.5, 2.0 포함
  • 하나의 API Key로 다양한 Agent 구성 가능
  • Home Assistant 내의 sub-entry 구조를 통해 다중 모델 분기 가능

OpenRouter - OpenAI GPT-5 Chat

즉, Gemini, OpenAI GPT 등 AI 기반 자동화가 Home Assistant에 사실상 기본 내장되었다고 볼 수 있는 수준입니다.

Helper 변수 없이도 자동으로 AI 응답을 상태로 반영

예전에는 아래처럼 수동으로 response를 input_text에 저장해야 했죠.

- action: input_text.set_value
  data:
    value: "{{goose_response.text}}"
  target:
    entity_id: input_text.goose_coop_response

이제는 response_variable만 설정하면 아래처럼 센서 상태에 바로 반영 가능해요.

sensor:
  - name: "Chickens"
    state: "{{ result.data.birds }}"
    state_class: total

음성 TTS와도 바로 연동 가능

AI 응답이 길 경우, Streaming TTS 기능이 내장되어 있어, LLM의 응답이 끝나기 전에 바로 음성으로 출력됩니다.

이건 특히 농장 자동화에서 음성 알림 기반 사용자 경험 개선에 큰 도움이 됩니다.

 

예시)

  • "현재 거위장에는 3마리 거위와 1마리 칠면조가 있어요."
  • "문을 닫습니다. 모두 들어왔습니다."
728x90
그리드형(광고전용)

댓글