Simple cámara de seguridad


En efecto gracias al nivel de integración alcanzado , cada vez hay soluciones más “sencillas” a problemas de computación en tiempo real que tradicionalmente han sido  muy complejos  como por ejemplo puede ser el reconocimiento y detección de imágenes en tiempo real .

Como muestra  de este tipo de soluciones  vamos a ver la placa ESP-EYE , una  pequeña placa de desarrollo del fabricante chino Espressif centrada en el  reconocimiento de imágenes  con  procesamiento de audio en aplicaciones AIoT

Realmente esta solución  se basa en dos componentes claramente  diferenciados:

  • El hardware  :  esta solución es soportable por muy diferentes propuesta  pero el  hw  más sencillo  y del que vamos  a ver en este post   el ESP-EYE , una placa de desarrollo  de  menos de 30€  para el reconocimiento de imágenes y el procesamiento de audio, que se puede utilizar en varias aplicaciones AIoT. Cuenta con un chip ESP32, una cámara de 2 megapíxeles y un micrófono. ESP-EYE ofrece mucho almacenamiento, con una PSRAM de 8 Mbyte y un flash de 4 Mbyte. También es compatible con la transmisión de imágenes a través de Wi-Fi y depuración a través de un puerto Micro-USB. Aunque el ESP-EYE es una opción en kit  muy asequible, el fabricante también ofrece una opción más potente :Esp-Wrover-Kit

 

  • El software :  ESP-WHO, que  es un marco de desarrollo de detección y reconocimiento de rostros diseñado para aplicaciones AIoT. Puede usarse con la placa de desarrollo ESP-EYE, el ESP-WROVER-KIT calificado por Amazon FreeRTOS u otras placas de desarrollo basadas en ESP32. Luego, al agregar solo unos pocos periféricos, como cámaras y pantallas, puede crear fácilmente aplicaciones AIoT completas.  Para ejecutar ESP-WHO, debe tener una placa de desarrollo que integre un módulo ESP32 que tenga suficientes pines GPIO y más de 4 MB de RAM externa SP  como la placa  anteriormente comentada (ESP-EYE ), aunque  no obstante  ESP-WROVER-KIT  también pueden ser otra opción como placa de pruebas.

 

Espressif ESP-EYE

Como hemos comentados hablado  estamos ante una Placa de desarrollo de Espressif para reconocimiento de imágenes y procesamiento de audio en aplicaciones AIoT.

Espressif , el fabricante  ofrece una solución AIoT completa que combina ESP32 con un marco de desarrollo de inteligencia artificial (AI).  Esta solución incluye la placa de desarrollo ESP-EYE, junto con los marcos de desarrollo IoT y AI de Espressif, también conocidos como ESP-IDF y ESP-WHO, respectivamente.

 

 

ESP-EYE es una placa de desarrollo para el reconocimiento de imágenes y el procesamiento de audio, que se puede utilizar en varias aplicaciones AIoT. Cuenta con un chip ESP32, una cámara de 2 megapíxeles y un micrófono, todo ello integrado en una minúscula placa de 8 x4 cm (mas o menos como un pen-drive USB).

ESP-EYE ofrece mucho almacenamiento, con una PSRAM de 8 Mbyte y un flash de 4 Mbyte. También es compatible con la transmisión de imágenes a través de Wi-Fi y depuración a través de un puerto Micro-USB.

 

 

Aunque el sl fabricante ha dejado disponible en Github su sw , también  puede apoyarse en otras soluciones del mismo fabricante como el ESP-WROVER-KIT-VB que f ofrece una solución integrada  AIoT completa que combina un ESP32 con un marco de desarrollo de inteligencia artificial   y además incluye la placa de desarrollo ESP-EYE, junto con los marcos de desarrollo IoT y AI de Espressif, también conocidos como ESP-IDF y ESP-WHO, respectivamente.

 

ESP-WROVER-KIT-VB

Es una placa de desarrollo de ultra bajo consumo altamente integrada que incluye Flash y PSRAM  agregando una interfaz USB, una pantalla LCD de 3.2 “, una interfaz de cámara OV7670 y una ranura para tarjeta micro SD.Alcanza un gran rendimiento con una RAM de 4.5 MB y una CPU de doble núcleo de 240 MHz permitiendo creer cámaras de Internet, pantallas inteligentes o radios de Internet conectando pantallas LCD, micrófonos y códecs ) , todo ello a un precio relativamente competitivo (  unos 62€)

