Sistema de domótica Alexa con Arduino IoT y ESP8266


En este post vamos a ver un sistema de automatización del hogar Alexa con la nube Arduino IoT.  Esta vez usaremos, una vez más, el famoso módulo ESP8266 NodeMCU, el cual es algo más económico que el ESP32, y es mas que suficiente para esta aplicación que únicamente trata de operar 4 electrodomésticos, aunque pueden modificarse según sus necesidades, todo ello a través del panel de Arduino IoT Cloud, Alexa e interruptores mecánicos. 

esp8266 por arriba

La placa AZDelivery NodeMCU Amica V2 es la clásica placa de desarrollo ESP caracterizándose por su sencillo uso (se maneja fácilmente desde el IDE de Arduino) contando con un potente procesador ESP8266-12F de Espressif y una WLAN integrada, por lo que este controlador ofrece una sencilla introducción al desarrollo del IoT. Hay disponibles varias versiones de firmware del fabricante, que se pueden flashear cómodamente a través del puerto micro-USB.A diferencia de modelos anteriores, si usa el chipset CP2102 modificado (por ejemplo la azdelivery) se permite una mayor velocidad de transferencia. Además, este modulo cuenta con una relativa gran memoria y también con una reserva de potencia del procesador.

Este es el resumen de las características mas significativos:

Voltaje de alimentación (USB)5V DC
Voltaje de Entrada/Salida3.3V DC
Frecuencia de reloj80MHz / 160MHz
Instrucción RAM32kB
Datos RAM96kB
UART2
Pines digitales GPIO17 (configurable como PWM a 3,3V)
Pin analógico ADC1 (el rango de voltaje es: 0 – 1V)
Memoria flash externa4MB

Es interesante destacar que gracias a la interactividad con la nube de Amazon, también podemos operar este sistema controlando los relés desde la app de Alexa desde cualquier lugar del mundo siempre que haya conectividad a Internet (aun así, también se ha previsto para esos casos, operar esos electrodomésticos con interruptores manuales).

En efecto en este diseño , puede controlar los aparatos con pulsadores de modo que si no tiene WiFi o conexión a Internet, puede controlarlo manualmente usando este método. Estas son resumidamente algunas características de este circuito:

  • Puede encender/apagar interruptores y enchufes inteligentes usando su voz.
  • Aumente o disminuya el brillo de las luces de su habitación.
  • También puede cambiar el color de las luces.
  • Puede comprobar la temperatura ambiente mediante sensores.
  • Vea la actividad de movimiento de los sensores en su habitación.

El circuito

El circuito propuesto es bastante sencillo utilizando los pines GPIO digitales D1, D2, D5 y D6 para controlar el módulo de relé de 4 canales. El SD3, D3, D7 y RX están conectados con los botones para controlar este proyecto manualmente. Obviamente el modulo de relés se puede realizar por ejemplo con una placa de puntos siguiendo el esquema de mas bajo o bien comprarlo ya montado.( por unos 11€)

modulo de reles

Los relés los conectamos al GPiO4, GPIO 5, GPIO 14 y GPIO 12 . En caso de realizar nosotros mismos el circuito usaremos cuatro transistores típicos de pequeña señal BC547B con sus correspondientes resistencias de base y diodos de protección en las bobinas de los relés. Además el circuito de los relés se puede complementar con sendos leds indicadores de estado, así como de leds de presencia de energía con sus respectivas resistencias limitadoras de 100 ohmios.

La función INPUT_PULLUP en Arduino IDE se usa aquí en lugar de usar resistencias pull-up con cada interruptor. Desde el código fuente, cuando los pines de control de los módulos de relé reciben una señal BAJA, el relé se encenderá y para la señal ALTA se apagará.

Por último el suministro de alimentación para el circuito es de de 5V 2Amp bien mediante el propio conector micro-usb del ESP32 o bien mediante alimentación común.

Este es el simple diagrama de circuito:

Sistema de domótica 4 reles , esp8266 con Alexa

Este el listado de componentes:

  • ESP8266 NodeMCU
  • Relé de 5V (x4)
  • Transistores BC547 (x4)
  • Diodo 1N4007 PN (x4)
  • LED verde (x4)
  • LED rojo (x4)
  • Resistencia 1K (x4)
  • Resistencia de 100 ohmios (x8)
  • Pulsador (x4)
  • Fuente de 5 V CC

Esta es la imagen del circuito completo donde el circuito completo se han montado sobre una PCB a medida:

Foto del montaje

Configuración y software

En resumen estos son los pasos para construir el sistema de automatización del hogar Alexa

  • Al principio, cree una cuenta en Arduino IoT Cloud.
  • Configure todo para Dashboard.
  • Configure Arduino IoT Cloud para ESP8266.
  • Programa NodeMCU con Arduino IDE.
  • Conexión de la aplicación IoT Cloud y Alexa.

A continuación veamos en mas detalle los pasos anteriormente enunciados:

1-Regístrese para obtener una cuenta gratuita de Arduino IoT Cloud

Para este proyecto de domótica, tenemos que configurar una cuenta gratuita de Arduino IoT Cloud. Gracias a esta configuración conecta ESP8266 para controlar dispositivos con Alexa de modo que crearemos una nube Arduino IoT. Estos son los pasos a seguir:

  1.  Al principio, debe hacer clic en el siguiente enlace
    https://create.arduino.cc/iot/things .
  2. Haga clic en Crear uno.
  3. Ingrese todos los detalles requeridos que quiere. Luego haga clic en Siguiente.
  4. En la página siguiente, requiere correo electrónico, nombre de usuario y contraseña para su
    cuenta Arduino IoT Cloud. Después de completar todos estos, debe aceptar todos los términos y condiciones.
  5. Ahora haga clic en el botón Registrarse.
  6. Luego revise su correo electrónico. El correo electrónico de verificación será enviado a su cuenta. Haga clic en el enlace del correo electrónico y verifíquelo.
  7. Luego regrese a Arduino IoT Cloud y actualice la página.
  8. Por último, haga clic en IoT Cloud.

2-Agregar un dispositivo

Estos son los pasos a seguir para agregar un dispositivo a la nube de Arduino:

  1. Haga clic en seleccionar dispositivo.
  2. Luego haga clic en configurar un dispositivo de terceros.
  3. Ahora seleccione el dispositivo (ESP8266) y seleccione el modelo (NodeMCU 1.0).
  4. Allí puede ver todas las placas compatibles con Arduino Cloud en el menú.
  5. Haga clic en Continuar.
  6. Ingrese un nombre para su dispositivo y haga clic en Siguiente.
  7. Después de eso, obtiene la identificación y la clave secreta de su dispositivo. Puede guardar los detalles haciendo clic en descargar el PDF.
  8. Por último, haga clic en Continuar y se agregará su dispositivo.

3- Agregar variables en proyectos Arduino IoT Cloud

Para controlar sensores o relés, debe obtener datos de estos. Estos datos pueden ser capturados por variables. En este proyecto, necesitamos cuatro variables. Para un plan gratuito, puede agregar hasta cinco variables. Estos son los pasos a seguir:

  1. Haga clic en Agregar variables.
  2. Asigne un nombre a la variable y seleccione el tipo como interruptor compatible con Alexa.
  3. Haga clic en Permiso variable como Lectura y escritura y actualice la política como Al cambiar
  4. Haga clic en Agregar variables.
  5. En este proceso puede agregar todo tipo de Variables.

4-Creación de un panel web para Arduino IoT Cloud

Estos son los pasos a seguir para crear un panel web en la nube de Arduino :

  1. Al principio, haga clic en Tablero y luego en ‘Crear tablero‘.
  2. Haga clic en el botón editar. Luego haga clic en Agregar y allí puede seleccionar el widget de cambio.
  3. Luego asigne un nombre al interruptor y haga clic en el botón Vincular variable que está visible a la derecha.
  4. Como ya creamos una variable en el paso anterior, enlaze este con el widget.
  5. Ahora haga clic en Vincular variable. Luego haga clic en Listo.
  6. Ahora puede agregar todos los widgets necesarios. En este proyecto, necesitamos cuatro widgets Switch. Después de agregar esto, haga clic en Cosas para salir del tablero.

5-Instalar boceto para Arduino IoT Cloud

Después de agregar cualquier variable en esto, se guardará automáticamente en la pestaña de boceto. Si desea editar esto pulse en más donde puede abrir un editor completo. Desde allí puede descargar el boceto del programa para el microcontrolador. Para este proyecto, el boceto descargado se abre en Arduino IDE.

Instalación de bibliotecas

Estos son los pasos a seguir en caso desde que no tenga instaladas las bibliotecas del ESP8266:

  1. En este paso, vamos a instalar todas las bibliotecas y otras dependencias. En este proyecto, necesitamos una biblioteca para ESP8266.
  2. Al principio, ve al botón de boceto.
  3. Luego haga clic en incluir bibliotecas.
  4. Haga clic en administrar bibliotecas en Arduino IDE.
  5. Allí pedirá instalar todas las dependencias. Haga clic en Instalar todo.

