Skip to main content

Integrar Mayordomo de IA Espacial en Home Assistant

Construye un asistente de IA controlado por voz para tu hogar inteligente.

Imagina poder comenzar tu día simplemente susurrando a un dispositivo junto a tu cama: "Jarvis, buenos días. ¿Cómo está el clima hoy? Y por favor, enciende la cafetera." En respuesta, tu asistente de IA confirma el pronóstico del tiempo mientras tu cafetera comienza a preparar café en la cocina.

Esto no es solo un concepto de una película; es una aplicación práctica que puedes construir e implementar tú mismo. Esta guía proporciona una solución paso a paso para integrar un asistente de IA local con tus dispositivos domésticos inteligentes. Al final de este tutorial, tendrás un centro doméstico inteligente completamente funcional y activado por voz.

Este artículo proporcionará una guía paso a paso sobre cómo usar Dify, el servicio backend Xiaozhi, y el SenseCAP Watcher para integrar un asistente de IA—capaz de comprensión contextual, control de dispositivos, consultas de estado, e incluso preguntas y respuestas basadas en conocimiento—en tu sistema doméstico inteligente Home Assistant. Aprenderás cómo hacer que la IA sea un asistente verdaderamente efectivo en tu vida inteligente a través de simples interacciones de voz.

Prerrequisitos

Por favor, ten listos los siguientes elementos y condiciones:

DispositivoPropósito
Home Assistant GreenUn sistema Home Assistant pre-implementado
ReComputer R1000Para implementar Dify, el servicio Xiaozhi, e interactuar con el Watcher
SenseCAP WatcherLa interfaz de interacción humano-máquina
Una computadoraPara acceder a las aplicaciones instaladas

Además, se requiere una conexión de red estable.

Ⅰ. Instalación y Despliegue

En esta sección, instalaremos y configuraremos los componentes principales en tres pasos:

  1. Instalar Dify - El cerebro de la aplicación de IA
  2. Instalar xiaozhi-esp32-server - El puente que conecta la IA y el hardware
  3. Configurar SenseCAP Watcher - Permitir que el asistente de voz te escuche

Puedes omitir los siguientes pasos e ir a Orquestación de la Aplicación Dify si ya has instalado y configurado Dify, el servicio backend de Xiaozhi, y SenseCAP Watcher.

Instalar Dify

Por favor instala Docker primero si aún no lo has hecho.

tip

Para usuarios en China continental, es posible que necesites actualizar la fuente de imágenes de Docker:

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

Nota: Este script es proporcionado por un tercero. Esta referencia es solo para fines de ejemplo. Por favor evalúa su idoneidad y riesgos por ti mismo.

Ejecuta los siguientes comandos para instalar Dify. Para más detalles, consulta Instalación de Dify:

git clone https://github.com/langgenius/dify.git --branch 1.5.0 # Download the code for Dify version 1.5.0, check the repo for the latest version.
cd dify/docker # Change to the Docker configuration directory for Dify
cp .env.example .env # For beginners, no modification to this file is needed
docker compose up -d

Después de que los comandos se hayan ejecutado exitosamente, Dify debería estar funcionando. Ahora, necesitas encontrar la dirección IP de la computadora donde está ejecutándose Docker.

Encontrar la Dirección IP
  • En Windows, abre el Símbolo del sistema (CMD) o PowerShell, escribe ipconfig, y busca la "Dirección IPv4".
  • En macOS o Linux, abre la Terminal, escribe ip addr o ifconfig, y encuentra la dirección IP correspondiente a tu interfaz de red (usualmente comienza con 192.168.x.x o 10.x.x.x).

Asumiendo que la dirección IP de tu computadora es 192.168.101.109, abre un navegador y navega a http://192.168.101.109/install (la primera visita redirigirá a la página de configuración inicial).

Sigue las instrucciones en pantalla para completar la creación de la cuenta de administrador. Después, puedes acceder al panel principal de Dify en http://192.168.101.109.

Configurar Proveedor de Modelo

Para permitir que tu aplicación de IA de Dify piense y responda, necesitas conectarla a al menos un "Proveedor de Modelo de Lenguaje Grande."

  • Después de iniciar sesión en Dify, encuentra tu avatar de perfil en la barra de navegación superior y haz clic en "Configuración."
  • Selecciona "Proveedores de Modelo" del menú de la izquierda.
  • Esto listará los varios proveedores de modelo soportados por Dify (como OpenAI, Azure OpenAI, Volcano Engine, MiniMax, etc.). Elige un proveedor con el que tengas una cuenta y desees usar, luego haz clic en "Agregar."
  • Sigue las indicaciones en pantalla para ingresar la información de autorización de tu proveedor de modelo, como la Clave API. Por ejemplo, esta guía usa "Volcano Engine" como proveedor de modelo.