Esta  placa Esp-Wrover-Kit  también del mismo  fabricante   Expressif es otra opción  que puede soportar el software  ESP-WHO , En este caso es una una placa de desarrollo calificada por AWS( Amazon Web Services ) . Además del ESP-IDF SDK de Espressif, puede usar Amazon FreeRTOS en ESP-WROVER-KIT-VB. Amazon FreeRTOS proporciona conectividad lista para usar con AWS IoT, AWS Greengrass y otros servicios de AWS.

Aunque  ESP32 admite la depuración JTAG, este modulo  ESP-WROVER-KIT-VB integra un depurador USB también, lo cual  hace que la depuración y el rastreo de aplicaciones complejas sea muy fácil, sin la necesidad de ningún hardware adicional.

ESP-WROVER-KIT-VB es pues la versión mejorada del ESP-WROVER-KIT ( de hecho cuesta casi el doble que la  version anterior) . Su PSRAM  en l aversion 2 aumenta a 8 MBytes, mientras que esta placa de desarrollo también cuenta con una interfaz de tarjeta Micro-SD de alta velocidad, una interfaz de cámara VGA, un panel LCD SPI de 3.2 ”y capacidades de expansión de E / S. Asimismo cuenta con  un procesador de doble núcleo, radios Bluetooth y WiFi, y 520 KB de SRAM.

Ultimamente estan distribuyendo la versión 3 que contiene 32 Mbit adicionales de PSRAM  siendo  el ESP32 s compatible con SPI, I2C, serie, etc.

Espressif admite dos cadenas de herramientas:

  • El entorno de lenguaje C nativo que se ejecuta bajo el sistema operativo en tiempo real FreeRTOS
  • El entorno Arduino C / C ++. Los programas desarrollados usando el entorno Arduino en realidad se ejecutan como una tarea en FreeRTOS y pueden usar las bibliotecas FreeRTOS.

Puede ser  preocupante el soporte para el controlador LCD  ya  que las versiones 2 y 3 de la placa utilizan un controlador ST7789V pero la placa de la versión 1 utiliza un controlador ILI9341.  La última versión de la demostración TFT simple en ESP32 SDK llamada spi_master se puede configurar para ejecutarse en cualquiera de los ESP32-WROVER-KIT. No obstante “Loboris” en github tiene una biblioteca TFT  con todas las funciones con opción de configuración para construir la biblioteca y el programa de demostración para la versión 3 WROVER-KIT. Incluso con SPI, la actualización de la pantalla es muy rápida.

No se incluye documentación con la placa, pero hay mucha documentación en la web, y el SDK nativo viene con una serie de ejemplos útiles. La desventaja es que el ESP32 es relativamente nuevo, parte del software está cambiando y faltan algunas bibliotecas de Arduino.

Sin dua el ESP32-WROVER-KIT es una gran pieza de hardware, aunque su uso requiere cierta experiencia con microcontroladores y cierta tenacidad para examinar la documentación en línea y el código de ejemplo , pero quizás valga la pena el esfuerzo por toda la potencia que le brinda esta placa.

EL software

El sw   necesario se  compone del  marco de desarrollo IoT  ( también llamado ESP-IDF  ) y la AI de Espressif ( también conocidos como ESP-WHO ).

Para ejecutar ESP-WHO, debe tener una placa de desarrollo que integre un módulo ESP32 generico que tenga suficientes pines GPIO y más de 4 MB de RAM externa SPI  y una cámara CCD . Lo mas sencillo es usar el  ESP-WROVER-KIT o el recomndado  por el fabricante:  el   ESP-EYE que hemos visto integra el ESP32 y la cámara integrado en una solución de bajo coste

 

 

ESP-WHO es pues  la utilidad de detección, reconocimiento e imagen son el núcleo de la plataforma   constando en realidad de los siguientes módulos:

  • Image Utility ofrece API de procesamiento de imágenes fundamentales.
  • La detección toma imágenes como entrada y proporciona la posición de la cara si hay una cara. Se implementa con el modelo MTMN, que se refiere a MTCNN y MobileNets .
  • El reconocimiento es identificar a la persona en particular y necesita los resultados de la detección. Se implementa con el modelo MobileFace.
  • La optimización consiste principalmente en aumentar la precisión de la inferencia y acelerar todo el proceso. Pero también podría cambiar la estructura de la red, actualizar los coeficientes, refactorizar el código, etc.