Actualizar el boceto del proyecto

Para actualizar Sketch, abra el archivo .ino en el IDE de Arduino. Allí puede ingresar la ID de la cosa, la ID del dispositivo, las credenciales de WiFi y la clave secreta.

Puede copiar el Thing ID desde la esquina inferior derecha de esta ventana. Ahora pegue la ID de la cosa y la ID del dispositivo en el archivo thingProperties.h en el IDE de Arduino. Luego pegue las credenciales de WiFi y la clave secreta en el archivo arduino_secrets.h .
Ahora cargue el código para ESP8266 en Arduino IDE.

Cómo usar el control remoto en la nube de Arduino

Primero, instale ‘Arduino IoT Cloud Remote‘ desde Google Play Store. Luego inicie sesión en la aplicación con el correo electrónico que usa en la cuenta de Arduino IoT Cloud. Introduzca el nombre de la cosa para abrir el panel.

Programar ESP8266 NodeMCU

  1. Al principio, actualice las preferencias -> URL del administrador de tableros adicionales: https://dl.espressif.com/dl/package_esp32_index.json y http://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. Luego instale la placa ESP8266 desde el administrador de la placa.
  3. Luego instale todas las bibliotecas y dependencias requeridas.

Código para NodeMCU

Cuando cargue el código a ESP8266, puede conectar la aplicación Alexa con él. Los pasos para conectar la cuenta de Arduino IoT Cloud con la aplicación Amazon Alexa los veremos mas abajo.

#include "thingProperties.h"
 
// define the GPIO connected pins with relays and switches
#define RelayPin1 5  //D1
#define RelayPin2 4  //D2
#define RelayPin3 14 //D5
#define RelayPin4 12 //D6
 
#define SwitchPin1 10  //SD3
#define SwitchPin2 0   //D3 
#define SwitchPin3 13  //D7
#define SwitchPin4 3   //RX
 
#define wifiLed   16   //D0
 
int toggleState_1 = 0; //Define integer to remember the toggle state for relay 1
int toggleState_2 = 0; //Define integer to remember the toggle state for relay 2
int toggleState_3 = 0; //Define integer to remember the toggle state for relay 3
int toggleState_4 = 0; //Define integer to remember the toggle state for relay 4
 
void relayOnOff(int relay) {
 
  switch (relay) {
    case 1:
      if (toggleState_1 == 0) {
        digitalWrite(RelayPin1, LOW); // Turn on relay 1
        toggleState_1 = 1;
        Serial.println("Device1 ON");
      }
      else {
        digitalWrite(RelayPin1, HIGH); // Turn off relay 1
        toggleState_1 = 0;
        Serial.println("Device1 OFF");
      }
      delay(100);
      break;
    case 2:
      if (toggleState_2 == 0) {
        digitalWrite(RelayPin2, LOW); // Turn on relay 2
        toggleState_2 = 1;
        Serial.println("Device2 ON");
      }
      else {
        digitalWrite(RelayPin2, HIGH); // Turn off relay 2
        toggleState_2 = 0;
        Serial.println("Device2 OFF");
      }
      delay(100);
      break;
    case 3:
      if (toggleState_3 == 0) {
        digitalWrite(RelayPin3, LOW); // Turn on relay 3
        toggleState_3 = 1;
        Serial.println("Device3 ON");
      } else {
        digitalWrite(RelayPin3, HIGH); // Turn off relay 3
        toggleState_3 = 0;
        Serial.println("Device3 OFF");
      }
      delay(100);
      break;
    case 4:
      if (toggleState_4 == 0) {
        digitalWrite(RelayPin4, LOW); // Turn on relay 4
        toggleState_4 = 1;
        Serial.println("Device4 ON");
      }
      else {
        digitalWrite(RelayPin4, HIGH); // Turn off relay 4
        toggleState_4 = 0;
        Serial.println("Device4 OFF");
      }
      delay(100);
      break;
    default : break;
  }
}
 
void manual_control() {
  //Manual Switch Control
  if (digitalRead(SwitchPin1) == LOW) {
    delay(200);
    relayOnOff(1);
  }
  else if (digitalRead(SwitchPin2) == LOW) {
    delay(200);
    relayOnOff(2);
  }
  else if (digitalRead(SwitchPin3) == LOW) {
    delay(200);
    relayOnOff(3);
  }
  else if (digitalRead(SwitchPin4) == LOW) {
    delay(200);
    relayOnOff(4);
  }
}
 
