Como construir uma casa inteligente e não enlouquecer

imagem

Móveis inteligentes, que cuidam da ordem da casa, são essenciais para praticamente qualquer imagem futurista. De fato, um clima auto-regulável, luzes automáticas para ligar e desligar e controle por voz de eletrodomésticos - tudo isso pode ser configurado agora. Mas será necessário um pouco de experiência, conhecimentos básicos no campo da tecnologia e, às vezes, programação, além de todo um mar de fantasia. No meu caso, eu fiz isso apenas fantasia é suficiente, mas as primeiras coisas primeiro ...

Fiquei interessado na ideia de uma “casa inteligente” cerca de cinco anos atrás. No começo eu criei o sistema mais simples. Ela controlava a luz no corredor e no banheiro pelo sensor de movimento, o capô pelo sensor de umidade e também pela estação meteorológica - naquela época todos estavam loucos por eles. Toda caixa de bricolage que se preze tinha que fazer uma estação meteorológica.

Antes de tudo, eu equipava o apartamento com um relé controlado para acender automaticamente a luz no corredor e no banheiro. Era assim: um sensor estava no corredor, o segundo no banheiro.

Se alguém estava entrando no banheiro, o sensor do corredor detectou seu movimento e imediatamente acendeu a luz no corredor e no banheiro. Ao mesmo tempo, se ninguém entra no banheiro, isso já foi corrigido pelo sensor localizado dentro do banheiro. Após 15 segundos, a luz apagou-se. Se uma pessoa entra no banheiro, a luz no corredor apaga-se após um minuto. 

Também pensei nesses casos se alguém estivesse pensando demais enquanto estava sentado em um "amigo branco" no banheiro (eu tinha um banheiro combinado). Para isso, a luz no banheiro foi dividida em dois grupos. Um desligado 3 minutos depois que o sensor no banheiro parou de detectar movimentos, o outro após 5 minutos. Portanto, por mais de cinco minutos para ficar imóvel no banheiro, a luz não funcionou. Muito disciplinador. No entanto, você sempre pode mexer a mão e continuar pensando no essencial.

Um sensor de umidade também funcionava no banheiro, que acionava automaticamente o exaustor se a umidade excedesse 50%. Assim que a sala foi ventilada com 45% de umidade, o capô foi desligado. 

A gerência passou - ou melhor, tentou passar - pela plataforma Arduino. 


Foto tirada do site do fabricante

Quase imediatamente, ficou claro que essa plataforma não era inteiramente para criar uma casa inteligente. A principal desvantagem de trabalhar com o Arduino era que a plataforma funcionava sem uma rede e, sem ela, nenhum ecossistema verdadeiramente unificado poderia ser obtido. Claro, eu poderia refazer o Arduino e adicionar suporte à rede, mas por quê? Eu escolhi um caminho mais simples e mudei essa plataforma para outra. 

Tendo tocado o suficiente com o Arduino, reconectei a casa ao quadro ESP-8266. Na verdade, esse é o mesmo Arduino, mas com o Wi-Fi + é mais compacto. Este módulo ainda é popular entre os fabricantes de gadgets para casas inteligentes. 


Foto tirada da Internet

Paralelamente, tentei tornar a casa inteligente ainda mais inteligente. Por exemplo, resolva o problema de piso radiante 24 horas por dia ou de um ar condicionado sempre ligado. Para isso, comprei termostatos chineses Beok WiFi. Eles permitiram desligar o aquecimento do piso remotamente, mas tiveram que fazê-lo através de um aplicativo especial no telefone. 

Resolvi o problema do controle remoto do ar condicionado usando o emulador de sinal infravermelho Broadlink RM Pro. Nada complicado: você grava um sinal do painel de controle do ar-condicionado no emulador (pode haver qualquer técnica controlada pelo controle remoto) e, no telefone, pressiona um botão no aplicativo e o emulador reproduz o sinal gravado anteriormente. No caso do ar condicionado, tive a oportunidade de ligá-lo e desligá-lo, definir o modo de operação e definir outros parâmetros remotamente.  

Também instalou switches Livolo. Com a ajuda deles, eu também pude ligar e desligar as luzes pelo ar. 



Das desvantagens: para controle, tive que instalar um aplicativo separado novamente e não houve retorno, ou seja, não consegui ver que a luz estava acesa se alguém a ligasse ou desligasse manualmente usando um interruptor convencional. 

Vários relés WiFi controlados, como Sonoff ou Tuya e até o caro Danalock para trancar o apartamento, que também exigia uma aplicação separada, também apareceram na casa. Comprei quase todas essas coisinhas (com exceção da Danalock) no site chinês Aliexpress, onde elas custam um centavo e me permitiram experimentar sem investimentos sérios. 

