Home Assistant: настройка и использование AI

Оглавление

Как это работает:
  • В Home Assistant в качестве ассистента внедрен AI LLM для которого определен промт и описана роль, указан состав семьи, домашние животные и открыт доступ почти ко всем устройствам;
  • Заведено несколько автоматизаций для формирования голосовых сообщений и уведомлений в Телеграм. Это может быть приветствие на приход домой и доклад статуса состояния устройств, утренняя сводка погоды или рандомное сообщение на сработку устройства/автоматизации;
  •  Набор текста для выдачи сообщений происходит на основе промта в автоматизациях через модели AI, ответ опирается на выданные знания и роли, состояние устройств. B что самое важно – всегда разный!
Как это выглядит:

Утреннее приветствие в ТГ со сводкой погоды

Звуковое сообщение при приветствии пользователя пришедшего домой

Утреннее приветствие в ТГ со сводкой погоды

Добавление и настройка:

Я остановился на интеграции Open router fixed и языковой модели Kwaipilot: KAT-Coder-Pro V1 (free). Open router своего рода агрегатор, предоставляющий возможность подключаться к любой языковой модели, есть платные, есть бесплатные.

Так же возможно использовать и другие интеграции, те что я пробовал:

Мне не очень понравился YandexGPT – намного слабее и однообразнее, к тому же он стал полностью платный, токены обходятся достаточно дорого. GigaChat, показал гораздо более лучшую генерацию, бесплатный тарифный план предлагает набор бесплатных токенов к разным версиям, даже на самой простой модели результат был приемлемым.

Пример будет Именно на Open router fixed и языковой модели Kwaipilot: KAT-Coder-Pro V1 (free)

I. Регистрация на openrouter.ai и генерация API ключа 
  1. Регистрируемся или авторизуемся
  2. Перейдите в раздел «Аккаунт» → «Keys»
  3. Генерим ключ – «Create API key». Копируем его, он понадобится при добавлении сущности AI Task и/или агентов Conversation
II. Добавление интеграции.

Через HACS (рекомендуется)

  1. Установите HACS, если вы ещё этого не сделали
  2. Добавьте этот репозиторий в качестве пользовательского:
    • Перейдите в HACS → Интеграции
    • Нажмите на меню из трёх точек → Пользовательские репозитории
    • Добавить: https://github.com/brouwerict/open_router_fixed
    • Категория: Интеграция
  3. Найдите «OpenRouter Fixed» и установите его
  4. Перезапустите Home Assistant

Ручная установка

  1. Скопируйте папку custom_components/openrouter_fixed в каталог custom_components вашего Home Assistant
  2. Перезапустите Home Assistant

Конфигурация

  1. Перейдите в раздел «Настройки» → «Устройства и службы»
  2. Нажмите «+ Добавить интеграцию»
  3. Найдите «OpenRouter Fixed»
  4. Введите свой ключ API OpenRouter (его можно получить на OpenRouter.ai)
III. Добавление агента Conversation.

Это по сути выбор и настройка языковой модели, которая будет использоваться в качестве ассистента HASS.

  1. Перейдите в раздел «Настройки» → «Устройства и службы» → «Интеграции» → «OpenRouter Fixed»
  2.  Добавляем агента «Add Conversation agent», выбираем модель (может быть любая, предварительно советую потестить на сайте OpenRouter) и заполняем «Promt Template». Чем полнее и лучше вы раскроете для AI роль, тем лучше и интересней она будет генерить контекст.

    Пример промта:

				
					Ты являешься голосовым помощником Home Assistant. Ты, как и твои друзья жвиущие в этом доме любознателен и интересуешься технологиями, космосом, спортом, походами. Твоих друзей зовут Никита и Лиза, а еще кот Вагнер.
				
			
IV. Настраиваем AI ассистента в Home Assistant.
  1. Перейдите в раздел «Настройки» → «Голосовые ассистенты» → «+Добавить ассистента» 
  2.  Заполняем и подтверждаем. При необходимости настройте доступ к объектам.
Практические примеры:
I. Сводка погоды, каждый день в 9 утра.
				
					automation:
  - id: telegram_weather
    alias: Телеграм. Погода
    trigger:
      platform: time
      at: "09:00:00"
    condition:
    action:
#Генерим через промт текст
      - action: conversation.process
        data:
          agent_id: conversation.process
          text: |
            Мы находимся в Санкт-Петербурге, сейчас утро, поприветствуй. Используй форматирование для телеграм.

            Опиши погоду структурировано с эмодзи:
            Погода: {{states.sensor.yandex_weather_condition_yandex.state}}. Температура воздуха{{states.sensor.yandex_weather_temperature.state}} °C. Скорость ветра {{states.sensor.yandex_weather_wind_speed.state}} м.с. 
            Опиши структурировано с эмодзи во сколько взошло солнце, во сколько зайдет и сколько составляет продолжительность дня.

            Далее можно неструктурированно описать:
            Если погода жаркая, холодная, гололед, дождь или ветрено, предупреди на что надо обратить внимание и быть осторожным на улице и дорогах.

            Пожелай чего нибудь положительного.

          agent_id: conversation.kwaipilot_kat_coder_pro_v1_free
#Присваеваем ID ответа
        response_variable: response_telegram_morning
#Отправляем ответ через ТГ БОТ
      - action: telegram_bot.send_message
        data:
          message: "{{ response_telegram_morning.response.speech.plain.speech }}"
#БОНУС. Ссылки с городских веб камер
          inline_keyboard:
            - - - Видео с Дворцовой
                - https://78.servicecdn.ru/streams/877_13
            - - - Видео с Авроры
                - https://78.servicecdn.ru/streams/877_16
            - - - Видео с Лахты
                - https://lakhta.center/online/
				
			

Результат: