Cómo hacer amigos Alice y HomeBridge

imagen

UPD 08/06/2019: Sucedió, se hizo posible pedirle a la propia Alice que encienda la luz . El proyecto está en el github . Comprobado en su puente de origen, todo funciona. Considero que el apoyo adicional de mi habilidad no es apropiado.

Durante mucho tiempo he deseado, además de la casa inteligente, un asistente de voz que entienda y hable ruso. Como resultado, decidí arriesgarme y tomar una nueva columna cruda de Yandex. Estación con una joven pero ya querida por muchos Alice. La primera impresión fue excelente, pero cuando escuché muchas bromas y hablé lo suficiente, comencé a aprender el lado práctico de la columna. Sobre todo, estaba interesado en el tema de la interacción de Alice con el hogar inteligente.

Descripción del problema
Mi casa está basada en un servidor HomeBridge . Se han escrito muchos artículos ( uno , dos , tres ) sobre su configuración y uso en el concentrador y otros recursos, por lo tanto, no me detendré en esto. Al no haber estudiado a fondo la pregunta, estaba seguro de que el catálogo de habilidades de Alice ya tenía muchas soluciones para interactuar con los sistemas inteligentes de control del hogar. Resultó que en el momento de la escritura, la mayoría de las habilidades sobre el tema "Hogar inteligente" requieren un dispositivo con una pantalla para el trabajo, que no es adecuado para la estación. La única habilidad que parecía cumplir con los requisitos y saber trabajar sin pantalla era Alfred . La habilidad no me convenía porque está vinculada a un servicio: IFTTT. Supongamos que quiero crear un conmutador virtual que funcione en un sistema doméstico inteligente y le permita vincular los scripts a su estado actual. Alfred usa el servicio WebHook para IFTTT con el que solo puede actuar sobre el disparador creado en el applet IFTTT, pero no hay forma de obtener el estado actual del applet (puede encender o apagar el interruptor, pero no puede averiguar en qué estado se encuentra ahora el interruptor).

Para resolver el problema anterior, se creó el servicio Alice-HomeBridge , diseñado para conectar el asistente de voz Yandex.Alice y varios sistemas inteligentes de control del hogar. Además, como ejemplo de configuración, consideraremos la configuración de HomeBridge, pero este enfoque también es aplicable a otros sistemas como Home Assistant , openHAB y otros.

El servicio permite a los usuarios, después de registrarse en el sitio, crear conmutadores virtuales.



Puede cambiar o averiguar el estado de los conmutadores utilizando una solicitud de servicio GET especialmente generada.



Para que el servicio interactúe con el asistente de voz "Alice", se creó la habilidad "Lazy Jimmy".

Perezoso jimmy
Dígale a Alice: "Ejecute la habilidad Jimmy perezoso" y él le ofrecerá que le informe sobre el código de activación, que puede encontrar en su cuenta personal .



Después de la activación, puede cambiar el estado de sus interruptores utilizando los comandos Activar o Desactivar. Por ejemplo, si dice "Encienda la luz", el estado del interruptor "Luz" cambia a positivo. Si solo dice "Luz", el estado del interruptor cambiará a lo opuesto.

Para que el diálogo suene más natural, existe la oportunidad de crear interruptores con nombres más comprensibles, por ejemplo, "Con Utrechk", entonces puede decirle a Alice "Dile a Jimmy con Utrechk" y el estado del interruptor cambiará.

Queda por configurar HomeBridge. Por ejemplo, usaremos la extensión cmdswitch2 . Cree un interruptor para HomeKit llamado "Alice Button 1".

{ "platform": "cmdSwitch2", "name": "CMD Switch", "switches": [ { "name": "Alice Button 1", "on_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=true\"", "off_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=false\"", "state_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=get\" | grep -oh \"true\"", "polling": true, "interval": 2 } ] } 

Para no sobrecargar el servidor con solicitudes innecesarias, establezca el parámetro de intervalo en al menos 2 segundos.

Todo esta listo.



Ahora, si dice: "Alice dile al flojo Jimmy con la palabra de la mañana", el interruptor "Alice Button 1" cambiará de estado. Aquí hay una demostración de cómo funciona todo junto con los scripts personalizados de HomeKit:


Versión completa del archivo de configuración de HomeBridge

PD La mayoría de los sistemas de administración inteligente del hogar, como HomeKit, admiten scripting. Puede crear una secuencia de comandos que le gustaría utilizar en una situación específica, por ejemplo, cuando se despierte y asignarle una llamada al evento "Encienda el interruptor Utrechk".

PD: Mi servicio se está desarrollando y sigue siendo, por decirlo suavemente, lejos de ser ideal. Pero Alice también se niega a aceptar ciertas frases de vez en cuando. Por ejemplo, ella transmite perfectamente la frase "Enciende la luz" a la habilidad, pero no pasará la frase "Buenos días". Espero que Yandex sepa sobre el problema y lo arregle pronto. Esperando sus comentarios.

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


All Articles