"Alice, enciende la luz". Control de voz de un hogar inteligente basado en openHAB. Sin programación y SMS


Noviembre de 2017, el número once se mostró en el calendario. La venta en Aliexpress estaba en su apogeo, sus manos arañaron algo para comprar. La elección recayó en la " Mi-light RGBW LED Lamp AC86-265V Remote Control Smart Lighting ". Como resultado, se compraron dos copias de la potencia máxima, a 9 vatios, y un controlador de concentrador MiLight WiFi iBox. La entrega desde China no se hizo esperar, y 4 meses después, el 13 de marzo de 2018, se abrió la plataforma Yandex.Dialogs (una plataforma que permite a los desarrolladores externos agregar habilidades a la asistente de voz Alice). A continuación, Alice aprenderá a controlar la iluminación (y no solo) en su apartamento, y la ayudaremos con esto, por etapas y sin una sola línea de código.

  1. Configuración de la lámpara inteligente Xiaomi
  2. Instalar openHAB
  3. Control de luz a través de openHAB
  4. Acceso externo a openHAB
  5. IFTTT
  6. Alice


1. Configuración de lámparas inteligentes de Xiaomi.


Lo primero que debe hacer es configurar el control de la lámpara, al menos utilizando la aplicación de Xiaomi. Si se pasa esta etapa por usted, no dude en continuar con la configuración de un servidor doméstico inteligente, o incluso más, directamente a la integración de Alice y openHAB. Pero, primero lo primero. Las lámparas en sí no se conectarán al enrutador de su hogar, para esto necesita un concentrador iBox que pueda controlar hasta cuatro grupos de fuentes de luz. Debe conectarlo a la red y luego conectarle la lámpara.

  1. Suministramos energía al iBox conectándolo a través de un usb, por ejemplo, a un cargador para el teléfono.
  2. Cuando se conecta por primera vez, debe restablecer el concentrador, así que presione RST .
  3. A continuación, instale la aplicación de Xiaomi para iOS o Android en el teléfono. Asegúrese de que el teléfono esté conectado a la red Wi-Fi doméstica.
  4. Abra la aplicación Mi-Light 3.0 , haga clic en + . Aquí estamos interesados ​​en la pestaña Smart Link .
  5. Ingrese el nombre y la contraseña de la red Wi-Fi doméstica a la que está conectado el teléfono y se planea conectar iBox .
  6. Ahora su iBox debería estar conectado a la red, y los indicadores SYS y LINK deberían parpadear, lenta y rápidamente, respectivamente. Si no, presione RST nuevamente.
  7. Si los indicadores parpadean, haga clic en la aplicación Iniciar configuración , comenzará el proceso de configuración de la conexión para el concentrador.
  8. Después de unos diez segundos, el parpadeo se detendrá, luego SYS comenzará a parpadear lentamente nuevamente y LINK permanecerá encendido. La aplicación muestra Configurado . El concentrador está conectado a la red. Si no está en la Lista de dispositivos , simplemente haga clic en Buscar dispositivo .

Ya puede controlar el color y el brillo de la iBox, pero necesitamos conectar las lámparas. Para hacer esto, ate las lámparas a una de las cuatro zonas disponibles para el centro de control.

  1. Abrimos en la aplicación Mi-Light 3.0 de la lista del hub Mi-Light . Ve a la sección Colores .
  2. En la parte superior de la pantalla, seleccione una de las zonas, deje que sea Zone1 . Y haga clic en el icono de emparejamiento del dispositivo en la esquina superior derecha. Aparece la pantalla LINK / UNLINK con instrucciones.
  3. Ahora configuramos las lámparas que queremos vincular a Zone1 , su gestión en el futuro ocurrirá sincrónicamente. Para controlar el brillo y el color de cada lámpara individualmente, deben asignarse a zonas separadas. Por lo tanto, encienda la lámpara y, dentro de los primeros tres segundos, haga clic en la aplicación Enlace . Si la lámpara parpadeó tres veces, entonces todo está bien, la sincronización fue exitosa. Puedes controlar la lámpara.