Uma das primeiras compras relativamente sérias foi o respirador Tion. Com o controle automático de CO2, ele lidava mais ou menos, mas a temperatura do aquecimento do ar no inverno precisava constantemente ser ajustada manualmente. E, novamente - para gerenciar, era necessário instalar um aplicativo separado. 


A foto foi tirada do site do fabricante.

Todos os sensores e controladores que tentei na época, nem me lembro. Meu smartphone estava entupido de aplicativos para gerenciá-los. Era um zoológico inteiro, que constantemente precisava ser seguido. Tentei combinar o gerenciamento desses aplicativos através de todos os tipos de agregadores, como HomeBridge / MajorDomo, etc. Mas todos mostraram suas deficiências significativas:

  • interface hostil e, às vezes, apenas uma interface terrível
  • falta de suporte para todos os aplicativos usados
  • conexão complexa

A busca por um aplicativo para gerenciamento centralizado de um volume tão grande de sensores, controladores e outros sistemas de controle não levou ao sucesso. Depois, tentei lembrar de forma independente um dos dispositivos "inteligentes" - o próprio respirador Tion. Escrevi um script para controlar automaticamente a temperatura do aquecimento, dependendo da temperatura ambiente. O fato é que o sistema de ventilação não teve um ajuste automático da temperatura do aquecimento do ar. Verificou-se que a sala estava super quente ou super fria. Não havia como alcançar um meio termo. Aqui, com a ajuda de um roteiro escrito e um respiro, esse problema foi resolvido. 

O sucesso com um script para o respiro me levou a criar meu próprio aplicativo para gerenciar uma casa inteligente. O objetivo principal era criar um programa com integração conveniente de dispositivos inteligentes, condições de automação em vários níveis e a capacidade de gerenciar todos os dispositivos em casa. 

Por cerca de um ano, eu próprio participei do desenvolvimento de aplicativos back-end e front-end. 

O lado do servidor está escrito no NodeJS. A escolha a favor do NodeJS foi feita devido à comunidade desenvolvida, na qual existem protocolos implementados para quase todos os dispositivos no mercado. A parte do cliente é escrita em Angular (Ionic) e é executada no Android / iOS. Em geral, a arquitetura clássica cliente-servidor.

Em uma nota:No processo de trabalho no aplicativo, obtive uma visão técnica sobre o uso de impurezas ao escrever drivers de dispositivo. Eu não sei, talvez para alguns seja elementar, mas realmente ficou mais fácil para mim respirar.

Reescrevi os drivers de dispositivo várias vezes até chegar a algo assim:

Código de exemplo de um dos dispositivos
import {XiaomiSubdeviceV2} from '../xiaomi.subdevice.v2';
import {load_power} from '../capabilities/load_power';
import {power_plug} from '../capabilities/power_plug';
import {PowerPurpose} from '../../base/PowerPurpose';
import {Relay} from '../../base/types/Relay';
import {HomeKitAccessory} from '../../hap/HomeKitAccessory';
import {Lightbulb2Accessory} from '../../hap/Lightbulb2Accessory';
import {Yandex} from '../../yandex/Yandex';
import {YandexLightOrSwitch} from '../../yandex/YandexLightOrSwitch';

export class LumiPlug extends XiaomiSubdeviceV2.with(Relay, power_plug, load_power, PowerPurpose,
  HomeKitAccessory, Lightbulb2Accessory,
  Yandex, YandexLightOrSwitch) {

  onCreate() {
    super.onCreate();
    this.model = 'Mi Smart Plug';
    this.class_name = 'lumi.plug';
    this.driver_name = 'Mi Smart Plug';
    this.driver_type = 3;
    this.parent_class_name = 'lumi.gateway';
  }

  getIcon() {
    return 'socket';
  }
}


A conclusão é que, apesar da abundância de dispositivos diferentes, todos fazem aproximadamente a mesma coisa e fornecem aproximadamente a mesma informação. Portanto, todas as capacidades dos dispositivos foram colocadas em impurezas separadas, das quais o driver final consiste finalmente. Por exemplo, o aplicativo suporta muitos dispositivos que possuem a função liga / desliga. É fabricado em uma impureza separada e é usado de forma idêntica para todos os dispositivos. Elementar, Watson!

Em que isso resultou: qualquer driver de um novo dispositivo é gravado de maneira rápida e fácil, porque tudo é padronizado e não há necessidade de se preocupar com o armazenamento adicional das informações recebidas. Para protocolos completamente novos (que eu ainda não tinha), também são escritas impurezas baseadas nos já existentes. Eles já recebem informações do dispositivo e as transmitem mais adiante na cadeia. Essa abordagem nos permitiu reduzir a quantidade de código em dezenas de vezes (inicialmente, cada driver era uma cópia de um driver semelhante).

