Como ensinar Alice a gerenciar sua casa inteligente. Relatório Yandex

No final de setembro, foi realizada a nossa primeira reunião para desenvolvedores de hardware - Yandex.Zhelezo. Este é um passo importante no mercado de novos fabricantes de dispositivos para nós. Os participantes (cerca de 150 pessoas) ouviram os relatórios, conversaram e passaram muito tempo nas arquibancadas, onde era possível olhar dentro do carro não tripulado, desarmar a “bomba” cortando os fios necessários, desmontar o Yandex. Computador de bordo Yandex.Auto e casa inteligente.





Apenas sobre a plataforma doméstica inteligente e fale hoje. Na primavera, o lançamos para todos os desenvolvedores e, no Yandex.Zhelez, o gerente de desenvolvimento de plataforma Marat Mavlyutov resumiu os primeiros resultados e mostrou como estabelecer o gerenciamento de dispositivos. No relatório, você pode aprender sobre os termos da API de voz, maneiras de descrever e interagir com o dispositivo de um usuário.



- Vamos falar sobre casa inteligente. Como tornar sua casa um pouco mais inteligente, para que nem um único gato fique com fome e todos os portões de Ecaterimburgo se abram? Vamos começar desde o início, vamos entender o que é uma casa inteligente. Parece-nos que esta é uma casa em que você não precisa procurar a tomada que está escondida atrás da cortina ou o interruptor. Esta é uma casa em que você não precisa procurar um controle remoto da TV, um telefone com um aplicativo que possa controlar sua chaleira ou lâmpada. Esta é uma casa que você entende, na qual uma pessoa usa a interface mais nativa e natural para ela - a voz.

Por que subimos lá e o que queremos obter? Queremos realmente garantir que nosso assistente de voz seja apenas um assistente, para que ele possa não apenas ativar a música ou o vídeo, mas ajudar nas coisas mais naturais do dia a dia.

Também entendemos que não podemos escrever todo o código do mundo e nos integrar a todos os dispositivos. É por isso que queremos que essa interface de voz forneça desenvolvedores, empresas, pessoas que já sabem como fabricar dispositivos e torná-los legais. A Ericsson diz que até 2021 haverá 28 bilhões de dispositivos domésticos inteligentes conectados em todo o mundo. Isso significa, por um momento, que se você imaginar o mundo inteiro conectado à Internet, cada pessoa terá uma média de quatro dispositivos.



Pouco antes do lançamento, realizamos pesquisas para entender como as pessoas usam casas inteligentes, o que desejam ver e o que desejam gerenciar. Escolhemos os três principais destinos:
- controle de TVs, receptores AV, dispositivos de mídia etc.,
- controlo dos dispositivos de iluminação e iluminação,
- controle de temperatura - ar condicionado, termostato, bateria, caldeira, etc.

O próximo slide tem estatísticas. Por exemplo, começamos há apenas quatro meses, em maio, e agora vemos que o número médio de dispositivos em nossa plataforma para cada usuário é 3,8. Eu olhei ontem, eram 3,93. E há dois meses, esse número era de 3,2. Isso significa que as pessoas não apenas usam casas inteligentes, mas também compram dispositivos de que gostam. Estamos orgulhosos da seguinte figura: 96% dos usuários controlam sua casa inteligente usando voz, embora todos tenham um aplicativo através do qual esses dispositivos inteligentes também possam ser controlados.

E entendemos as limitações da API atual, ainda há muito pouco que possa ser conectado ou descrito. Porém, fabricantes, entusiastas ou desenvolvedores puderam se integrar à nossa plataforma, de modo que agora vemos mais de 800 modelos de dispositivos diferentes nela. Estes são precisamente os modelos de dispositivos: todos os tipos de chaleiras, condicionadores de ar, TVs, etc.



Repito, estamos em produção há apenas quatro meses, mas essas grandes empresas distribuídas já conseguiram se integrar à nossa plataforma e acredito que esse é um mérito muito grande da equipe. Isso sugere que nossa API é bastante simples, de modo que as pessoas puderam se integrar ao Yandex em quatro meses.



De desenvolvedores independentes e entusiastas, vemos pessoas escrevendo habilidades como casa inteligente. Assim, eles integram nossa plataforma a outros sistemas: openHAB, Homebridge, Home Assistant, por exemplo, para que os dispositivos afiados pelo ecossistema da Apple também possam trabalhar com Alice. Existem alguns casos de aplicação de nossos parceiros. Pensamos que a casa inteligente da Yandex será voltada para os entusiastas que estão apenas começando a impulsionar esse mercado. Mas pessoas de indústrias completamente diferentes, quase sem Yandex, vieram até nós e disseram que desejam fazer instalações com uma casa inteligente.