Básicamente, en esta etapa ya tiene un control remoto para el control remoto de la luz. Además, puede escribir su propio sistema de control de iluminación, ya que el protocolo para comunicarse con el concentrador se conoce desde hace mucho tiempo (una vez estuvo disponible en limitlessled.com/dev ). Hay bibliotecas listas para usar en php , javascript , python . Pero la administración solo es posible desde la red local, lo que claramente no es suficiente para Alice. Intentemos resolver este problema.


2. Instalar openHAB


Brevemente, qué es openHab . Este es un servidor de administración inteligente para el hogar de código abierto. Desarrollado por la comunidad, admite la gestión de una gran cantidad de dispositivos. Existe un cliente móvil, existe la posibilidad de administrar Alexa desde Amazon y un asistente de Google. Escrito en Java, basado en el marco Eclipse SmartHome . Por lo tanto, se puede instalar incluso en un refrigerador, lo principal es que la máquina virtual Java se ejecuta en este refrigerador. Las instrucciones de instalación son para Linux , Windows , Mac OS , Raspberry Pi , para varios dispositivos de almacenamiento de red Synology y QNAP . Repase rápidamente la primera opción.

  1. Agregar claves de repositorio:

    wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https 
  2. Agregue el repositorio en sí:

     echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list 
  3. Actualizamos e instalamos el servidor junto con los complementos:

     sudo apt-get update sudo apt-get install openhab2 sudo apt-get install openhab2-addons sudo apt-get install openhab2-addons-legacy 
  4. Configuramos el inicio automático del servicio después de reiniciar el dispositivo y lo iniciamos:

     sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service 
  5. Ahora esperamos en la región de 15-20 minutos (esto no es una exageración, es una realidad dura con bromas sobre la velocidad de Java), mientras se http://openhab-device:8080 interfaz web aparece en la dirección http://openhab-device:8080 .
  6. En esta página, estamos interesados ​​en el ítem Paper UI . Es con este tipo de interfaz que trabajaremos en el futuro.




3. Control de luz a través de openHAB


Entonces, tenemos un servidor doméstico inteligente y lámparas de Xiaomi que funcionan con la posibilidad de control remoto. Es necesario conectarlos. openHAB admite carpetas (instrucciones para controlar la electrónica conectada) para muchos dispositivos, incluidas estas lámparas.

  1. Vaya a ComplementoEnlaces .
  2. Instale el enlace Milight .
  3. Para agregar nuestro dispositivo, haga clic en + en la sección ConfiguraciónCosas .
  4. Seleccionamos Milight Binding , comienza la búsqueda automática del dispositivo.
  5. No encontré nada automáticamente, así que agregué manualmente " Agregar manualmente ".
  6. Seleccionamos el hub iBox / iBox2 para agregar.
  7. En la página que se abre, debe completar los campos IP e ID de puente (dirección mac del dispositivo conectado), puede encontrarlos, por ejemplo, en el panel de control del enrutador (mi concentrador está registrado en la red con el nombre del módulo HF-LPB100 utilizado en él). Añadir
  8. Genial, iBox / iBox2 ahora aparece en la lista de dispositivos con la inscripción " Online ".
  9. Haga clic en + de nuevo y seleccione Milight Binding , esta vez para agregar las lámparas directamente.
  10. Ahora no necesita agregar nada a mano, solo seleccione un grupo de lámparas de la lista (en mi caso, este es el elemento Color Rgbww (Zona 1) ).
  11. El elemento seleccionado debe aparecer en la lista de cosas con la inscripción " En línea ".

  12. Los dispositivos están configurados, ahora debe agregarles controles. Para hacer esto, haga clic en el elemento recién agregado.
  13. Se abre una lista de parámetros de la lámpara que podemos controlar de forma remota. Haga clic en el círculo azul Brillo .
  14. A continuación, seleccione el control con el que queremos asociar el parámetro del dispositivo, porque aún no los tenemos, haga clic en Crear nuevo elemento .
  15. Establezca un nombre arbitrario, por ejemplo Light_Switcher , y cambie el tipo de Dimmer a Switch , porque No tengo que ajustar el brillo de la lámpara, solo quiero encenderla y apagarla. Simplemente cambiamos la categoría a Light para que el control se muestre con un icono en la sección Control . Haga clic en enlace .
  16. Vaya a la sección Control y disfrute de la operación del interruptor de Brillo en el dispositivo.