Dify MCP authorize

Para instrucciones detalladas, por favor consulta Introducción a la Integración de Modelos Grandes - Documentos de Dify:

Crear una Nueva Aplicación de Agente

En Dify, los asistentes de IA existen como "Aplicaciones." Necesitamos crear una aplicación de tipo "Agente."

  • En el panel principal de Dify, haz clic en "Crear Aplicación."
  • Selecciona el tipo de aplicación como "Agente."
  • Dale un nombre a tu aplicación (ej., "Mi Mayordomo Inteligente") y luego haz clic en "Crear."

Obtener la Clave API de la Aplicación

Para permitir que el "servicio backend de Xiaozhi" se comunique con esta aplicación de Dify, necesitamos obtener la clave API de la aplicación.

  • Ve a la aplicación de Agente que acabas de crear.
  • En la barra de navegación izquierda dentro de la aplicación, encuentra y haz clic en el ícono que parece una terminal, que es "Acceso API."
  • En la página de Acceso API, haz clic en "Clave API" en la esquina superior derecha, y luego haz clic en el botón "Crear Clave" que aparece.
  • El sistema generará una clave API (también llamada Token), por ejemplo, app-T9jHW9pCtj3NVMHHPAPrNFAg.
IMPORTANTE

Copia esta clave API inmediatamente y pégala en un lugar seguro (como un bloc de notas), ya que la necesitaremos en breve.

加载中...

Instalar el Servicio Backend de Xiaozhi

El servicio backend de Xiaozhi es un programa diseñado específicamente para la serie de microcontroladores ESP32 (el SenseCAP Watcher está basado en el ESP32-S3). Recibe datos de voz del hardware, realiza reconocimiento, y los reenvía a la aplicación de IA que acabamos de crear en Dify.

El servicio backend de Xiaozhi ofrece dos métodos de instalación: instalación simplificada e instalación de módulo completo. Para detalles, por favor consulta Elegir un Método de Despliegue.

Recomendamos la instalación full-module para una experiencia más conveniente.

Ejecuta el siguiente script de instalación rápida:

curl -L -o xiaozhi-server-docker-setup.sh https://raw.githubusercontent.com/xinnan-tech/xiaozhi-esp32-server/main/docker-setup.sh
chmod +x xiaozhi-server-docker-setup.sh
./xiaozhi-server-docker-setup.sh

Después de que el script termine de ejecutarse, creará una carpeta llamada xiaozhi-server en el directorio actual y descargará automáticamente los archivos necesarios para el servicio backend de Xiaozhi y los modelos básicos de reconocimiento de voz.

Para la experiencia funcional completa, necesitamos instalar usando el archivo de configuración de módulos completos. Por favor, ejecuta el siguiente comando nuevamente:

cd xiaozhi-server
wget https://raw.githubusercontent.com/xinnan-tech/xiaozhi-esp32-server/refs/heads/main/main/xiaozhi-server/docker-compose_all.yml
wget https://raw.githubusercontent.com/xinnan-tech/xiaozhi-esp32-server/refs/heads/main/main/xiaozhi-server/config_from_api.yaml
mv data/.config.yaml data/.config.yaml.bk
mv config_from_api.yaml data/.config.yaml

Ahora, intenta iniciar el contenedor para el servicio backend completo de Xiaozhi:

docker compose -f docker-compose_all.yml up -d

Una vez completado, ejecuta el siguiente comando para ver la información de registro.

docker logs -f xiaozhi-esp32-server-web

Cuando veas la salida del log, significa que tu consola de control se ha iniciado exitosamente.

2025-xx-xx 22:11:12.445 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure - Init DruidDataSource
2025-xx-xx 21:28:53.873 [main] INFO xiaozhi.AdminApplication - Started AdminApplication in 16.057 seconds (process running for 17.941)
http://localhost:8002/xiaozhi/doc.html

Ahora, puedes visitar http://localhost:8002 para iniciar sesión en la consola de control y registrar el primer usuario. El primer usuario será el superadministrador; los usuarios regulares posteriores solo pueden ser creados por el superadministrador.

Resolver conflictos de puertos del servicio Docker

