"Alice, acenda a luz." Controle de voz de uma casa inteligente com base no openHAB. Sem programação e SMS


Em novembro de 2017, o número onze foi exibido no calendário. A venda no Aliexpress estava a todo vapor, suas mãos arranhavam algo para comprar. A escolha recaiu sobre a " Iluminação inteligente com controle remoto da lâmpada AC86-265V da Mi-light RGBW ". Como resultado, foram adquiridas duas cópias de potência máxima, a 9 watts, e um controlador de hub MiLight WiFi iBox. A entrega da China não demorou a chegar e, 4 meses depois, em 13 de março de 2018, foi aberta a plataforma Yandex.Dialogs (uma plataforma que permite que desenvolvedores terceirizados adicionem habilidades à assistente de voz Alice). Em seguida, Alice aprenderá a controlar a iluminação (e não apenas) no seu apartamento, e nós a ajudaremos com isso, em etapas e sem uma única linha de código.

  1. Configuração da lâmpada inteligente Xiaomi
  2. Instale o openHAB
  3. Controle de luz através do openHAB
  4. Acesso externo ao openHAB
  5. IFTTT
  6. Alice


1. Configurando lâmpadas inteligentes da Xiaomi.


A primeira coisa a fazer é configurar o controle da lâmpada, pelo menos usando o aplicativo da Xiaomi. Se esse estágio for passado para você, sinta-se à vontade para prosseguir com a configuração de um servidor doméstico inteligente, ou ainda mais, diretamente para a integração de Alice e openHAB. Mas, primeiro as primeiras coisas. As lâmpadas em si não se conectam ao seu roteador doméstico; para isso, você precisa de um hub iBox que possa controlar até quatro grupos de fontes de luz. Você precisa conectá-lo à rede e, em seguida, conectar as lâmpadas a ele.

  1. Fornecemos energia ao iBox conectando-o via usb, por exemplo, a um carregador para o telefone.
  2. Ao conectar pela primeira vez, você precisa redefinir o hub, então pressione RST .
  3. Em seguida, instale o aplicativo da Xiaomi para iOS ou Android no telefone. Verifique se o telefone está conectado à rede Wi-Fi doméstica.
  4. Abra o aplicativo Mi-Light 3.0 , clique em + . Aqui estamos interessados ​​na guia Smart Link .
  5. Digite o nome e a senha da rede Wi-Fi doméstica à qual o telefone está conectado e está planejado conectar o iBox .
  6. Agora o seu iBox deve estar conectado à rede e os indicadores SYS e LINK devem piscar, lenta e rapidamente, respectivamente. Caso contrário, pressione RST novamente.
  7. Se os indicadores piscarem, clique no aplicativo Start Configuration , o processo de configuração da conexão para o hub será iniciado.
  8. Após cerca de dez segundos, o piscar irá parar, o SYS começará a piscar lentamente novamente e o LINK permanecerá ligado. O aplicativo exibe Configurado . O hub está conectado à rede. Se não estiver na lista de dispositivos , basta clicar em Procurar dispositivo .

Você já pode controlar a cor e o brilho do próprio iBox, mas precisamos conectar as lâmpadas. Para fazer isso, ligue as lâmpadas a uma das quatro zonas disponíveis para o hub para controle.

  1. Abrimos no aplicativo Mi-Light 3.0 a partir da lista do hub Mi-Light . Vá para a seção Cores .
  2. Na parte superior da tela, selecione uma das zonas, que seja Zona1 . E clique no ícone de emparelhamento de dispositivo no canto superior direito. A tela LINK / UNLINK com instruções é exibida .
  3. Agora, configurando as lâmpadas que queremos vincular à Zona1 , seu gerenciamento no futuro ocorrerá de forma síncrona. Para controlar o brilho e a cor de cada lâmpada individualmente, eles devem ser atribuídos a zonas separadas. Portanto, acenda a lâmpada e, nos primeiros três segundos, clique no aplicativo Link . Se a lâmpada piscar três vezes, tudo está bem, a sincronização foi bem-sucedida. Você pode controlar a lâmpada.