Por exemplo, há um caso bem conhecido com o desenvolvedor PIK e Rubetek. Como uma das principais ofertas de decoração de apartamentos, eles apresentam uma casa inteligente na plataforma Yandex. Em tais apartamentos, em salas de exposição já existentes, o usuário pode pedir a Alice para fazer café, abrir as cortinas ou controlar a luz. Também estamos trabalhando com desenvolvedores de escritório no momento. Eles querem, por exemplo, incorporar Alice em suas salas de reuniões para que possam zumbir na sala de reuniões, ligar para outra cidade ou controlar, novamente, algum tipo de luminária. E também começamos algumas experiências com hotéis. Você pode pedir o café da manhã no seu quarto, trocar o travesseiro por um mais quente ou ligar algum canal pago.

Vamos agora mergulhar um pouco nos detalhes técnicos. O esquema de trabalhar com uma casa inteligente é bastante simples. Existem muitos fabricantes de dispositivos inteligentes, e todos esses dispositivos podem ser controlados por meio de um telefone celular. Isso significa que todos esses fabricantes têm algum tipo de API com a qual o usuário clica no celular, o celular envia alguns pedidos para a nuvem, respectivamente, desse fabricante, e o dispositivo liga, desliga, o brilho muda, alguns parâmetros.

Nesse sentido, é nessa direção que queremos integrar. Podemos dizer que o usuário não cutuca o telefone, mas fala com voz, por exemplo. E envie exatamente a mesma solicitação para a nuvem deste fabricante. Isso é chamado de interação nuvem a nuvem. No próximo slide, é descrito em detalhes.



Ou seja, uma pessoa controla usando um telefone celular ou voz. Servidores Yandex adicionais saem da nuvem do fabricante correspondente e o dispositivo é ligado.



Como a Yandex descobre o dispositivo que um usuário possui? Para fazer isso, usamos o procedimento padrão. É chamado de vinculação de conta Oauth2. O usuário só precisa acessar o aplicativo Yandex, vincular o que é chamado de contas. Grosso modo, nos dedos, funciona assim.

Quando queremos conectar nossa conta à Philips, o usuário digita seu nome de usuário, senha ou informa um token especial e, supostamente, passamos esse token ao nome de usuário da Philips.



A segunda parte principal da qual o protocolo de casa inteligente consiste são as intenções de voz. O primeiro e mais importante é o Discovery. Com um token de usuário, vamos para a nuvem do fabricante correspondente, e o fabricante nos diz: o usuário possui esses dispositivos. E então tudo é simples. Consulta, Ação. A Yandex vem com uma solicitação ao Query para descobrir em que status o dispositivo está - o ferro está desligado, ligado ou qual a temperatura do ar condicionado no momento. E ação, isso significa que o status atual precisa ser alterado. Desvincular ocorre quando um usuário decide quebrar o pacote de contas, para que o Yandex esqueça completamente todos os dispositivos que são.



Vamos descer ainda mais fundo e ver como todas essas intenções funcionam. Em primeiro lugar, esses são os tipos de dispositivo - tipo de dispositivo. Os tipos de dispositivos afetam apenas representações de dispositivos na interface. Estes são layouts especiais no aplicativo móvel. Além disso, o mais importante é provavelmente que os tipos de dispositivos generalizem algum tipo de representação de voz, alguns comandos de voz. Ou seja, não importa como o usuário chama sua lâmpada, ele ainda deve responder à palavra "luz", por exemplo. Ou isso não deveria ser importante, o usuário diz "ligue o ar condicionado" ou "condomínio". Além disso, este ar condicionado pode ser chamado de qualquer forma.

E segundo, para entender como controlar o dispositivo, precisamos saber que esse dispositivo pode. Chamamos essas coisas de capacidades. Ou seja, é como um bloco de construção, que fala sobre o que o dispositivo pode fazer.



Um pouco mais sobre o tipo de dispositivo. No começo, tínhamos seis, na minha opinião. Agora, crescemos para essa quantidade. Por exemplo, há duas semanas eles lançaram openable, e os caras conseguiram abrir seus portões. Agora eles podem dizer: "Alice, abra o portão" e não "Alice, ligue o portão", por exemplo.