El servicio backend de Xiaozhi utiliza varios puertos de red por defecto (por ejemplo, el servicio WebSocket mapea el puerto 8000 de la máquina host al puerto 8000 del contenedor por defecto). Si estos puertos ya están siendo utilizados por otros programas en tu computadora, el comando docker compose up -d puede fallar con un error de conflicto de puertos.

En este caso, necesitas editar el archivo docker-compose_all.yml ubicado en la carpeta xiaozhi-server.

Encuentra las secciones ports: para ambos servicios xiaozhi-esp32-server y xiaozhi-esp32-server-web, por ejemplo:

xiaozhi-esp32-server:
ports:
- "8088:8000" # The left is the host port, the right is the container port
xiaozhi-esp32-server-web:
ports:
- "8002:8002"
  • Si el puerto 8000 entra en conflicto, puedes cambiarlo a otro puerto no utilizado, como 8088, por lo que la configuración se convierte en - "8088:8000". Guarda el archivo después de hacer el cambio y ejecuta docker compose up -d nuevamente.
  • Nota: Si cambias el puerto del host aquí (por ejemplo, de 8000 a 8088), entonces debes usar el número de puerto nuevo correspondiente al configurar /data.config.yaml y el SenseCAP Watcher.

Paso 1: Gestión de Parámetros

Después de iniciar sesión con la cuenta de superadministrador, navega a "Gestión de Parámetros" en el menú superior de la consola de control. Encuentra el primer elemento en la lista, que tiene el código de parámetro server.secret, y copia su "Valor de Parámetro".

Modifica el archivo .config.yaml en el directorio data bajo xiaozhi-server. Encuentra el elemento de configuración manager-api y cambia el valor secret al valor de parámetro que acabas de copiar. Al mismo tiempo, cambia la URL a http://xiaozhi-esp32-server-web:8002/xiaozhi.

manager-api:
url: http://xiaozhi-esp32-server-web:8002/xiaozhi
secret: 12345678-xxxx-xxxx-xxxx-123456789000 # Please replace this with your server.secret value

Paso 2: Configurar la Comunicación Entre Contenedores

Dado que Dify y el servicio backend de Xiaozhi se inician por separado a través de Docker, pueden estar en diferentes "redes virtuales" por defecto y no pueden comunicarse directamente. Necesitamos conectar el contenedor del servicio API de Dify a la red del servicio de Xiaozhi.

docker network connect xiaozhi-server_default docker-api-1

Después de este comando, el servicio Xiaozhi puede acceder al servicio de API de Dify en la dirección http://dify-api-1:5001/v1.

¿Por qué no usar host.docker.internal?

Podrías considerar usar host.docker.internal (un nombre DNS especial para acceder al host desde dentro de un contenedor de Docker) como solución de conexión. Sin embargo, ten en cuenta que si el servicio docker-api-1 (el contenedor de API de Dify) no mapea su puerto al host, o si el servicio en sí no escucha directamente en la interfaz de red del host, el contenedor xiaozhi-server no podrá acceder exitosamente a docker-api-1 a través de host.docker.internal:5001. Por lo tanto, asegurar que ambos contenedores estén en la misma red de Docker y se comuniquen a través de nombres de servicio es el método de configuración más recomendado y confiable, especialmente cuando el servicio docker-api-1 opera principalmente dentro de la red del contenedor.

Paso 3: Reiniciar xiaozhi-esp32-server

Después de configurar la información anterior, necesitas reiniciar el servicio backend de Xiaozhi para que los cambios surtan efecto. Esto se debe a que el proceso de instalación utiliza el server.secret para conectarse al servicio.

docker restart xiaozhi-esp32-server

Verificar los registros del servicio backend de Xiaozhi (Opcional):

Si deseas confirmar que el servicio Xiaozhi se ha iniciado y está funcionando correctamente, puedes ejecutar el siguiente comando para ver los registros en tiempo real:

docker logs -f xiaozhi-esp32-server

(xiaozhi-esp32-server es el nombre predeterminado del contenedor de servicio. Presiona Ctrl+C para salir de la vista de registros.)

Si ves registros similares a los siguientes, indica que el servidor se ha iniciado exitosamente.

25-02-23 12:01:09[core.websocket_server] - INFO - Websocket address is      ws://xxx.xx.xx.xx:8000/xiaozhi/v1/
25-02-23 12:01:09[core.websocket_server] - INFO - =======The address above is a websocket protocol address, please do not access it with a browser=======
25-02-23 12:01:09[core.websocket_server] - INFO - To test the websocket, please open test_page.html in the test directory with Google Chrome
25-02-23 12:01:09[core.websocket_server] - INFO - =======================================================