Basicamente, nesta fase, você já possui um controle remoto para controle remoto da luz. Além disso, você pode escrever seu próprio sistema de controle de iluminação, já que o protocolo de comunicação com o hub é conhecido há muito tempo (ele já estava disponível em limitlessled.com/dev ). Existem bibliotecas prontas em php , javascript , python . Mas o gerenciamento é possível apenas a partir da rede local, o que claramente não é suficiente para Alice. Vamos tentar resolver esse problema.


2. Instale o openHAB


Resumidamente, o que é o openHab . Este é um servidor de gerenciamento doméstico inteligente de código aberto. Desenvolvido pela comunidade, suporta o gerenciamento de um grande número de dispositivos. Existe um cliente móvel, existe a possibilidade de gerenciar o Alexa da Amazon e um assistente do Google. Escrito em java, com base na estrutura Eclipse SmartHome . Para que possa ser instalado mesmo em uma geladeira, o principal é que a máquina virtual Java seja executada nessa geladeira. As instruções de instalação são para Linux , Windows , Mac OS , Raspberry Pi , para vários Synology de armazenamento em rede e QNAP . Consulte rapidamente a primeira opção.

  1. Adicione chaves de repositório:

    wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https 
  2. Adicione o próprio repositório:

     echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list 
  3. Atualizamos e instalamos o servidor junto com os 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 o início automático do serviço após a reinicialização do dispositivo e o iniciamos:

     sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service 
  5. Agora esperamos na região de 15 a 20 minutos (isso não é um exagero, é uma dura realidade com piadas sobre a velocidade do Java), enquanto ele é http://openhab-device:8080 interface http://openhab-device:8080 Web aparece no endereço http://openhab-device:8080 .
  6. Nesta página, estamos interessados ​​no item Paper UI . É com esse tipo de interface que trabalharemos no futuro.




3. Controle de luz através do openHAB


Portanto, temos um servidor doméstico inteligente e lâmpadas da Xiaomi com a possibilidade de controle remoto. É necessário conectá-los. O openHAB suporta aglutinantes (instruções para controlar eletrônicos conectados) para muitos dispositivos, incluindo essas lâmpadas.

  1. Vá para ComplementoLigações .
  2. Instale o Milight Binding .
  3. Para adicionar nosso dispositivo, clique em + na seção ConfiguraçãoCoisas .
  4. Selecionamos Milight Binding , a busca automática pelo dispositivo começa.
  5. Como não encontrei nada automaticamente, adicionei manualmente a opção " Adicionar manualmente ".
  6. Selecionamos o hub iBox / iBox2 a ser adicionado.
  7. Na página que é aberta, é necessário preencher os campos IP e ID da ponte (endereço mac do dispositivo conectado), você pode encontrá-los, por exemplo, no painel de controle do roteador (meu hub está registrado na rede com o nome do módulo HF-LPB100 usado). Adicionar.
  8. Ótimo, o iBox / iBox2 agora aparece na lista de dispositivos com a inscrição " Online ".
  9. Clique em + novamente e selecione Milight Binding , desta vez para adicionar as lâmpadas diretamente.
  10. Agora você não precisa adicionar nada manualmente, basta selecionar um grupo de lâmpadas da lista (no meu caso, esse é o item Rgbww Color (Zona 1) ).
  11. O item selecionado deve aparecer na lista de itens com a inscrição " Online ".

  12. Os dispositivos estão configurados, agora você precisa adicionar controles a eles. Para fazer isso, clique no item recém-adicionado.
  13. Uma lista de parâmetros da lâmpada que podemos controlar remotamente é aberta. Clique no círculo azul Brilho .
  14. Em seguida, selecione o controle ao qual queremos associar o parâmetro device, porque ainda não os temos, clique em Criar novo item .
  15. Defina um nome arbitrário, por exemplo, Light_Switcher e altere o tipo de Dimmer para Switch , porque Não preciso ajustar o brilho da lâmpada, só quero ligar e desligar. Simplesmente alteramos a categoria para Light para que o controle seja exibido com um ícone na seção Control . Clique em Link .
  16. Vá para a seção Controle e aproveite a operação do interruptor Brilho no dispositivo.