void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
 
  delay(1500);
 
  // Define thingProperties.h
  initProperties();
 
  // Connect to Arduino IoT Cloud
  
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
 
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
 
  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  pinMode(RelayPin3, OUTPUT);
  pinMode(RelayPin4, OUTPUT);
 
  pinMode(wifiLed, OUTPUT);
 
  pinMode(SwitchPin1, INPUT_PULLUP);
  pinMode(SwitchPin2, INPUT_PULLUP);
  pinMode(SwitchPin3, INPUT_PULLUP);
  pinMode(SwitchPin4, INPUT_PULLUP);
 
  //During Starting all Relays should TURN OFF
  digitalWrite(RelayPin1, HIGH);
  digitalWrite(RelayPin2, HIGH);
  digitalWrite(RelayPin3, HIGH);
  digitalWrite(RelayPin4, HIGH);
 
  digitalWrite(wifiLed, HIGH);  //Turn OFF WiFi LED
}
 
void loop() {
  ArduinoCloud.update();
  
  manual_control(); //Control relays manually
 
  if (WiFi.status() != WL_CONNECTED)
  {
    digitalWrite(wifiLed, HIGH); //Turn OFF WiFi LED
  }
  else{
    digitalWrite(wifiLed, LOW); //Turn ON WiFi LED
  }
}
 
void onSwitch1Change() {
  if (switch1 == 1)
  {
    digitalWrite(RelayPin1, LOW);
    Serial.println("Device1 ON");
    toggleState_1 = 1;
  }
  else
  {
    digitalWrite(RelayPin1, HIGH);
    Serial.println("Device1 OFF");
    toggleState_1 = 0;
  }
}
 
void onSwitch2Change() {
  if (switch2 == 1)
  {
    digitalWrite(RelayPin2, LOW);
    Serial.println("Device2 ON");
    toggleState_2 = 1;
  }
  else
  {
    digitalWrite(RelayPin2, HIGH);
    Serial.println("Device2 OFF");
    toggleState_2 = 0;
  }
}
 
void onSwitch3Change() {
  if (switch3 == 1)
  {
    digitalWrite(RelayPin3, LOW);
    Serial.println("Device2 ON");
    toggleState_3 = 1;
  }
  else
  {
    digitalWrite(RelayPin3, HIGH);
    Serial.println("Device3 OFF");
    toggleState_3 = 0;
  }
}
 
void onSwitch4Change() {
  if (switch4 == 1)
  {
    digitalWrite(RelayPin4, LOW);
    Serial.println("Device4 ON");
    toggleState_4 = 1;
  }
  else
  {
    digitalWrite(RelayPin4, HIGH);
    Serial.println("Device4 OFF");
    toggleState_4 = 0;
  }
}

Este código de Arduino está diseñado para controlar cuatro relés y cuatro interruptores manuales, además de conectarse a la nube de Arduino IoT. Aquí tienes una explicación detallada de lo que hace cada parte del código:

  1. Definición de Pines:
    • Se definen los pines GPIO a los que están conectados los relés y los interruptores manuales.
    • También se define un pin para un LED que indica el estado de la conexión WiFi.
  2. Variables de Estado:
    • Se crean variables para recordar el estado de cada relé (encendido o apagado).
  3. Función relayOnOff:
    • Esta función controla el encendido y apagado de los relés. Dependiendo del estado actual del relé, lo cambia y actualiza la variable de estado correspondiente.
  4. Función manual_control:
    • Esta función permite el control manual de los relés mediante los interruptores. Si se detecta que un interruptor está presionado, se llama a la función relayOnOff para el relé correspondiente.
  5. Función setup:
    • Inicializa la comunicación serial y espera a que el puerto se abra.
    • Inicializa las propiedades de la nube y conecta el dispositivo a la nube de Arduino IoT.
    • Configura los pines de los relés y el LED de WiFi como salidas, y los pines de los interruptores como entradas con resistencia pull-up.
    • Apaga todos los relés y el LED de WiFi al inicio.
  6. Función loop:
    • Actualiza la conexión con la nube de Arduino.
    • Llama a la función manual_control para permitir el control manual de los relés.
    • Controla el estado del LED de WiFi dependiendo de la conexión.
  7. Funciones de Cambio de Estado (onSwitch1Change, onSwitch2Change, etc.):
    • Estas funciones se llaman cuando hay un cambio en el estado de los interruptores en la nube. Actualizan el estado de los relés y las variables de estado correspondientes.

Este código pues permite controlar los relés tanto manualmente mediante interruptores físicos como remotamente a través de la nube de Arduino IoT.

6-Conectar la aplicación Amazon Alexa con ESP8266