Então, gradualmente, passei por todos os círculos do inferno para terminar o apoio e a frente. Quando o aplicativo adquiriu uma aparência bastante tolerável, pensei: por que não compartilhar seu desenvolvimento com o público? Foram encontrados parceiros para o projeto e assistentes para lembrar o aplicativo. 

Antes de tudo, era necessário lembrar o design do aplicativo. Para fazer isso, tive que recorrer a designers profissionais. Ingenuamente, acreditava que levaria de 3 a 4 meses, mas no final o processo se arrastou. Apesar do fato de a estrutura do aplicativo não ter mudado muito em relação à fonte original, literalmente tudo teve que ser refeito.

Paralelamente, eu - não sozinho, mas com uma equipe de parceiros do projeto - comprei os dispositivos mais populares para uma casa inteligente e adicionei um aplicativo se não suportasse esses gadgets. Em breve, porém, ficou claro que não haveria dinheiro suficiente para todos os dispositivos inteligentes, por isso decidimos conversar com os players existentes no mercado e concordar com amostras de teste gratuitas de equipamentos gratuitamente. Não fomos negados e a Wirenboard e o MiMiSmart se tornaram os primeiros fornecedores sérios.

Então, junto com os caras, criei um novo aplicativo para automação residencial inteligente com a arquitetura clássica cliente-servidor, que é colocada em qualquer plataforma e com um design moderno e conveniente. Conheça o BARY *.

* O nome não veio do nome de Bari Alibasov, mas do personagem do livro de Arthur C. Doyle "O Cão dos Baskervilles", do mordomo de Barrymore - seu "mordomo inteligente" pessoal. 

O que aconteceu: descrição do aplicativo com belas fotos e gatos


A tela principal é um painel conveniente com a capacidade de visualizar e gerenciar parâmetros de salas automatizadas. Conveniente - esta é a palavra-chave, porque os painéis nos aplicativos que tentei trabalhar comigo precisavam ser configurados manualmente. Não é o passatempo mais agradável: a



casa pode ser dividida em zonas e zonas - em quartos. Cada sala possui vários parâmetros: temperatura, umidade, consumo atual de eletricidade, etc., além de ações selecionadas. Se clicarmos na sala, entraremos na lista de dispositivos conectados a ela:



Aqui você pode ligar / desligar o dispositivo e também ver seu parâmetro principal. Ao mudar para um dispositivo, um controle mais detalhado com uma lista completa de funções estará disponível. 

Todos os dispositivos estão conectados usando as mesmas configurações. Para muitos dispositivos, existe um assistente de conexão. Nenhuma configuração para quem gosta de mais quente! Basicamente, tudo se resume a especificar o endereço IP do dispositivo (para muitos dispositivos, há uma pesquisa automática). Se o endereço IP mudar repentinamente, tudo bem, o servidor o encontrará no novo endereço automaticamente.



Há integração com o Apple HomeKit, que é usado para controle de voz através do Siri. Todos os dispositivos suportados no BARY se integram ao Apple HomeKit com um único tique (olá aos fãs do HomeBridge). Não sem o apoio da Yandex Alice. Ela era mais amigável em termos de comandos de interface. Por exemplo, a Siri não deseja fechar as cortinas com o comando "fechar as cortinas", não pode definir um determinado nível de volume na TV e assim por diante. O Yandex.Alice não tem esses kookies. 

Para a conveniência de gerenciar terras inteligentes, a automação foi implementada: as regras para a execução de qualquer ação no cumprimento de um conjunto de condições. As automações são lógicas, de vários níveis, ou seja, você pode fazer algo como: "Condição 1 e (Condição 2 ou Condição 3)". Tudo em um belo editor de automação lógica:



Pessoalmente, eu já tinha cem programas de automação, e qualquer um deles pode ser encontrado rapidamente, porque tudo é agrupado por sala e dispositivo: os



scripts também são suportados no aplicativo. Um cenário é um complexo de ações que são executadas sob alguma condição da automação. Para minha casa inteligente, uso apenas o conjunto padrão:



saí de casa / voltei para casa via Apple TV - ele liga / desliga automaticamente quando todos saem de casa ou alguém volta para casa. Você chega em casa e o locutor com olhos tristes do canal 1 já o encontra lá. Bem, ótimo?

Bem, que tipo de casa inteligente sem a capacidade de assistir a um gato?



Você pode conectar qualquer câmera capaz de fornecer um fluxo RTSP. 