4. Acesso externo ao openHAB


Por motivos de segurança, após as manipulações descritas acima, o gerenciamento do servidor doméstico inteligente é possível apenas na rede local. Claramente, isso não é suficiente para a nossa tarefa. Existem várias opções de configuração : configure uma VPN para acessar da Internet em uma rede local, configure um proxy reverso ou conecte seu servidor ao serviço de nuvem myopenHAB em myopenHAB.org. Como na Rússia o número de funcionários da Roskomnadzor é diretamente proporcional ao número de usuários de servidores VPN e proxy, usaremos a última opção.
Não multiplique coisas desnecessariamente

  1. Registramos no site myopenHAB , efetuamos login e acessamos https://myopenhab.org/account . Nesta página, estamos interessados ​​em dois campos: openHAB UUID e openHAB Secret . Eles permitem que você organize uma conexão com o servidor. Vamos descobrir onde obtê-los.
  2. Vamos ao painel de controle PaperUI openHAB .
  3. Abra a seção ConfiguraçãoComplementosMisc .
  4. Instale o openHAB Cloud Connector .
  5. Em ConfiguraçãoServiços , o módulo openHAB Cloud com o modo " Notificações e acesso remoto " deve aparecer.
  6. Em ConfiguraçãoSistemaGerenciamento de Complementos, a opção " Acessar Repositório Remoto " deve estar ativada.
  7. Após a instalação do complemento, os dados que procuramos estarão nos arquivos / var / lib / openhab2 / uuid e / var / lib / openhab2 / openhabcloud / secret (dados do usuário / uuid e dados do usuário / openhabcloud / secret , se você não os instalou no pacote). Nós os inserimos nas configurações da conta no myopenHAB e clique em Atualizar . Se tudo estiver configurado corretamente, a palavra " Online " deverá aparecer à esquerda do seu endereço de email. Isso sugere que o acesso à sua casa inteligente pela Internet é aberto, mas Alice não poderá usá-lo imediatamente. Primeiro, você precisa tornar o dispositivo configurado anteriormente acessível a partir do exterior.
  8. Vá para ConfiguraçãoServiçosopenHAB CloudConfigurar .
  9. Na lista Itens a serem expostos a aplicativos, como IFTTT, ative a caixa de seleção do controle de brilho e clique em Salvar .
  10. Depois de um tempo, verificamos se o item selecionado está listado na página myopenhab.org/items com o status " ON ".



Agora, o controle da lâmpada é possível na Internet, por meio da API do openHAB Cloud, que suporta a autorização do OAuth2. Infelizmente, os clientes são predeterminados com antecedência, como Alexa, Google Assistant e IFTTT. Alice ainda não está nesta lista. Mas isso não é um problema!


5. IFTTT


Se for então, então.

Um serviço que permite criar uma cadeia de ações a partir de vários serviços. Responda condicionalmente com uma ação em um serviço se um gatilho para um evento em outro serviço tiver funcionado. O IFTTT suporta um grande número de serviços, incluindo o myopenHAB que nos interessa. Mas não suporta Alice. Em geral, qualquer pessoa pode criar um módulo para seu serviço lá. Antes de tudo, é necessário entrar em contato com o departamento de vendas e descobrir o tamanho do seu pagamento anual em favor da IFTTT. Nosso objetivo é usar o serviço gratuitamente para poder redirecionar solicitações de Alice para o openHAB.

  1. Registramos no site ifttt.com e acessamos AppletsNew Applet .
  2. Depois de clicar em + isso , você precisa selecionar o serviço no qual o evento será um gatilho. Porque O serviço de Alice não está na lista, precisamos escolher algo que possa receber comandos dela. Este é um serviço Webhooks . Clique em conectar .
  3. Em seguida, selecione o gatilho " receber solicitação da web " na lista com um item.
  4. Especifique o nome do evento, por exemplo light_on , e clique em Criar .
  5. Agora precisamos selecionar a resposta, clique em + isso . Nossa escolha de openHAB , plug.
  6. Na janela que se abre, a autorização OAuth2 mencionada anteriormente, clique em Permitir .
  7. A única resposta do comando send está disponível.
  8. Na lista suspensa, selecione o controle da lâmpada (por exemplo, Light_Switcher) e, como comando para acender a luz, especifique a palavra " ON ". Nós criamos.