Para conectar nuestro circuito con la aplicación Alexa, en la app móvil Amazon Alexa realizaremos los siguientes pasos:

  1. Al principio, haga clic en Más en la aplicación Amazon Alexa.
  2. Luego seleccione Habilidades y juegos.
  3. En la opción de búsqueda, puede encontrar Arduino.
  4. Haga clic en Habilitar para usar.

Ahora necesitemos agregar un dispositivo en la aplicación Alexa

  1. En la aplicación Alexa, inicie sesión con el correo electrónico y la contraseña que utilizó para iniciar sesión en la cuenta Arduino IoT Cloud.
  2. Luego ciérralo.
  3. Haga clic en Descubrir dispositivos. El nombre de su dispositivo es visible allí en unos segundos.
  4. Luego haga clic en su dispositivo. A continuación, seleccione todos los interruptores.
  5. Si ESP8266 está conectado con su WiFi, puede controlar todos los dispositivos desde la aplicación Alexa.
  6. Ahora solo tiene que decir «Alexa, enciende la luz». La luz esta encendida. Con este comando de voz, puede controlar los electrodomésticos con su voz.

Fuente https://circuitdiagrams.in/alexa-home-automation-system/

Como instalar Google Assistant en Raspberry Pi


Google Assistant es un asistente virtual desarrollado por Google. Es una herramienta de inteligencia artificial que puede ayudar a los usuarios a realizar tareas como hacer una búsqueda en línea, establecer recordatorios, reproducir música, controlar dispositivos domésticos inteligentes y más. El asistente está disponible en dispositivos como teléfonos inteligentes, altavoces inteligentes y televisores conectados.

Gracias a que se  liberó el SDK del Google Assistant, gracias a la biblioteca auxiliar de Google para Python , tenemos una solución llave en mano para todo aquel que quiera integrar rápidamente el asistente de Google a un proyecto, de modo que  ya  podemos usar Google Home en  Español entre otros nuevos idiomas  con cualquier hw que los permita de modo que ahora es posible montar nuestro propio Google Assistant en una Raspberry Pi, en pocos minutos, con un micrófono y un altavoz, tendrá a una Raspberry Pi lista para atender sus peticiones!

En primer lugar necesitaremos  configurar el hardware y configurar el acceso a la red:

  1. Conecte el micrófono USB y el altavoz USB  a la Raspberry Pi.
  2. Inserte la tarjeta SD en el Pi de Raspberry (con NOOBS o Raspbian con el escritorio cargado).
  3. Conecte un teclado USB, ratón USB y un HDMI monitor a su Raspberry Pi. Si no tiene estos, siempre puedes conectar con el Pi remotamente.
  4. Conecte un cable ethernet o conectese a una red Wi-Fi.

Compruebe que la fecha y hora están ajustados correctamente en el dispositivo usando el comando.

date

Después de configurar el acceso, puede conectarse a la Raspberry Pi a través de SSH (opcional).

Conectar a la Raspberry Pi via SSH (opcional)

Para ejecutar comandos en la Raspberry Pi, necesitará abrir la terminal en el dispositivo o utilizar una conexión SSH. Si no tienes un monitor, teclado y ratón conectado al Raspberry Pi, debe utilizar una conexión SSH desde tu máquina de desarrollo.Hacer seguro SSH está activado en la Raspberry Pi

ssh pi@raspberry-pi-ip-address

password: password-for-raspberry-pi

Respecto al micrófono usb

Dado el precio y el tamaño, se necesita  un micrófono funcional que sea capaz de captar voces cercanas o grandes sonidos pero   sin gastarse una fortuna  requiriéndose  un micrófono  usb  que sea  reconocido y funcione con Raspbian en una Raspberry Pi3( por  ejemplo el modelo  RRunzfon de kinobo)

Este tipo de micrófonos no son de alta fidelidad de modo que cuando escuche las reproducciones está claro que hay mucha estática a menos que esté hablando directamente con el micrófono, pero para este proyecto  lo importante es que sea  capaz de funcionar para el reconocimiento de voz utilizando la compilación Alexa Raspberry Pi.

Es interesante instalar la activación “siempre encendida” para no tener que presionar un botón para activarla, y pero dadas  las características de este modesto micrófono  solo  funcionara   si está cerca de este

Dado el tamaño y el precio, esta es una de las maneras más fáciles de agregar un micrófono por menos de $ 10, pero si está esperando un audio de alta calidad, es mejor que busque otras opcion. Para aquellos que buscan un micrófono decente para uso diario, existen mejores opciones en cuanto a calidad de sonido. (lo que hace que este micrófono sea genial es lo pequeño y económico que es)