4. Acceso externo a openHAB


Por razones de seguridad, después de las manipulaciones descritas anteriormente, la administración del servidor doméstico inteligente solo es posible desde la red local. Claramente, esto no es suficiente para nuestra tarea. Hay varias opciones de configuración : configurar una VPN para acceder desde Internet a una red local, configurar un proxy inverso o conectar su servidor al servicio de nube myopenHAB en myopenHAB.org. Dado que en Rusia el número de empleados de Roskomnadzor es directamente proporcional al número de usuarios de VPN y servidores proxy, utilizaremos esta última opción.
No multiplique cosas innecesariamente

  1. Nos registramos en el sitio web myopenHAB , iniciamos sesión y vamos a https://myopenhab.org/account . En esta página nos interesan dos campos: openHAB UUID y openHAB Secret . Le permiten organizar una conexión de servidor. Averigüemos dónde conseguirlos.
  2. Vamos al panel de control de PaperUI openHAB .
  3. Abra la sección ConfiguraciónComplementosVarios .
  4. Instale openHAB Cloud Connector .
  5. En ConfiguraciónServicios , debería aparecer el módulo openHAB Cloud con el modo " Notificaciones y acceso remoto ".
  6. En ConfiguraciónSistemaAdministración de complementos , el interruptor " Acceess Remote Repository " debe estar activado.
  7. Después de instalar el complemento, los datos que estamos buscando estarán en los archivos / var / lib / openhab2 / uuid y / var / lib / openhab2 / openhabcloud / secret ( userdata / uuid y userdata / openhabcloud / secret , si no lo instaló desde el paquete). Los ingresamos en la configuración de la cuenta en myopenHAB y hacemos clic en Actualizar . Si todo está configurado correctamente, la palabra " En línea " debería aparecer a la izquierda de su dirección de correo. Esto sugiere que el acceso a su hogar inteligente desde Internet está abierto, pero Alice no podrá usarlo de inmediato. Primero debe hacer que el dispositivo configurado previamente sea accesible desde el exterior.
  8. Vaya a ConfiguraciónServiciosopenHAB CloudConfigurar .
  9. En la lista Elementos para exponer a aplicaciones como IFTTT, active la casilla de verificación para el control de brillo y haga clic en Guardar .
  10. Después de un tiempo, verificamos que el elemento seleccionado aparezca en la página myopenhab.org/items con el estado " ON ".



El control de la lámpara ahora es posible desde Internet, a través de openHAB Cloud API, que admite la autorización OAuth2. Pero, desafortunadamente, los clientes están predeterminados de antemano, estos son Alexa, Google Assistant y el servicio IFTTT. Alice aún no está en esta lista. ¡Pero esto no es un problema!


5. IFTTT


Si es así, entonces.

Un servicio que le permite construir una cadena de acciones a partir de varios servicios. Responda condicionalmente con una acción en un servicio si un disparador para un evento en otro servicio ha funcionado. IFTTT admite una gran cantidad de servicios, incluido myopenHAB que nos interesa. Pero no es compatible con Alice. En general, cualquiera puede crear un módulo para su servicio allí, en primer lugar, debe ponerse en contacto con el departamento de ventas y averiguar el monto de su pago anual a favor de IFTTT. Nuestro objetivo es utilizar el servicio de forma gratuita para poder redirigir las solicitudes de Alice a openHAB.

  1. Nos registramos en el sitio web ifttt.com y vamos a AppletsNew Applet .
  2. Después de hacer clic en + esto , debe seleccionar el servicio en el que se desencadenará el evento. Porque El servicio de Alice no está en la lista, debemos elegir algo que pueda recibir comandos de ella. Este es un servicio de Webhooks . Haz clic en Conectar .
  3. A continuación, seleccione el activador " recibir solicitud web " de la lista con un elemento.
  4. Especifique el nombre del evento, por ejemplo light_on , y haga clic en Crear .
  5. Ahora tenemos que seleccionar la respuesta, haga clic en + eso . Nuestra elección de openHAB , plug.
  6. En la ventana que se abre, la autorización OAuth2 mencionada anteriormente, haga clic en Permitir .
  7. La única respuesta de comando de envío está disponible.
  8. En la lista desplegable, seleccione el control de la lámpara (por ejemplo, Light_Switcher) y especifique la palabra " ON " como la luz en el comando. Nosotros creamos