Separadamente, quero dizer sobre o bloco de estatísticas. Foi bastante informativo:



na legenda, a barra vermelha é o desvio dos valores médios nos últimos seis meses, a barra cinza é a taxa de fluxo dentro dos valores médios.

Na foto, minhas estatísticas para setembro. Estava frio, o aquecimento ainda não havia sido realizado, portanto o aquecimento era constantemente ligado à ventilação.

Você também pode ver estatísticas de qualquer dispositivo conectado:



A propósito, a disponibilidade de automação e estatísticas reduziu os custos de eletricidade em mais de duas vezes.

Todos os eventos que ocorrem são armazenados e podem ser visualizados:



Também na página principal, há uma guia especial que coleta todos os principais indicadores selecionados pelo usuário:



A propósito, a medição de água é implementada através do sensor de porta / janela da Xiaomi. Para fazer isso, em vez de um comutador reed, a saída do contador de pulsos é soldada em um contato especial e um contador virtual é criado em BARY, no qual você pode especificar esse sensor como a fonte de pulsos.

Arquitetura e Segurança


A troca cliente-servidor é criptografada usando a tecnologia AES e o servidor está localizado diretamente dentro da sala automatizada. Na minha opinião, isso protege ao máximo o sistema de intervenções indesejadas de terceiros.

Se não houver um endereço IP branco, você poderá conectar a nuvem. Ele atuará como intermediário, sem a capacidade de descriptografar comandos, porque chaves estão no servidor. 

Onde conseguir


O lado do servidor pode ser executado em praticamente qualquer plataforma existente - graças ao NodeJS. Para as plataformas mais comuns, preparamos scripts que farão todo o trabalho automaticamente.

Para Raspberry Pi baseado no Debian Stretch:

wget -qO- "http://bary.io/install?target=pi" | sudo bash

O parâmetro target é responsável pela plataforma de destino e pode ter os seguintes valores:
Raspberry Pi (Extensão do Debian)
pi
Raspberry Pi (Debian Buster)
pi_buster
Tinker Board (Debian Stretch)
tb
Placa Wiren (Debian Stretch)
wb

Se alguém quiser instalar em outra plataforma, escreva para nós e atualizaremos o script. Se você encontrar alguma dificuldade - escreva também. Nós realmente precisamos de feedback. 

O aplicativo está disponível gratuitamente no Google Play e na App Store . Talvez até o final do ano, o aplicativo seja pago.

Conclusão


Por que escrevi este artigo? O objetivo principal é obter feedback de você.

Atualmente, o projeto está se desenvolvendo rapidamente e toda a nossa equipe está tentando maximizar a lista de equipamentos suportados disponíveis no mercado. Embora eu não esteja sozinho trabalhando no projeto, as tarefas permaneceram as mesmas - criar o aplicativo mais conveniente que leva em conta os desejos e resolve os problemas de todos os envolvidos na instalação independente de soluções inteligentes para o lar.

Estamos abertos ao diálogo sobre possíveis integrações e prontos para implementar o suporte de equipamentos de empresas interessadas em parceria o mais rápido possível. Você obtém um aplicativo pronto e não perde tempo desenvolvendo software. E temos uma ampla gama de dispositivos suportados para todos os gostos e cores. Tudo está bem. 

Planos imediatos e lista de desejos


Atualmente, minha equipe e eu estamos ativamente envolvidos no desenvolvimento de uma unidade de armazenamento de vídeo. Será possível colocar o vídeo em seu armazenamento doméstico ou em um serviço em nuvem. Eu acho que no começo do próximo ano será possível falar sobre um novo lançamento. Deveria ser possível rever as melhores pérolas de um gato se divertindo enquanto os donos não estão em casa? 

No próximo ano, planejamos mais integrações com vários serviços: uma lista de compras e tarefas, um calendário etc. Ele apareceu, olhou para uma tela - e tudo estava à vista. Vários projetos chave na mão mostraram que essa tarefa é relevante.

Também planejamos iniciar a produção de controladores com software pré-instalado para soluções em lote de uma casa inteligente (atualmente a solução em lote "software + hardware" está disponível junto com nossos parceirosWiren Board .

E suporte para o Google Home e o Amazon Alexa. Bem, a expansão da gama de equipamentos suportados, é claro.

A propósito, quem se importa, você pode ver a lista de dispositivos suportados (não completos) em nosso site e, se algo não for encontrado na lista, pergunte no grupo de telegramas .

Ficamos muito gratos se você compartilhar o que falta em aplicativos existentes e quais funções você adicionaria em nosso lugar.

Obrigado a todos pela leitura. Vamos tornar nossas casas mais inteligentes!

All Articles