Asumiendo que la dirección IP de tu computadora es 192.168.101.109, las interfaces OTA y WebSocket de tu servicio backend de Xiaozhi ahora deberían ser:

Interfaz OTA:

http://192.168.101.109:8002/xiaozhi/ota/

Interfaz WebSocket:

ws://192.168.101.109:8000/xiaozhi/v1/

Recuerda reemplazar 192.168.101.109 con la dirección IP donde se está ejecutando tu servicio Xiaozhi.

Paso 4: Configurar el Servicio para Conectarse a Dify

Necesitamos indicar al servicio backend de Xiaozhi cómo encontrar y usar la aplicación de IA que creamos en Dify. Esto implica enrutar todas las solicitudes LLM a Dify modificando la configuración del modelo de lenguaje grande.

Inicia sesión nuevamente en la consola de control del servicio backend de Xiaozhi. En el menú superior, encuentra "Configuración de Modelo", luego haz clic en "Modelos de Lenguaje Grande" en la barra lateral izquierda. Encuentra la primera entrada, "Dify", y haz clic en el botón modificar. En el diálogo emergente, completa la Clave API de la aplicación que creaste en Dify. También, cambia la URL Base a http://dify-api-1:5001/v1.

[!tip] También puedes crear múltiples aplicaciones Dify y luego configurar múltiples modelos de lenguaje grande Dify en la consola de control.

Paso 5: Agregar Agente

Haz clic en "Agentes" en el menú superior, luego haz clic en "Agregar Agente". Ingresa cualquier nombre, por ejemplo, Dify_Agent.

Para el Dify_Agent recién agregado, haz clic en "Configurar Rol" para ingresar a la configuración de rol. Luego, en la barra lateral derecha, cambia el "Modelo de Lenguaje Grande (LLM)" a "Dify" (la conexión Dify que configuraste anteriormente). Modifica otras funciones según sea necesario y haz clic en "Guardar Configuración".

Usaremos esto en la siguiente sección al configurar el asistente Watcher.

Ⅱ. Configurar SenseCAP Watcher

Ahora, necesitamos configurar el dispositivo SenseCAP Watcher, para que sepa dónde conectarse al servicio backend de Xiaozhi que acabamos de configurar.

Nota

Esta guía usa la versión 1.6.2 del Xiaozhi AI Chatbot para el SenseCAP Watcher. Si estás usando una versión diferente, es posible que necesites ajustar la configuración en consecuencia.

Modificar la Dirección OTA

Enciende el SenseCAP Watcher y conéctate a su red WiFi desde cualquier dispositivo.

Después de conectarte exitosamente, visita 192.168.4.1 para configurar la conexión WiFi y la dirección OTA.

La dirección OTA debe ser:

http://<IP_Address>:<Port_Number>/xiaozhi/ota/
  • <IP_Address>: Reemplaza esto con la dirección IP de la red local de la computadora que ejecuta el servicio backend de Xiaozhi (por ejemplo, 192.168.101.109).
  • <Port_Number>: Reemplaza esto con el número de puerto OTA expuesto por el servicio backend de Xiaozhi. Si no modificaste el archivo docker-compose.yaml para xiaozhi-server anteriormente, esto será 8002. Si lo cambiaste (por ejemplo, a 8088), debes usar tu número de puerto modificado aquí.

Por ejemplo:

http://192.168.101.109:8002/xiaozhi/ota/

Después de completar la configuración y confirmar, el dispositivo se reiniciará automáticamente e intentará conectarse al servicio backend de Xiaozhi.

Una vez que se conecte exitosamente al servicio OTA, el dispositivo Watcher anunciará un código de verificación.

Luego, en la consola de control, bajo el Dify_Agent que creaste, haz clic en "Gestión de Dispositivos". Haz clic en "Agregar Nuevo", ingresa el código de verificación anunciado por el dispositivo y haz clic en "Guardar".

Después de completar la configuración como se describe arriba, el Watcher podrá conectarse al servicio backend de Xiaozhi.

🎉 En este punto, toda la instalación de software y configuración básica de hardware están completas! A continuación, nos enfocaremos en "orquestar" nuestra aplicación de IA en la plataforma Dify, permitiéndole entender y responder a nuestros comandos de control de hogar inteligente.