Para las personas que buscan probar Google Assistant  con  Raspberry Pi, este micrófonono funciona con RPI v1, pero sí funciona con RPI v3 de fábrica. Cuando lo conecta al puerto USB, se detecta automáticamente y puede verlo en la salida “arecord -l“.

Bajo el sistema operativo Linux, parece que el sonido grabado es un poco bajo. Es posible que necesite normalizar (aumentar la ganancia) en el sonido usando un programa como mp3gain, ffmpeg, sox, etc. o mejor aún aumentar la ganancia en el receptor usando pulseaudio. Si eleva el volumen a un nivel alto, obtendrá una gran cantidad de estática, que es de esperar.

microfono usb para Raspberry

Prueba de sonido

Usaremos una Raspberry Pi 3 con Raspbian instalado y actualizado, lo primero será verificar que el audio nos funciona bien, tanto el del micrófono como los altavoces por donde queremos sacar el sonido ,para ello editamos nuestro fichero de configuración de audio ‘~/.asound’ y especificamos el micrófono que estamos usando, en este caso un USB específico, pero también podríamos usar el micro de una webcam, así como el audio que me lo saque por la predeterminada

Antes de continuar pues  debemos configurar el sistema de audio en la Raspberry Pi.

Encontrar los dispositivos de grabación y reproducción.

 

Configurar un proyecto de desarrollo y una cuenta de valores

Configurar un proyecto de consola de acciones

Un proyecto de plataforma de la nube de Google, administrado por la consola de acciones, da su proyecto acceso a la API de Google Assistant. El proyecto seguimiento de uso de cuotas y le da indicadores valiosos para las peticiones de su hardware.

Para permitir el acceso a la API de Google Assistant, haga lo siguiente:

  1. Abra la consola de acciones. Ir a la consola de acciones
  2. Haga clic en Agregar/importar proyecto.
  3. Para crear un nuevo proyecto, escriba un nombre en el cuadro nombre del proyecto,NO OLVIDAR SELECCIONAR EL IDIOMA ESPAÑOL COMO IDIOMA POR DEFECTO  y haga clic en Crear proyecto.
  4. Si ya tienes un proyecto de plataforma de la nube de Google existente, puede seleccione ese proyecto e importarlo en su lugar.
  5. Si ha creado un nuevo proyecto, haga clic en el cuadro de registro del dispositivo en la parte inferior de la página. Si ha importado un proyecto previamente creado, esta casilla no aparecerá; Seleccione la ficha de registro del dispositivo (en Opciones avanzadas) en la barra de navegación izquierda. Mantener esta pestaña abierta. Se utilizará para registrar un modelo de dispositivo en un paso posterior.
  6. Habilitar la API Asistente de Google en el proyecto seleccionado (vea los Términos de servicio). Necesita hacer esto en la consola de la plataforma de nube. Habilitar la API Haga clic en Activar.
  7. Debe configurar el OAuth pantalla el consentimiento para su proyecto en la consola de la plataforma de nube. Tenga en cuenta que la mayoría de los campos en esta página es opcional.

Defina los controles de la actividad de su cuenta

Para utilizar al asistente de Google, deben compartir ciertos datos de actividad con Google. El Asistente de Google necesita estos datos para funcionar correctamente; Esto no es específico para el SDK.

Abra la Página de controles de la actividad de la cuenta de Google que desea utilizar con el asistente. Usted puede utilizar cualquier cuenta de Google, no es necesario que tu cuenta de desarrollador.

Asegurar la siguiente palanca interruptores activado (azul):

  • Actividad de App & Web
    • Además, asegúrese de seleccionar la casilla de verificación incluir cromo historia y actividad de sitios, aplicaciones y dispositivos que usan servicios de Google .
  • Información del dispositivo
  • Actividad Audio & voz

Registrar el modelo de dispositivo

Para el Asistente de Google responder a los comandos correspondientes para su dispositivo y en el contexto dado, el asistente necesita información acerca de su dispositivo en particular. Usted proporcione esta informacion, que incluye campos como tipo de dispositivo y el fabricante, como un modelo de dispositivo. Usted puede pensar de este modelo como una clase general de dispositivo – como una luz, altavoces o robot de juguete.

Esta información es accesible a la asistente de Google y se asocia con su proyecto de consola de acciones. Otros proyectos no tienen acceso a la información de su modelo y dispositivo.

Utilizar el registro de interfaz de usuario

Utilizar el registro de interfaz de usuario en la Consola de acciones para registrar un modelo de dispositivo.