Tanto la entrada como la salida son flexibles porque las fuentes de imagen pueden ingresarse a través de la cámara ( aunque sin embargo, no proporcionan  muchos controladores en este momento, ya que los de otros módulos de cámara se lanzarán en el futuro)  y porque los resultados se pueden mostrar  a través de la línea de comando, un LCD o incluso el sitio web a través del servicio de Wi-Fi http.

 

Para saber cómo configurar el módulo ESP32 para sus aplicaciones, puede consultar el archivo README.md de cada ejemplo del respositorio de github ( https://github.com/espressif/esp-who )

Preparación de software

La resolución recomendada de la imagen de entrada es QVGA (320×240) . En cuanto a elegir la cámara si no usa el citado modulo recomendado  ESP-EYE      el módulo ESP32 usado   deberá tener libre los  pines específicos según la  cámara que use Por ahora el  sw  proporcionado soporta el controlador de OV2640 y OV3660 , que son muy recomendables para comenzar.

Veamos como instalar los dos módulos sw necesarios:

 ESP-WHO

Asegúrese de clonar el proyecto de forma recursiva usando el siguiente comando:

git clone --recursive https://github.com/espressif/esp-who.git

Si clona un proyecto sin --recursive ( es decir usando el indicador --recursive), vaya al directorio esp-who y ejecute el comando git submodule update --init antes de hacer nada.

 ESP-IDF

Consulte las guías de configuración para obtener instrucciones detalladas para configurar el ESP-IDF:Guía de inicio para la versión estable de ESP-IDF

En este caso, tomamos ESP-IDF v3.2 como la versión de prueba.Si ya ha configurado ESP-IDF antes y no desea cambiar el existente, puede señalar IDF_PATH al ESP-IDF que se encuentra en ESP-WHO.

 Otros componentes sw

Otros componentes  sw necesarios lo constituye  el marco principal del SDK, con algunos controladores y algunos  algoritmos dentro.

  • Cámara :  El componente de cámara contiene controladores para dispositivos de cámara de ESP32.
  • Face de esp: El componente esp-face contiene las API de las redes neuronales ESP-WHO, incluido el marco de detección y reconocimiento de rostros.

Ejemplos

La carpeta de /examples/  del respositorio de github ( https://github.com/espressif/esp-who )   contiene ejemplos de aplicaciones que demuestran las características API de ESP-WHO.

Una buena muestra es la  detección de rostros , para lo cual habría que seguir los siguientes pasos:

  1. esp-who/examples/single_chip/detection_with_command_line a una carpeta de ejemplo esp-who/examples/single_chip/detection_with_command_line .
  2.  cd esp-who/examples/single_chip/detection_with_command_line
  1. Compila y actualiza el proyecto.   idf.py build idf.py flash -p [PORT]
  1. Los usuarios avanzados pueden modificar algunas opciones mediante el comando idf.py menuconfig .

Verifique README.md de cada ejemplo  del respositorio de github ( https://github.com/espressif/esp-who )      para más detalles.

Demo

En el siguiente , podemos ver  cómo hacer su propio proyecto de seguridad para el hogar en solo 5 minutos utilizando la placa   ESP-EYE y una Raspberry Pi para visualizar el resultado aunque   puede usarse un pc portatil ,tableta , etc en su lugar  . Este proyecto  además es  plug and play pues  apenas  requiere ningún conocimiento de codificación o hardware.
Para  hacer su propio  dispositivo de transmisión inalámbrica por tanto sólo usaremos  una a pantalla LCD táctil conectada a la Raspberry pi . Como normalmente el fabricante del LCD suele incluir las instrucciones necesarias para  conectar esta a la Raspberry Pi y que sea funcional en la demo  no se requiere ninguna codificación y tampoco  ningún circuito   ya que nos bastará  conectar estos dispositivos y empezar a transmitir
En realidad  no es dificil  conectar un apantalla tactil a una raspberry pi   , pues de  hecho en este  blog vimos en este post http://soloelectronicos.com/2018/12/02/como-instalar-una-pantalla-tactil-de-5-en-una-raspberry-pi-3/  como hacerlo con un simple escudo   de kuman  y  cargando en nuestra Raspberry Pi la imagen de Raspbian con los drivers ya instalados

En primer lugar necesitaremos encender este ESP  alimentando con 5v DC por medio del puerto microUSB . En el inicio del LED rojo se enciende  en el ESP ,pero   el LED rojo comenzará a parpadear que revela que este dispositivo  se despierta  y ha creado  su punto de acceso propio al  que se  puede  conectar todos los dispositivos .

En este ejemplo  como se usa  Raspberry Pi para ver  los datos  que vienen del CSPI ,encenderemos la placa Raspberry Pi . Para la primera vez que se conecte es recomendable  tener teclado y ratón conectados a la Raspberry Pi , pero esto  sólo será para  la primera vez  pues después  el ajuste se guardará en esta Raspberry Pi y no necesitará  teclado y ratón ,ya que se puede utilizar  la pantalla táctil

Cómo  está abierto  el punto de acceso ,sólo necesitamos para conectar a través de este punto ,  abrir el navegador web y conectarnos a esta dirección IP( doble barra oblicua ,dos puntos y la ip del módulo y   podremos ver  la imagen que esta transmitiendo la cámara .

Para la  segunda vez no hay necesidad de utilizar este tipo de teclado porque una Raspberry Pi automáticamente se conectara con este punto de acceso particular y en el navegador puede usar esta dirección IP ,la cual  se guardará en el historial para que pueda tocar    la  dirección IP en el historial  y acceder directamente

 

 

En este video, pues  hemos visto cómo hacer su propio proyecto de seguridad para el hogar en solo 5 minutos utilizando el tablero ESP-EYE y Raspberry Pi, proyecto por cierto que como hemos visto es plug and play , y no requiere ningún conocimiento de codificación o hardware.

!Este módulo sin duda es una versátil aliado para múltiples retos  que se nos presente!

 

Conversión de Raspberry Pi en Google Home


Gracias a que se  liberó el SDK del Google Assistant , ya se  puede usar Google Home en  Español entre otros nuevos idiomas  con cualquier hw que los permita ! Así 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!

Ideal para ponerla en el salón o cualquier sitio escondida, con un buen micrófono omnidireccional, podremos hacerle consultas en nuestro propio idioma y medianamente nos las esquivará correctamente , Por cierto a parte del Español, también soporta Inglés, Alemán, Francés, Italiano y Japonés. 

El proyecto se llama AIY que resulta de la mezcla de AI (inteligencia artificial en sus siglas en inglés, Artificial Intelligence) y DIY (hazlo tú mismo, en sus siglas en inglés, Do it Yourself).

Echemos un vistazo a lo que necesitamos .

  • Raspberry Pi 3  con fuente de alimentación y tarjeta MicroSD
  • Micrófono USB. Se puede  utilizar el micrófono incluido en algunas cámaras web para las pruebas. La gran ventaja del mini micrófono es la potabilidad del prototipo pero cualquier producto similar hará el trabajo de forma satisfactoria.
  • Altavoces con entrada de audio de 3,5 mm  Aunque inclusive unos auriculares de cable son más que suficiente para realizar las pruebas, idealmente podremos contar con algún tipo de altavoz equipado con conector de 3.5mm para obtener una mejor experiencia de usuario
  • Ratón y teclado USB

 

Instalando el SO

Para instalar el software necesitamos nueva imagen descargada a partir del sitio  oficial Raspbian ,y flashearla en la microSD con un ordenador:

 

raspbian

 

Una vez descargada y descomprimida  la imagen correspondiente  en su ordenador siga los siguientes pasos:

  • Inserte la tarjeta SD en el lector de tarjetas SD  de su ordenador comprobando cual es la letra de unidad asignada. Se puede ver fácilmente la letra de la unidad, tal como G :, mirando en la columna izquierda del Explorador de Windows.
  • Puede utilizar la ranura para tarjetas SD, si usted tiene uno, o un adaptador SD barato en un puerto USB.
  • Descargar la utilidad Win32DiskImager desde la página del proyecto en SourceForge como un archivo zip; puede ejecutar esto desde una unidad USB.
  • Extraer el ejecutable desde el archivo zip y ejecutar la utilidad Win32DiskImager; puede que tenga que ejecutar esto como administrador. Haga clic derecho en el archivo y seleccione Ejecutar como administrador.
  • Seleccione el archivo de imagen que ha extraído anteriormente de Raspbian.
  • Seleccione la letra de la unidad de la tarjeta SD en la caja del dispositivo. Tenga cuidado de seleccionar la unidad correcta; si usted consigue el incorrecto puede destruir los datos en el disco duro de su ordenador! Si está utilizando una ranura para tarjetas SD en su ordenador y no puede ver la unidad en la ventana Win32DiskImager, intente utilizar un adaptador SD externa.
  • Haga clic en Escribir y esperar a que la escritura se complete.
  • Salir del administrador de archivos  y expulsar la tarjeta SD.
  • Ya puede insertar la SD en su Raspberry Pi en el adaptador de micro-sd , conectar un monitor por el hdmi , conectar un teclado y ratón en los  conectores USB, conectar la  con un cable ethernet  al router  conectividad a Internet y finalmente conectar la alimentación  para comprobar que la Raspeberry arranca con la nueva imagen

 

Cuando acabamos de flashear la tarjeta la colocamos en la Raspi y ya podemos empezar. Para arrancar la Raspberry Pi 3 con el Voice Kit vamos a necesitar un monitor con cable HDMI y un teclado con ratón. Conectamos todo y le damos energía a la Raspi.

El primer inicio del sistema puede tardar varios minutos. El sistema que corre en la Raspberry Pi es una versión de Debian modificada especialmente para este dispositivo y que se llama Raspbian. Debian es una de las distribuciones más extendidas de GNU/Linux y en la que se basan distribuciones tan famosas como Ubuntu.

Una vez tengamos el escritorio activo, arriba a la derecha vamos a poder conectarnos a nuestra red Wi-Fi entre los símbolos del Bluetooth y del volumen. 

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.

 

 

 

 

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.

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

    1. Coloque el micrófono USB en la lista de dispositivos de hardware de captura. Anote el número de tarjeta y el número de dispositivo.

      arecord -l
    2. Coloque el altavoz en la lista de dispositivos de hardware de reproducción. Anote el número de tarjeta y el número de dispositivo. Tenga en cuenta que el conector de 3,5 mm se etiqueta típicamente o (no). Analogbcm2835 ALSAbcm2835 IEC958/HDMI

      aplay -l
  2. Crear un nuevo archivo llamado .asoundrec  en el directorio home(/home/pi). Asegúrese de que tiene las definiciones de derecho esclavo para micrófono y altavoz; Utilice la configuración  a continuación pero cambie <card number><device number>  con el número que anotó en el paso anterior. Hacer esto para ambos y..asoundrc/home/pi<card number><device number>pcm.micpcm.speaker

    pcm.!default {
      type asym
      capture
    .pcm "mic"
      playback
    .pcm "speaker"
    }
    pcm
    .mic {
      type plug
      slave
    {
        pcm
    "hw:<card number>,<device number>"
     
    }
    }
    pcm
    .speaker {
      type plug
      slave
    {
        pcm
    "hw:<card number>,<device number>"
     
    }
    }
  3. Verificar esa grabación y la reproducción del ejemplo:

    1. Ajustar el volumen de reproducción.

      alsamixer

      Pulse la tecla de flecha hacia arriba para ajustar el volumen de reproducción nivel a alrededor de 70.

    2. Reproducir un sonido de prueba (se trata de una persona que habla). Presione Ctrl + C al hecho. Si no se oye nada cuando se ejecuta esto, Compruebe la conexión del altavoz.

      speaker-test -t wav
    3. Grabar un clip audio corto.

      arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
    4. Compruebe la grabación por reproducirlo. Si no se oye nada, puede que necesite registrar el volumen de grabación. alsamixer

      aplay --format=S16_LE --rate=16000 out.raw

    Si están trabajando la grabación y reproducción, ya se ha configurado el  audio. Si no es así, verifique que el micrófono y el altavoz están correctamente conectados. Si no es el problema, intente un diferentes micrófono o altavoz.

    Tenga en cuenta que si tiene un monitor HDMI y un altavoz de jack de 3,5 mm conectado, usted puede reproducir audio por  cualquiera de los dos. Ejecute el siguiente comando:

    sudo raspi-config

    Ir a Opciones avanzadas > Audio y seleccione el dispositivo de salida deseada.

 

Activación servicio

Para activar el servicio nos iremos  a la consola de las Acciones de Google, nos validaremos con una cuenta de Google válida y crearemos un nuevo proyecto de Google Cloud Platform,.Con la API de Google Assistant instalada en nuestra Raspberry accederemos para realizar consultas y el proyecto nos mostrará los datos sobre los consumos.

En primer lugar nos iremos  a la consola de las Acciones de Google, en https://console.actions.google.com, deberemos validarnos con una cuenta de Google válida y crear un nuevo proyecto de Google Cloud Platform, para ello pulsamos en “Add/Import project”

Si no tiene ningún proyecto creado, nos aparece una ventana para  aceptar las condiciones de servicio. Es importante en este punto no olvidar  si queremos cambiar el idioma a español   para las Acciones  así como  seleccionar nuestro País, 

 

Tenemos que tener en cuenta  que el máximo de proyectos gratuitos es 3 ,por lo que  no podremos añadir nuevos, así que una opción es eliminar proyectos antiguos o incluso seleccionar alguno de estos proyectos antiguos de Google App Engine  como origen  de automatización ( ese es el caso de nuestro ejemplo “soloelectronicossalva”)

En caso de no tener ningún proyecto en la nube de Google ,deberemos  indicar el nombre del Proyecto (recordar que  aparecerá un combo si tiene ya varios proyectos creados)

Ahora tenemos que habilitar la API de Google Assistant API para nuestro proyecto , por lo que nos iremso a  https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview y daremos al boton de Habilitar . Si no estamos situados en nuestro proyecto  seleccionamos del combo nuestro proyecto y pulsamos en “Habilitar”,(API > Enable API > Google Assistant > Enable)

 

Y al pulsar el botón  quedara habilitado el API  de Google Assistant para nuestro proyecto

 

 

Observe que no es completamente gratuito, estando limitado a 500 peticiones al día  con un máximo de 60 peticiones/minuto , aspectos que podemos estudiar en el menú  de Cuotas

Ahora ya podríamos ir a registrar nuestro dispositivo! Vamos de nuevo a la Consola, en https://console.actions.google.com/
Ir a “Device registration” > “Register Model” y lo crearíamos

 

En caso de haber importado un proyecto que ya teníamos, el proceso es diferente, pues repetiremos las dos opciones primeras de Add/Import  , pero esta vez en el menú que nos aparece seleccionaremos  Device registration” > “Register Model” y lo creariamos (la url seria del tipo https://console.actions.google.com/u/0/project/proyecto_importado/deviceregistration/)

 

 

En ambos casos, llegado a este punto, pulsaremos al botón   “Device registration

 

 

 

Tendremos que ponerle un nombre o ‘Product Name’ (que anotaremos), un nombre del fabricante o ‘Manufacter Name’  y seleccionamos si queremos algún tipo de dispositivo, que en nuestro caso al ser una raspberry Pi 3 lo dejaremos en ‘Auto’, pulsamos en “Register Model”,

 

 

 

 

Nos toca ahora descargar el fichero con los credenciales de acceso al servicio de Google Assistant, pulsamos en “Download OAuth 2.0 credentials” y los guardamos en una ruta de nuestro ordenador que nos sea fácil de recordar

Ahora   copiaremos   dichos archivo  a la Raspberry Pi  en la ruta  /home/pi,

 

 

En este ultimo paso , es interesante las opciones que nos ofrece:

  • Brillo: Este rasgo cubre cómo controlar el brillo de un dispositivo. La configuración de brillo absoluto se encuentra en un rango normalizado de 0 a 100 (las luces individuales pueden no ser compatibles con todos los puntos del rango según su configuración de LED). 
  • ColorSpectrum Este rasgo pertenece a cualquier dispositivo que pueda establecer un espectro de color. Esto se aplica a las bombillas de color “completas” que toman rangos de color RGB. Las luces pueden tener cualquier combinación de ColorSpectrum y ColorTemperature, las luces de acento y las tiras de LED solo pueden tener Spectrum, mientras que algunas bombillas de lectura solo tienen Temperatura. Las bombillas básicas, o luces tontas en enchufes inteligentes, no tienen ninguno.
  • Temperatura del color: Este rasgo pertenece a cualquier dispositivo que pueda ajustar la temperatura del color. Esto se aplica a las bombillas de “calor” que tienen un punto de color en Kelvin. Esta es generalmente una modalidad separada de ColorSpectrum, y es posible que haya puntos blancos disponibles a través de la temperatura que Spectrum no pueda alcanzar. Según los rasgos disponibles, Google puede elegir el modo apropiado para usar según la solicitud y el tipo de luz (por ejemplo, si las luces de la sala de estar están en blanco podrían enviar comandos de temperatura a algunas bombillas y comandos de espectro a tiras de LED).
  • Muelle: Este rasgo está diseñado para dispositivos auto-móviles que pueden ser ordenados a regresar para la carga. En general, estas son aspiradoras robóticas actualmente, pero esto también se aplicaría a algunos drones, robots de entrega y otros dispositivos futuros. 
  • Encendido apagado :La funcionalidad básica de encendido y apagado para cualquier dispositivo que tenga activado y desactivado el binario, incluidos enchufes e interruptores, así como muchos dispositivos futuros. Tenga en cuenta que los termostatos tienen una configuración de ‘modo’ expandida, que es un interruptor de múltiples vías que incluye encendido y apagado, pero los termostatos generalmente no tienen esta característica. 
  • StartStop :Este rasgo cubre iniciar y detener el dispositivo. Iniciar y detener un dispositivo cumple una función similar para encenderlo y apagarlo. Los dispositivos que heredan este rasgo funcionan de manera diferente cuando se encienden y cuando se inician. Algunas lavadoras, por ejemplo, pueden encenderse y modificar sus configuraciones antes de comenzar a operar.
  • Ajuste de temperatura : Este rasgo cubre el manejo tanto del punto de temperatura como de los modos. 

Para  nuestro ejemplo no seleccionaremos ninguna de esta opciones por el momento y pulsaremos  “SaveTraits

 

Nos debe aparece ahora  al entrada    con la configuración definida:

 

 

Si pinchamos en la entrada  podemos cambiar algunos de los parámetros ya definidos ( no olvidar darle al botón de “save“) 

 

 

 

 

Grabamos el dispositivo que acabamos de registrar, pulsando en “SAVE”,

 

 

Configruacion de la Raspberry Pi

 

Bien, ahora en la Raspberry Pi configuraremos el entorno virtual de Python para aislar el SDK y sus dependencias de los paquetes Python del sistema, nos escogemos la opción de Python 3:

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

Instalamos las dependencias necesarias además de  Google Assistant SDK que nos permitirá tener Google Assistant corriendo en la Raspberry Pi:

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


Mediante pip instalamos la última versión de Python en el entorno virtual:

python -m pip install --upgrade google-assistant-sdk[samples]

Instalamos o actualizamos la herramienta de autorización:

python -m pip install --upgrade google-auth-oauthlib[tool]

 

Ahora generamos los credenciales para ejecutar los ejemplos, usaremos el fichero JSON que nos hemos descargado previamente:

google-oauthlib-tool –scope 

https://www.googleapis.com/auth/assistant-sdk-prototype –scope

 https://www.googleapis.com/auth/gcm –save –headless –client-

secrets /home/pi/client_secret_xxxx.apps.googleusercontent.com.json

 

 

Si todo es correcto, nos pondrá algo como:

Please visit this URL to authorize this application: https://..."
 

Copiamos la URL y vamos a ella con un navegador que esté validado con nuestra cuenta de Google. Tras permitir el acceso o nos dará un código de autenticación que debemos pegar en la shell.

Y ahora, ya estamos listos para probar un ejemplo!

En el mismo entorno virtual, ejecutamos el siguiente comando indicando nuestro ID de Proyecto y nuestro ID de modelo, En caso de no haber  anotando estos datos , ambos estan  en la Consola de Actions de Google buscando en las opciones generales del proyecto y del dispositivo.

Si esta todo OK ejecutamos el siguiente comando y quedará listo para que hablemos con el Assistantar:

 

  googlesamples-assistant-hotword --project_id entrada-txarlatana --device_model_id entrada-txarlatana-entrada-xxxx

 

Por cierto, para cambiar el idioma de nuestro Asistente, lo haremos directamente con nuestro teléfono móvil, con la app del Assistant que supongo la tendréis instalada (y si no os la instaláis :P, la abrís, pulsamos arriba en la brújula, y en la siguiente pantalla en Explorar debemos ir a “Ajustes”,

En Ajustes debemos buscar en Dispositivos el dispositivo que hemos registrado antes, lo seleccionamos, y ahí ya le podremos dar acceso a más datos nuestros a los señores de Google o seleccionar el idioma que queremos para interactuar con el Assistant!

 

 

MEJORA DEL MICRÓFONO 

Finalmente, dependiendo de la calidad de tu micrófono, notará que tiene algunos problemas a la hora de escucharle. En lugar de gritar  cada vez que quiera usarlo, lo que haremos será regular el micrófono mediante la línea de comandos una vez más.

  • Introduzca  en la termina ssh  el siguiente comando:
     alsaixer
  • Pulsee F6 para seleccionar un USB diferente. Use, las flechas para seleccionar tu micrófono.
  • Usa las flechas para aumentar el volumen de captura.
  • Cuando esté satisfecho con el volumen, pulse  ESC para salir.
  • Escriba el siguiente comando para hacer permanentes los cambios.
     sudo alsactl store

Ahora será capaz de comunicarte con su Echo casero hablando de manera normal   en lugar de gritando. Desde esta misma pantalla también se puede cambiar el volumen por defecto si lo necesitara.

 

Tenemos el servicio montado bajo una Raspberry Pi, si volvemos a ejecutar el ejemplo anterior estará el Asistente en nuestro idioma pero  tendremos que constantemente pulsar Enter o decir ‘OK, Google’ independientemente de los ejemplos que tenemos para interactuar.

Si no nos  interesa que el micrófono esté siempre escuchando y así también evitar la necesidad de decir ‘OK Google’ todo el rato, mediante un script  en c-shell   podemos   iniciar  o detener el Assistant

google_assistant_para.sh

cd /home/pi/

source env/bin/activate

nc -l 12345 | /home/pi/env/bin/python3 /home/pi/env/bin/googlesamples-assistant-pushtotalk –project-id txarlatana –device-model-id txarlatana-pitxarlatana-xxxx &

 

google_assistant_para.sh

pkill python3

pkill google

pkill nc

 

 

Mas información en  https://developers.google.com/assistant/sdk/guides/library/python/

 

 

 

 

 

 

 

LLegan los asistentes de voz a la TV


Aunque está todavía en su fase inicial   y a la espera de próximas versiones que incluirán mejoras, como grabar y visualizar contenidos grabados desde el deco,  recientemente se ha incorporado al catálogo de apps  de Telefónica , tanto en Ios como para Android ,  la nueva app   Movistar+ Habla , la cual incluye Aura, un asistente digital que incorpora  inteligencia artificial  , el cual intenta  transformar la forma en que los clientes se relacionan con Telefónica y cómo gestionan su vida digital con la compañía.
Si   se  es cliente de Movistar+ en cualquiera de sus modalidades, por tanto basta  simplemente   con   descargarse  e instalar  esta nueva  aplicación ( para los usuarios de Android  este es el enlace  directo a Google Play ,) identificarse  con su usuario y contraseña de Movistar +   para empezar a disfrutar de los  contenidos de Movistar+   ahora  usando  la IA  de Aura   .
Por ejemplo con esta nuev app , se pueden pedir  cosas como: buscar una serie o película favorita, cambiar de canal ,ver un canal ,  pausar el sonido de la TV conectada al descodificador, o simplemente que nos haga  recomendaciones según nuestros gustos, y  un largo  etcétera  todo expresado directamente en lenguaje natural     hablando directamente desde la IA de Aura  al terminal.
aura1.PNG
 Pero  las funcionalidades no acaban  aquí  buscando desde la IA  de Aura con  lenguaje natural  a  nuestro terminal móvil,    pues  el programa, serie, película que haya encontrado   Aura  , no solo se puede ver  directamente en el propio terminal : también se  puede  enviar a la TV conectada  con un descodificador   mediante la funcionalidad Lanzar y ver, pues  nos presentará todos los equipos  que tenemos conectados a Movistar + ( descodificadores, terminales móviles ,PC’s  )     y  directamente con un   botón permitirá  transmitir ese contenido a ese equipo conectado a Movistar +
veraahora.PNG
Algo también muy  interesante que incluye  esta nueva version es  la posibilidad de usar el terminal en el que hayamos instalado la aplicación  como una extensión del mando a distancia tradicional del descodificador  soportando las típicas funciones de pause/play, avance, retroceso, las flechas ,los botones de acceso directo , etc,

 

 

En este video publicitario  Rafa Nadal nos demuestra como  hablando con Aura se pueden hacer  muchas cosas  ¿todavía no lo ha visto?

 

 

Esta primera versión de Aura  la podrán usar clientes de Argentina, Brasil, Chile, Alemania, España y Reino Unido.
Para la visualización de los contenidos de esta aplicación es necesario conectarse a Internet (WiFi, 3G/4G o Ethernet)  siendo los requisitos técnicos  para Android    algo exigentes pues se  requiere  versión Android 5.0 o superior,procesador Dual Core y al menos  1 GB de Memoria RAM.

Para los usuarios de Android que tengan contratado Movistar +  este es el enlace  directo a Google Play