Para verificar, precisamos chamar um gatilho no serviço Webhooks. Como fazer isso? Envie uma solicitação POST.

  1. Pesquisamos o serviço Webhooks no site da IFTTT e vamos para a documentação associada a ele.
  2. Na página que é aberta, há um comando que precisamos executar, substituindo {event} por light_on .
  3. Depois de clicar em Testar , sua lâmpada deve acender.

Resta criar uma receita semelhante para o evento light_off, que enviará o comando OFF para o controle de luz. E então ensine Alice a chamar esses gatilhos a nosso pedido.




6. Alice


Na minha ordem, no meu desejo, Alice acenderá a luz se você usar a plataforma Yandex.Dialogs . A plataforma foi inaugurada em março deste ano e permite que qualquer pessoa adicione habilidades a Alice escrevendo o código apropriado. No momento, um grande número de habilidades já é apresentado no catálogo . O desenvolvimento de habilidades é um tópico para um artigo separado sobre Habré, e aqui temos " sem uma única linha de código ". Então, vamos usar os desenvolvimentos disponíveis.

  1. Instalamos a versão beta do aplicativo de pesquisa Yandex , mas atualmente ele oferece suporte para as habilidades do usuário .
  2. Dizemos que Alice " ativa feitiços ". É a capacidade de magias / magias que nos permitirá executar solicitações POST para servidores IFTTT .
  3. Clique em Adicionar e especifique o endereço para acender a luz do formulário:

     https://maker.ifttt.com/trigger/light_on/with/key/{user_id} 
  4. O próximo passo é a pronunciação de uma frase ou palavra à qual Alice responderá completando uma solicitação no endereço especificado (minha Alice responde "acenda a luz").

Se você agora clicar no botão correspondente ou dar voz à proposta, a solicitação dos servidores Yandex irá para o servidor de habilidades, de lá para o IFTTT e depois para o myopenHAB, que transferirá os dados para sua instância local com acesso direto ao hub da lâmpada e a luz acenderá. Adicionaremos imediatamente um comando semelhante para desligar a iluminação.


Você precisa entender que apenas ligar Alice e dizer “ acenda a luz ” não é suficiente. O Yandex não sabe nada sobre nossas equipes para residências inteligentes, os dados sobre eles são armazenados no banco de dados da habilidade " feitiços mágicos ". Portanto, você primeiro precisa chamar a habilidade dizendo " ativar feitiços mágicos " e só então ligar e desligar a luz com sua voz.

PS


A abordagem com a integração de Alice e openHAB através do IFTTT não limita sua imaginação. Você pode usar a capacidade de " feitiços mágicos " para controlar qualquer coisa na sua voz doméstica inteligente. Por exemplo, o openHAB possui pastas para o Samsung SmartTV, que permitem controlar o som e os canais da TV. A interação de Alice e Webhooks é uma implementação de uma interface de voz para todos os serviços IFTTT, " feitiços mágicos " permitem executar o comando de qualquer um deles. Ou você não pode usar Alice e escrever seu front-end, por exemplo, um aplicativo móvel que executará solicitações de IFTTT através dos mesmos Webhooks. Sim, e o IFTTT não é necessário, por analogia, você pode configurar os " feitiços mágicos " para atender solicitações ao seu servidor.

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


All Articles