Ⅲ. Orquestación de Aplicación Dify

Regresemos a la plataforma Dify y configuremos la aplicación Agent que creamos anteriormente para permitirle comunicarse con Home Assistant y entender nuestros comandos.

Ⅰ. Agregar la Herramienta MCP

Para permitir que Dify controle dispositivos en Home Assistant, necesitamos agregarle una "Herramienta". Esta herramienta está basada en el MCP (Meta Control Protocol).

En la barra de navegación superior de la página de la aplicación Dify, encuentra la opción "Tools", busca "MCP SSE" y descarga el plugin correspondiente.

Configurar la Herramienta MCP para Conectar a HA

Después de la instalación, haz clic en esta herramienta nuevamente. Te pedirá que proporciones información de configuración del servicio MCP para que Dify pueda comunicarse con él vía MCP. Siguiendo la plantilla y la documentación de MCP Server - Home Assistant, típicamente necesitarás ingresar una configuración en formato JSON similar a la siguiente:

{
"Home Assistant": {
"url": "http://your_ha_ip:8123/mcp_server/sse",
"headers": {
"Authorization": "Bearer your_ha_token"
},
"timeout": 10,
"sse_read_timeout": 60
}
}

Obtener la dirección IP de Home Assistant (your_ha_ip)
Dirección IP de HA

Si tu Home Assistant se está ejecutando en http://homeassistant.local:8123, puedes intentar hacer ping a homeassistant.local desde la línea de comandos de tu computadora para obtener su dirección IP.

También puedes encontrar la dirección IP de homeassistant.local en la configuración de la interfaz de red IPv4 en http://homeassistant.local:8123/config/network.

Alternativamente, inicia sesión en tu Home Assistant; generalmente puedes encontrar su dirección IPv4 en "Configuración" > "Sistema" > "Red".

Asumiendo que tu dirección actual de Home Assistant es 192.168.101.160, entonces tu URL SSE será:

http://192.168.101.160:8123/mcp_server/sse
Obtener el Token de Acceso de Larga Duración de Home Assistant (your_ha_token)

Inicia sesión en tu Home Assistant.

  • Haz clic en tu nombre de usuario en la esquina inferior izquierda para ir a tu página de "Perfil", o ve directamente a http://homeassistant.local:8123/profile/security.
  • Desplázate hasta la parte inferior de la página para encontrar la sección "Long-Lived Access Tokens".
  • Haz clic en "Create Token", dale un nombre (por ejemplo, Dify_MCP), y luego haz clic en "OK".
Completar la Configuración

Asumiendo que la IP de tu Home Assistant es 192.168.101.160 y el token que obtuviste es eyJhbGciOi...G4s6IQw (el token largo real está abreviado aquí), entonces la configuración JSON completa debería ser:

{
"Home Assistant": {
"url": "http://192.168.101.160:8123/mcp_server/sse",
"headers": {
"Authorization": "Bearer eyJhbGciOi...G4s6IQw"
},
"timeout": 10,
"sse_read_timeout": 60
}
}

Copia esta configuración JSON completa y pégala en el cuadro de entrada de configuración de autorización para la herramienta MCP en Dify (reemplazando el contenido de la plantilla original en el cuadro de entrada). Luego, haz clic en "Guardar" o "Aceptar". Si la configuración es correcta, deberías ver una notificación indicando autorización exitosa o que la herramienta está disponible.

Esto te permitirá llamar a la herramienta MCP en la aplicación que creaste.

Ⅱ. Escribiendo el Prompt

Un prompt es la instrucción que le das al Agente de IA, diciéndole qué papel desempeñar, cómo trabajar, y cuáles son sus capacidades y limitaciones.

  • En el área de configuración "Orquestar" o "Prompt" de tu aplicación Agente de Dify, verás un cuadro de texto donde puedes ingresar tu prompt.
  • Para un escenario de hogar inteligente, puedes diseñar un prompt simple que le diga a la IA que puede llamar a la herramienta Home Assistant para controlar dispositivos o consultar su estado.

Un ejemplo de prompt simple:

# Role
You are a helpful smart home assistant.

# Workflow
1. When the user makes a request to control devices in the home (like turning lights on/off, adjusting the air conditioner) or to query device status, you must use the tool named "Home Assistant" to accomplish it.
2. First, analyze the user's intent to determine which device to control and what action to perform.
3. Then, generate the command statement to call the "Home Assistant" tool.
4. If the user is just making small talk, or asks a question unrelated to smart home control, please converse with the user in a friendly manner.

