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.
- Configuração da lâmpada inteligente Xiaomi
- Instale o openHAB
- Controle de luz através do openHAB
- Acesso externo ao openHAB
- IFTTT
- 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.
- Fornecemos energia ao iBox conectando-o via usb, por exemplo, a um carregador para o telefone.
- Ao conectar pela primeira vez, você precisa redefinir o hub, então pressione RST .
- Em seguida, instale o aplicativo da Xiaomi para iOS ou Android no telefone. Verifique se o telefone está conectado à rede Wi-Fi doméstica.
- Abra o aplicativo Mi-Light 3.0 , clique em + . Aqui estamos interessados na guia Smart Link .
- Digite o nome e a senha da rede Wi-Fi doméstica à qual o telefone está conectado e está planejado conectar o iBox .
- 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.
- Se os indicadores piscarem, clique no aplicativo Start Configuration , o processo de configuração da conexão para o hub será iniciado.
- 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.
- Abrimos no aplicativo Mi-Light 3.0 a partir da lista do hub Mi-Light . Vá para a seção Cores .
- 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 .
- 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.
- 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
- 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
- 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
- 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
- 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
. - 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.
- Vá para Complemento → Ligações .
- Instale o Milight Binding .
- Para adicionar nosso dispositivo, clique em + na seção Configuração → Coisas .
- Selecionamos Milight Binding , a busca automática pelo dispositivo começa.
- Como não encontrei nada automaticamente, adicionei manualmente a opção " Adicionar manualmente ".
- Selecionamos o hub iBox / iBox2 a ser adicionado.
- 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.
- Ótimo, o iBox / iBox2 agora aparece na lista de dispositivos com a inscrição " Online ".
- Clique em + novamente e selecione Milight Binding , desta vez para adicionar as lâmpadas diretamente.
- 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) ).
- O item selecionado deve aparecer na lista de itens com a inscrição " Online ".

- Os dispositivos estão configurados, agora você precisa adicionar controles a eles. Para fazer isso, clique no item recém-adicionado.
- Uma lista de parâmetros da lâmpada que podemos controlar remotamente é aberta. Clique no círculo azul Brilho .
- Em seguida, selecione o controle ao qual queremos associar o parâmetro device, porque ainda não os temos, clique em Criar novo item .
- 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 .
- 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
- 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.
- Vamos ao painel de controle PaperUI openHAB .
- Abra a seção Configuração → Complementos → Misc .
- Instale o openHAB Cloud Connector .
- Em Configuração → Serviços , o módulo openHAB Cloud com o modo " Notificações e acesso remoto " deve aparecer.
- Em Configuração → Sistema → Gerenciamento de Complementos, a opção " Acessar Repositório Remoto " deve estar ativada.
- 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.
- Vá para Configuração → Serviços → openHAB Cloud → Configurar .
- Na lista Itens a serem expostos a aplicativos, como IFTTT, ative a caixa de seleção do controle de brilho e clique em Salvar .
- 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.
- Registramos no site ifttt.com e acessamos Applets → New Applet .
- 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 .
- Em seguida, selecione o gatilho " receber solicitação da web " na lista com um item.
- Especifique o nome do evento, por exemplo light_on , e clique em Criar .
- Agora precisamos selecionar a resposta, clique em + isso . Nossa escolha de openHAB , plug.
- Na janela que se abre, a autorização OAuth2 mencionada anteriormente, clique em Permitir .
- A única resposta do comando send está disponível.
- 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.
- Pesquisamos o serviço Webhooks no site da IFTTT e vamos para a documentação associada a ele.
- Na página que é aberta, há um comando que precisamos executar, substituindo {event} por light_on .
- 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.
- Instalamos a versão beta do aplicativo de pesquisa Yandex , mas atualmente ele oferece suporte para as habilidades do usuário .
- Dizemos que Alice " ativa feitiços ". É a capacidade de magias / magias que nos permitirá executar solicitações POST para servidores IFTTT .
- 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}
- 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.