Para verificar, necesitamos llamar a un disparador en el servicio Webhooks. Como hacerlo Enviar una solicitud POST.

  1. Buscamos el servicio Webhooks en el sitio web de IFTTT y vamos a la documentación asociada a él.
  2. En la página que se abre, hay un comando que debemos ejecutar, reemplazando {event} con light_on .
  3. Después de hacer clic en Probarlo , la lámpara debería encenderse.

Queda por crear una receta similar para el evento light_off, que enviará el comando OFF al control de la luz. Y luego enseñe a Alice a llamar a estos disparadores a nuestra solicitud.




6. Alice


En mi orden, en mi deseo, Alice encenderá la luz si usa la plataforma Yandex.Dialogs . La plataforma se abrió en marzo de este año y permite que cualquiera agregue habilidades a Alice escribiendo el código apropiado. Por el momento, una gran cantidad de habilidades ya se presentan en el catálogo . El desarrollo de habilidades es un tema para un artículo separado sobre Habré, y aquí tenemos " sin una sola línea de código ". Entonces usaremos los desarrollos disponibles.

  1. Instalamos la versión beta de la aplicación de búsqueda Yandex , solo que actualmente es compatible con las habilidades del usuario .
  2. Decimos que Alice " activa hechizos mágicos ". Es la capacidad de los hechizos / hechizos mágicos lo que nos permitirá realizar solicitudes POST a los servidores IFTTT .
  3. Haga clic en Agregar y especifique la dirección para encender la luz del formulario:

     https://maker.ifttt.com/trigger/light_on/with/key/{user_id} 
  4. El siguiente paso es la expresión de una frase o palabra a la que Alice responderá completando una solicitud en la dirección especificada (mi Alice responde "enciende la luz").

Si ahora hace clic en el botón correspondiente o expresa la propuesta, la solicitud de los servidores de Yandex irá al servidor de habilidades, de allí a IFTTT, luego a myopenHAB, que transferirá los datos a su instancia local con acceso directo al centro de la lámpara y la luz se encenderá. Inmediatamente agregaremos un comando similar para apagar la iluminación.


Debes entender que encender a Alice y decir " enciende la luz " no es suficiente. Yandex no sabe nada acerca de nuestros equipos para hogares inteligentes, los datos sobre ellos se almacenan en la base de datos de la habilidad " hechizos mágicos ". Por lo tanto, primero debes llamar a la habilidad diciendo " enciende hechizos mágicos ", y solo luego enciende y apaga la luz con tu voz.

PS


El enfoque con la integración de Alice y openHAB a través de IFTTT no limita su imaginación. Puedes usar la habilidad de " hechizos mágicos " para controlar cualquier cosa en tu voz de casa inteligente. Por ejemplo, openHAB tiene carpetas para Samsung SmartTV, que le permite controlar el sonido y los canales del televisor. La interacción de Alice y Webhooks es una implementación de una interfaz de voz para todos los servicios IFTTT, los " hechizos mágicos " le permiten ejecutar el comando de cualquiera de ellos. O no puede usar Alice en absoluto y escribir su interfaz, por ejemplo, una aplicación móvil que ejecutará solicitudes IFTTT a través de los mismos Webhooks. Sí, y no es necesario utilizar IFTTT, por analogía, puede configurar los " hechizos mágicos " para cumplir con las solicitudes a su servidor.

Source: https://habr.com/ru/post/es412261/


All Articles