Agora vamos falar sobre recursos, quais recursos estão disponíveis e como fazer Alice entender como gerenciar seu dispositivo.

A primeira coisa mais importante e mais simples é on_off. Quase todos os dispositivos têm esse recurso. Para dizer a Alice que o dispositivo pode ligar e desligar, basta adicionar essas duas linhas de Jason e definir o sinalizador recuperável. Esse sinalizador significa que você pode descobrir no dispositivo atual se está ligado ou não.

Um exemplo simples com uma TV. Todos vocês provavelmente têm uma TV em casa e, olhando para o controle remoto, é impossível entender se a TV está ligada ou desligada, é claro, se esse controle remoto é infravermelho.



O próximo tipo de recurso que descreve luminárias é color_setting. Ele também tem uma bandeira recuperável. Mas o mais importante, esses dois parâmetros são color_model. Usando esse parâmetro, o fabricante nos diz que ele sabe como controlar as cores. Essa cor pode estar no modo hsv ou rbg.



E o segundo é a gradação de branco. Ou seja, pode-se dizer que minha lâmpada pode estar branca fria, amarela quente e assim por diante, para que o usuário possa dizer: "por favor, aqueça a luz".



A seguir, abordaremos os recursos, generalizando determinados modos. Uma analogia muito boa com a interface são os botões de opção, quando você precisa escolher um dos vários modos. Ou pense em uma máquina de lavar do tipo krutilochka, onde há definitivamente um modo de "roupa de algodão", "lavagem delicada" etc.



Aqui é importante descobrir exatamente qual instância desse modo vale a pena. Instância atual, já existem seis deles. Mas são precisamente aqueles que implementamos desde o primeiro estágio, esta é uma instância do ar condicionado - modo automático, refrigeração etc. Ou, por exemplo, existe o modo de operação do ventilador mais lento, médio ou automático.

E com relação ao modo, podemos dizer: "Por favor, ative o próximo modo". E é muito conveniente para aparelhos de ar condicionado ou para a mesma máquina de lavar.



Outra capacidade é o alcance. Aplicado à analogia das interfaces, esse tipo de controle deslizante, do valor mínimo ao máximo, pode regular alguma coisa. Esse controle deslizante também tem instância. Por exemplo, temperatura, volume, brilho etc., quase qualquer faixa que possa ser descrita. Esta unidade, porque algumas pessoas, como se viu, para verificar os aparelhos de ar condicionado, dizem a temperatura em Fahrenheit. E estas, portanto, são temperaturas completamente diferentes. Quando uma pessoa pede inclusão em Fahrenheit ou Celsius, isso também precisa ser entendido.

O sinalizador de acesso aleatório provavelmente é bem conhecido para você; é nesse momento que podemos fornecer o número exato para definir o valor nesse intervalo. Um exemplo bastante simples, novamente, com televisões. O volume só pode ser controlado para cima e para baixo. E a temperatura nos aparelhos de ar condicionado pode ser especificada com precisão.

E a própria descrição do intervalo, quando sabemos algum valor mínimo, valor máximo e o pequeno passo com o qual podemos alterar esse valor. Nos aparelhos de ar condicionado, novamente, pode ser algum tipo de todo, ou em frações de dezenas.



O último recurso é semelhante à interface, é algum tipo de marca de seleção. Lembre-se, em computadores antigos havia um modo turbo - você pressiona e o computador roda mais rápido? Aqui você diz: "Alice, desligue o som", pressionamos o botão mudo e o som desaparece. Podemos dizer, provavelmente, que este é algum tipo de modo binário.

E uma combinação de todos esses recursos, todas as habilidades. Podemos descrever todos os tipos de dispositivos que estão atualmente no mercado.



Por exemplo, uma lâmpada inteligente. Ela sabe como ligar, desligar. Ela sabe como ajustar a cor e sabe como ajustar o brilho. Mas se tudo é simples com uma lâmpada, vamos tentar juntos descrever outro dispositivo. Por exemplo, uma chaleira.



O que você acha que uma chaleira inteligente deve poder fazer? Dei uma dica, uma captura de tela da interface do aplicativo Yandex. Como você descreveria a chaleira? Temperatura Mais? Sim, ligue e desligue. A chaleira é um dispositivo bastante simples. Ele sabe como ligar e desligar e, por exemplo, meu chá verde favorito, eu quero fazê-lo a 85 graus. Tem água? Sim, um bom argumento. Aqui estamos aguardando informações do fabricante.