Haga clic en el botón de Registro de modelo .

Device models tab

Crear modelo

  1. Rellene todos los campos para su dispositivo. Seleccione cualquier tipo de dispositivo, como la luz. Vea el dispositivo modelo JSON referencia para obtener más información en estos campos.
  2. Cuando haya terminado, haga clic en Modelo de registro.

Descargar credenciales

El archivo debe estar ubicado en el dispositivo. Este archivo contiene un ID de cliente y secreto del cliente, pero ningún token de acceso. Más tarde, se ejecuta una herramienta de autorización y hacer referencia a este archivo para autorizar la muestra auxiliar SDK de Google para realizar las consultas el Asistente de Google (consulte la documentación de OAuth 2.0 para más información). No cambiar el nombre de este archivo.client_secret_<client-id>.json

Descargar este archivo y transferirlo al dispositivo. Haga clic en siguiente.

Download credentials

Para la Raspberry Pi sólo

Asegúrese de que este archivo se encuentra en. Si desea cargar el archivo en el dispositivo, haga lo siguiente:/home/pi

  1. Abra una nueva ventana de terminal. Ejecute el comando siguiente en esta nueva terminal: Nota: No ejecute el siguiente comando en una sesión SSH conectado al dispositivo. Este comando transfiere el archivo JSON de un directorio en tu máquina de desarrollo para el dispositivo. Una sesión de SSH no puede acceder a sus directorios locales. scp ~/Downloads/client_secret_client-id.json pi@raspberry-pi-ip-address:/home/pi/ password: password-for-device
  2. Cierre esta ventana del terminal.

Especificar los rasgos

Más adelante, se especifica las capacidades diferentes compatible con su dispositivo en esta pantalla. Pero por ahora, haga clic en el botón SKIP .

Specify traits

Editar el modelo

Si usted necesita cambiar el modelo, haga clic en la fila correspondiente en la lista. Asegúrese de haga clic en Guardar después de las ediciones.

Model list

Si desea descargar el archivo de credenciales de nuevo, haga clic en las elipsis. Puede eliminar el modelo de este menú.

Edit menu

Formas alternativas de registro

También puede utilizar la herramienta de registro (incluido con las muestras de SDK Asistente de Google) o la API REST para registrar un modelo de dispositivo.

Debe ser un propietario o Editor de un determinado proyecto de consola de acciones a solicitar modelos. Agregar estas funciones a otros usuarios de la consola de la plataforma de nube, consulte la documentación de IAM.

 

Instalar el SDK y  el código

Siga estas instrucciones para instalar el SDK y el código en su proyecto. Ejecutar todos los comandos en esta página en un terminal en el dispositivo (ya sea directamente o a través una conexión SSH).

Configurar un nuevo entorno virtual de Python

Utilizar un entorno virtual de Python para aislar el SDK y sus dependencias de los paquetes de Python del sistema.Nota: Para la Raspberry Pi, ejecute los siguientes comandos desde el directorio /home/pi .

(Recomendado) Para Python 3:

sudo apt-get update sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found. python3 -m venv env env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate

Para Python 2.7:

sudo apt-get update sudo apt-get install python-dev python-virtualenv virtualenv env --no-site-packages env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate

Obtener el paquete

El paquete de Google Assistant SDK contiene todo el código necesario para obtener al asistente de Google corriendo en el dispositivo, incluyendo el código de ejemplo.

Instalar dependencias del sistema del paquete:

sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev

Utilice para instalar la última versión del paquete Python en el entorno virtual: pip

python -m pip install --upgrade google-assistant-library==1.0.0
python -m pip install --upgrade google-assistant-sdk[samples]==0.5.1

Generar credenciales

  1. Instalar o actualizar la herramienta de autorización: python -m pip install –upgrade google-auth-oauthlib[tool]
  2. Generar credenciales para poder ejecutar el código de ejemplo y herramientas. Referencia el archivo JSON que descargó en un anterior paso; puede que necesite copiar el dispositivo. No cambiar el nombre de este archivo. google-oauthlib-tool –scope https://www.googleapis.com/auth/assistant-sdk-prototype \ –scope https://www.googleapis.com/auth/gcm \ –save –headless –client-secrets /path/to/client_secret_client-id.json Debería ver una dirección URL que aparece en el terminal: Please visit this URL to authorize this application: https://&#8230;
  3. Copia el URL y pegarlo en un navegador (esto se puede hacer en cualquier máquina). La página le pedirá que inicie sesión en su cuenta Google. Ingrese a la cuenta de Google que creó el proyecto de desarrollo en el anterior paso. Nota: Para usar otras cuentas, primero Agregar esas cuentas a tu consola de acciones proyecto como los propietarios de.
  4. Después de que usted apruebe la solicitud de autorización de la API, aparecerá un código en su navegador, tales como «4/XXXX». Copie y pegue este código en el terminal: Enter the authorization code: Si la autorización tuvo éxito, usted verá una respuesta similar al siguiente: credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json Si en cambio ves, ha introducido un código incorrecto. Intentarlo de nuevo, teniendo cuidado de copiar y pegar todo el código.InvalidGrantError Nota: La herramienta de autorización crea un nuevo archivo de credentials.json en un directorio oculto .config en el dispositivo. Este archivo contiene un token de acceso que se utiliza para llamar a la API de ayudante de Google.