# Requirements
- Your answers should be as concise and clear as possible.
- You can only control devices connected via the "Home-Assistant" tool.
- Clearly inform the user whether the operation was successful or provide the information queried.

tip

El prompt anterior es un marco muy básico. Puedes modificar y expandir este prompt basándote en tus dispositivos reales de Home Assistant y las funciones que quieras implementar para adaptarlo mejor a tus necesidades.

Por ejemplo, puedes añadir nombres de dispositivos más específicos, áreas de habitaciones, o incluso establecer una "personalidad" específica para la IA.

La función de orquestación de prompts de Dify es muy poderosa, soportando características avanzadas como variables, contexto y bases de conocimiento. Puedes consultar la documentación oficial de Dify y aprender sobre Ingeniería de Prompts para construir aplicaciones de IA más poderosas.

Después de escribir y guardar tu prompt, ¡tu aplicación de hogar inteligente con IA está esencialmente configurada!

Probándolo

Ahora, toma tu SenseCAP Watcher, intenta hablarle, y ve si tu asistente de hogar inteligente con IA puede responder correctamente a tus comandos y controlar tus dispositivos inteligentes a través de Home Assistant!

Por ejemplo, puedes intentar decir: "Enciende la luz de la sala," o "¿Cuál es la temperatura en el dormitorio ahora mismo?" (Esto asume que ya has configurado estos dispositivos en Home Assistant y que tu prompt y Agente de Dify pueden entender y procesar correctamente estos comandos).

Referencias

Preguntas y Respuestas

¿Cómo actualizar xiaozhi-esp32-server?

Ve a la carpeta donde están almacenados los archivos de Docker del backend del servidor Xiaozhi.

docker compose -f docker-compose_all.yml down
docker rmi ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server:server_latest
docker rmi ghcr.nju.edu.cn/xinnan-tech/xiaozhi-esp32-server:web_latest

Luego, actualiza el archivo compose (si ha sido actualizado) y descarga los nuevos archivos de imagen.

Opcional: Actualiza los archivos de configuración. Para actualizaciones de versiones principales, los archivos de configuración pueden diferir. Copia el contenido a continuación como tu script de actualización:

#!/bin/bash

# Generic function to update a file
update_file() {
local FILE="$1"
local URL="$2"
local BACKUP_SUFFIX=$(date +%Y%m%d%H%M%S).bk
local TEMP_FILE="/tmp/$(basename "$FILE")"

# Ensure the target directory exists
local DIR=$(dirname "$FILE")
[ ! -d "$DIR" ] && mkdir -p "$DIR"

# If the file doesn't exist, download it directly
if [ ! -f "$FILE" ]; then
wget -O "$FILE" "$URL" && echo "$FILE does not exist, downloaded." && return
fi

# Download to a temporary file and compare differences
wget -O "$TEMP_FILE" "$URL" && diff "$FILE" "$TEMP_FILE" >/dev/null && {
echo "$FILE has no differences, no update needed.";
rm "$TEMP_FILE";
return;
}
echo "$FILE has differences:"
diff "$FILE" "$TEMP_FILE"

# Prompt the user whether to overwrite
echo -n "Overwrite the current file? (y/n): "
read CONFIRM
if [ "$CONFIRM" != "y" ]; then
echo "Update for $FILE canceled."
rm "$TEMP_FILE"
return
fi

# Back up the old file and replace it
cp "$FILE" "$FILE.$BACKUP_SUFFIX" && mv "$TEMP_FILE" "$FILE" && echo "$FILE has been updated and backed up as $FILE.$BACKUP_SUFFIX"
}

# Update data/.config.yaml
CONFIG_FILE="data/.config.yaml"
CONFIG_URL="https://raw.githubusercontent.com/xinnan-tech/xiaozhi-esp32-server/refs/heads/main/main/xiaozhi-server/config_from_api.yaml"
update_file "$CONFIG_FILE" "$CONFIG_URL"

# Update docker-compose_all.yml
DOCKER_COMPOSE_FILE="docker-compose_all.yml"
DOCKER_COMPOSE_URL="https://raw.githubusercontent.com/xinnan-tech/xiaozhi-esp32-server/refs/heads/main/main/xiaozhi-server/docker-compose_all.yml"
update_file "$DOCKER_COMPOSE_FILE" "$DOCKER_COMPOSE_URL"

echo "All file updates are complete!"
docker compose -f docker-compose_all.yml up -d
Loading Comments...