Eu gostaria de falar sobre outros dispositivos. Um dos dispositivos mais sofisticados disponíveis no momento é o ar condicionado. O que você acha que o ar condicionado deveria poder fazer? Quente ou frio. Ajuste a temperatura. Modo com cortinas. Velocidade do ventilador. Tudo está correto. E o ar condicionado, que agora pode ser descrito em nossa capacidade, pode fazer tudo isso. Ele sabe como ligar, desligar, selecionar o modo de refrigeração, ajustar a temperatura e a velocidade do ventilador, com o qual sopra ar frio ou quente. Pode haver ar puro no modo sem ar condicionado.



Vamos descer ainda mais e ver que tipo de respostas esperamos dos fabricantes ao descrever dispositivos. Esta é a intenção de descoberta. Há um pouco de YAML aqui, mas é muito fácil de ler.

No momento em que o usuário associa as contas, perguntamos ao fabricante o que esse usuário possui, quais dispositivos - apenas para entender como gerenciá-las.

Em primeiro lugar: estamos aguardando o user_id desse usuário e uma lista de dispositivos.



Apenas um dispositivo é descrito aqui: o usuário possui uma lâmpada, devices.types.light. A propósito, pode ser não apenas uma lâmpada. Pode ser algum tipo de fita RGB ou um cortador de grama com luz de fundo. Isso não importa para nós. O principal é que ele reage à palavra "luz" e que na interface podemos desenhar a capacidade, que é responsável pela luz.



Nosso cortador de grama parece saber como ligar e desligar. Ela sabe como mudar o brilho. E ela sabe como ajustar a cor. E não apenas a cor - este equipamento de iluminação também possui ajuste de temperatura da cor.



Suponha que um usuário pergunte: "Alice, qual é o estado da minha lâmpada agora?" ou "Alice, minha luz está acesa?" Em seguida, enviamos essa pergunta ao fornecedor, dizemos que esse dispositivo deve ser perguntado em que modo de cor ele está agora e se o próprio dispositivo está ligado.





Se o usuário quiser alterar esse modo, ele poderá, por exemplo, dizer: "Alice, apague a luz". Há uma lâmpada com o ID abc-123, "Desligue-o", com valor falso.



Estamos aguardando o fabricante do dispositivo do outro lado da nuvem nos responder: ok, luz abc-123, action_result, status DONE. Então a luz se apagou.



Um pouco mais sobre os scripts. Entendemos que os usuários desejam não apenas gerenciar seus dispositivos individualmente, mas também agrupá-los. Por exemplo, quando acordam, dizem: "Alice, bom dia" e desejam uma certa combinação de ações.

Assim, no aplicativo Yandex, você pode dizer isso, e Alice liga algumas músicas, apaga a luz noturna, a chaleira começa a funcionar, ferve a água para fazer o seu café favorito.



Sobre os planos. Entendemos que o trabalho em sua forma atual, embora permita descrever um grande número de dispositivos, mas, por exemplo, não permite que você receba informações de sensores. Não conseguiremos configurar nenhum evento nos cenários para que possamos entender pelo sensor de vazamento, fumaça ou abertura da porta que algo aconteceu. Nosso objetivo é fazê-lo. Também entendemos que no momento não somos capazes de controlar o fluxo de mídia. O exemplo mais simples é que um mensageiro chegou à sua casa com pizza quente e um empurrão com uma foto dessa pessoa chega ao seu telefone. Isso é super! Agora é impossível fazer isso com os recursos atuais - provavelmente, serão exibidos recursos que descrevem as câmeras.

Sobre os sensores, tocarei em um tópico escorregadio - IFTTT. Com o IFTTT, queremos executar um script não apenas em voz, como é feito agora. Queremos executá-los em diferentes eventos: no cronômetro, horários, nascer ou pôr do sol e outros eventos. E realmente queremos que a casa inteligente não seja apenas para geeks que entendem por que precisam transferir sua senha de uma lâmpada Wi-Fi. Queremos que as pessoas que não estão absolutamente conectadas com a casa inteligente ou que não entendam como ela funciona comprem algum tipo de chaleira, máquina de lavar roupa, lâmpada, não importam. E Alice disse: “Parece que você tem algum tipo de dispositivo novo para mim em sua casa. Deseja conectá-lo? E tudo para trabalhar imediatamente.

Para concluir, quero dizer: para usar essa tecnologia, casa inteligente, você só precisa ler a documentação e descrever corretamente seu dispositivo usando os tipos de dispositivos e os recursos existentes. Obrigada

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


All Articles