Ejecutar el código de ejemplo

En este punto, usted está listo para ejecutar el ejemplo y hacer una consulta.

En el siguiente comando:

  • Reemplace con el ID de proyecto de plataforma de la nube de Google para el proyecto de acciones de consola que creó. Para encontrar el ID de proyecto en la Consola de acciones, seleccione el proyecto, haga clic en el icono de engranaje y seleccione ajustes del proyecto.my-dev-project
  • Reemplace con el nombre del modelo creado en el anterior paso.my-model
googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model

Decir Google Ok o Hey Google, seguido de tu consulta. Usted puede intentar algunos de los siguientes:

  • ¿quién soy?
  • Escuchar podcast de este estilo de vida americano.
  • ¿Qué es el tiempo en San Francisco?

Si el asistente no responde, siga las instrucciones de solución de problemas.

Para cambiar el idioma para el Asistente de Google o para permitir resultados personales, utilice el Asistente de Google app.

Si usted tiene un dispositivo de fundido en la misma red y configurado con la misma cuenta de usuario, usted puede controlar de forma remota:

  • Google ok, jugar Spotify en el altavoz de la cocina.

Para transmitir un mensaje de voz, asegúrese de primero establecer la ubicación del dispositivo en el Asistente de Google app. Entonces haga lo siguiente:

  • Google ok, difusión de venir a cenar.

Encontrar el ID de instancia de dispositivo

Al ejecutar la muestra la primera vez, se generará una instancia de dispositivo para su dispositivo en particular. Esta instancia de dispositivo se asocia con el modelo de dispositivo que especificó para ejecutar el ejemplo. También puede crear la instancia mediante la herramienta de registro.

La muestra guarda el identificador de instancia de dispositivo. Si ejecuta la muestra con el mismo identificador de modelo, su valor por defecto usando el identificador de instancia de dispositivo guardado.

Encontrar el ID de instancia de dispositivo en la consola para la muestra.

device_model_id: my-modeldevice_id: 1C3E1558B0023E49F71CA0D241DA03CF # Device instance IDRegistering...Done.ON_MUTED_CHANGED:  {'is_muted': False}ON_START_FINISHED...

Pasos a seguir

Una vez que el Asistente de Google en su proyecto, probar estos:

  1. Personalizar cómo su proyecto interactúa con el asistente. Por ejemplo, activar al asistente con el empuje de un botón o parpadear un LED cuando se reproduce audio. Incluso puede mostrar una transcripción de reconocimiento de voz desde el asistente en pantalla.
  2. Control de su proyecto con las acciones del dispositivo. Por ejemplo, pedir su lámpara con el built-in ayudante, encender y cambiar su brillo.

Personalizar cómo su proyecto interactúa con el asistente

Activar el asistente

Con la biblioteca auxiliar de Google, activarás una solicitud de asistente hablando un hotword como Google Ok. Puede silenciar el micrófono para detener al asistente de la escucha para el hotword. Utilice el set_mic_mute() para controlar esto. Desencadenar el método start_conversation() basado en su propio evento personalizado.

Obtener la transcripción de la solicitud del usuario

El SDK de Google ayudante le da una transcripción del texto de la solicitud del usuario. Utilizar esto para proporcionar feedback al usuario al representar el texto a la pantalla, o incluso para algo más creativo como realizar algunas acciones locales en el dispositivo.

La transcripción se encuentra en un objeto de cadena de Python en el evento ON_RECOGNIZING_SPEECH_FINISHED .

Su proyecto con acciones de dispositivo de control

Puede Agregar acciones de dispositivo para el asistente que le permite controlar su dispositivo a través de voz. Extender la muestra de asistente de biblioteca de Google para incluir Acciones de dispositivo.

Fuente https://developers.google.com/assistant/sdk/guides/library/python/embed/setup