Incorpore seu dispositivo Smart Home ao ecossistema SmartThings

As plataformas Smart Home permitem integrar dispositivos e criar novos cenários para a interação deles. O efeito da plataforma é conhecido: é mais provável que os usuários escolham aquele com o qual seus dispositivos existentes são compatíveis, em vez de mudar para um novo. Portanto, para desenvolvedores de novos dispositivos engenhosos, pode ser mais lucrativo integrar-se a uma plataforma já concluída, com foco no produto "ferro", em vez de desenvolver suas próprias "bicicletas" na forma de ecossistemas em nuvem e contas pessoais.

Vamos ver como integrar seu próprio dispositivo à plataforma Samsung SmartThings Smart Home. Estamos implementando uma opção de conexão direta para controlar o dispositivo Smart Home usando o exemplo de um comutador de botão e uma lâmpada de três cores. 




Por que precisamos das plataformas Smart Home?


Agora, gadgets e dispositivos inteligentes estão à venda - o quanto você quiser. Não há problema em comprar uma chaleira com controle Bluetooth ou uma lâmpada com WiFi. Mas isso torna sua casa "inteligente"? Uma situação não é incomum: uma lâmpada é controlada apenas por um aplicativo móvel do fabricante. Isso cria inconveniência se você estiver tentando combinar pelo menos várias marcas diferentes. Portanto, a plataforma ideal é aquela que permite gerenciar dispositivos de diferentes fabricantes da mesma maneira.

Além disso, eu gostaria de ver um “computador dissolvido na vida cotidiana”, como Mark Weiser, da Xerox PARC, sonhava com isso: não controle através de um aplicativo especial, não aplique seu foco de atenção. Eu gostaria de uma interação natural com um ambiente inteligente que não mude nossos hábitos. Como implementar isso tecnicamente? Por exemplo, podem ser cenários em que dispositivos heterogêneos da casa estejam envolvidos: você acordou - o dispositivo vestível detectou isso e a chaleira foi ligada; você chegou em casa - o sensor na porta o consertou, levando em consideração a hora do dia, as cortinas fechadas, a lâmpada acesa e o ar condicionado ligado, levando em consideração a temperatura.

Os cenários se tornam ainda mais úteis se usarmos a Internet: por exemplo, para verificar remotamente se a tomada com o ferro está desligada. Ou um exemplo banal: sua casa inteligente examinou a previsão do tempo e deu conselhos sobre como se vestir melhor. Ou você pode adicionar controle de voz através de um alto-falante inteligente.

A plataforma Smart Home foi projetada para tudo isso. Considere o que a plataforma Samsung SmartThings pode fazer.

Histórico - O que são SmartThings?


O SmartThings começou como uma startup. No momento em que ele apareceu, em 2012, nos EUA, o tópico “Smart Home” ainda não estava no topo do hype, ainda não havia alto-falantes inteligentes e uma variedade de gadgets nas lojas. A idéia veio ao fundador da startup, Alex Hawkinson, após um incidente: sua casa de família no Colorado sofreu com o fato de que, após uma interrupção temporária de eletricidade, os canos de água congelaram, eles estouraram e todo o piso foi inundado. Então ele pensou que poderia ter evitado o problema se soubesse o que estava acontecendo na casa. 

Depois de procurar, sem sucesso, uma solução pronta para uso, Hawkinson e seus colegas fizeram um protótipo do dispositivo e lançaram uma campanha no Kickstarter. A campanha teve sucesso, arrecadando US $ 1.200.000 em vez dos US $ 250.000 planejados em 30 dias. A venda de um hub com um pequeno conjunto de dispositivos no kit já começou: tomada inteligente, sensor de porta aberta, sensor de movimento, sensor de presença. E em 2019, já com a marca Samsung SmartThings, a terceira versão do hub foi lançada.


A chave do sucesso no Kickstarter foi a disponibilidade de protótipos funcionais de ferro e software e a simpatia da comunidade de criadores

Os criadores da startup deixaram o ambiente de bricolage, então estão constantemente desenvolvendo o conceito de uma API aberta para criadores de nerds que podem atuar como adotantes precoces em um estágio inicial. Na campanha do Kickstarter, havia um escudo para o Arduino e vários módulos na nuvem para conectar perfeitamente seu dispositivo de terceiros. Na Internet, você encontra muitos exemplos de dispositivos caseiros compatíveis com o SmartThings, seja uma porta de capoeira controlada (com a solução de uma tarefa séria da vida - salvar galinhas de um vison predatório) ou a instalação remota de um código de bloqueio eletrônico para os hóspedes do Airbnb.


Fonte da foto: https://www.hackster.io/aaronpk/auto-airbnb-entry-745799

Em 2012-2013, a SmartThings passou por várias rodadas de investimento e recebeu US $ 12,5 milhões. E, finalmente, em 2014, ela se interessou pela Samsung e foi adquirida por US $ 200 milhões como parte de uma estratégia para entrar no mercado da Internet das Coisas.
Os recursos de nuvem da plataforma permaneceram livres: os autores, agora funcionários da Samsung, sem excluir a possibilidade teórica de cobrar por grandes volumes de tráfego, enfatizam: sempre haverá uma opção gratuita para desenvolvedores de dispositivos. Isso é bom, porque agora quase todos os serviços em nuvem fornecem monetização e, muitas vezes, mesmo durante um período de teste, você precisa anexar um cartão bancário. SmartThings é uma plataforma totalmente gratuita.

Arquitetura do SmartThings




Vamos mover o padrão da esquerda para a direita.

Aparelhos


Dispositivos SmartThings - podem ser não apenas dispositivos do conjunto SmartThings , mas também muitos parceiros de terceiros da lista de parceiros.



Se o dispositivo não estiver na lista de oficialmente suportados, você pode procurar o manipulador de dispositivos nele - ele pode ser fornecido pela comunidade de desenvolvedores - ou escrever o seu próprio.

Métodos de conexão


Você pode conectar dispositivos à plataforma das seguintes maneiras:

  • Conectado ao hub - por meio de um hub, relevante para dispositivos que não possuem conexão à Internet, mas estão conectados através de redes sem fio tradicionais, como o ZigBee, para esses sistemas. 
  • Conexão direta - via Internet diretamente para a nuvem. A SmartThings lançou recentemente uma câmera de vídeo, uma lâmpada e uma tomada inteligente, e elas funcionam sem um hub - via WiFi. Essa é a opção que implementaremos neste guia.
  • Conectado à nuvem - por meio de uma nuvem de terceiros para os dispositivos que já possuem seu próprio ecossistema de nuvem. Isso é mais complicado, portanto, não consideraremos essa opção.

Cubo


Normalmente, para conectar uma variedade de equipamentos em sua casa, deve haver um pequeno servidor especial "Smart Home" que suporta vários protocolos. Ele - um hub, hub, gateway - os nomes são diferentes.


Hub e um conjunto de dispositivos para ele. Fonte da foto: IXBT .

inscrição


O SmartThings App é um aplicativo que pode ser instalado no sistema operacional móvel principal e com sua ajuda: adicionar novos dispositivos ao sistema, controlar os já adicionados, definir regras de automação, receber notificações via push e SMS e muito mais. 



Abstração


No SmartThings, como em muitas outras plataformas domésticas inteligentes, existem as seguintes abstrações: salas, cenas, cenários. 

Os dispositivos são agrupados em salas. Você simplesmente anexa esse ou aquele gadget a um cômodo do aplicativo e denomina “Cozinha”, “Banheiro”, “Corredor”.

Ainda existem cenas (cenas) - são situações: “dormir”, “descansar”, “trabalhar”, “assistir a um filme” - cada uma das situações é caracterizada por seu próprio conjunto de estados de dispositivo.


Cenas e salas na tela do aplicativo

E, finalmente, scripts (Rotinas): regras de automação if-then. Por padrão, o programa possui quatro cenários: "Estou de volta", "Boa noite", "Tchau", "Bom dia". Você pode configurar a ativação do script de acordo com a condição da manhã, ou no caso de movimento, ou no caso de abrir a porta e assim por diante. Um exemplo não trivial: quando entro em casa - bloqueio o tráfego de rede na minha câmera de vigilância doméstica para evitar o vazamento de meus vídeos pessoais. Ou um exemplo educacional cruel: desconecte à força o tablet da rede às 11 horas da noite para evitar que você fique preso na Internet em vez de ter um sono saudável.



Além disso, no programa SmartThings no telefone, há uma oportunidade interessante - memorizando ações típicas. Quando você usa o telefone com frequência, com o tempo, ele começa a mostrar a melhor maneira de configurar cenas com base nos aplicativos iniciados com mais freqüência.

Para adicionar novos dispositivos ao sistema, é fornecido um sistema de plug-in. O desenvolvedor pode programar o plug-in para seu próprio dispositivo - a interface do usuário dentro do aplicativo SmartThings e a lógica do dispositivo. Esta é essencialmente uma aplicação web. Do ponto de vista do desenvolvedor, o plug-in pode se inscrever em eventos ou notificações do dispositivo, enviar uma mensagem a ele, monitorar o status da conexão com o dispositivo. Há uma documentação clara sobre o ciclo de vida do plug-in.

Eles são baixados pelo usuário na "loja de plug-ins", conforme necessário, para não inflar o aplicativo no telefone.



Mas agora não faremos nenhum plug-in, mas o tornaremos mais simples: adicionaremos um dispositivo caseiro usando apenas ferramentas de plataforma padrão.

Tornando seu dispositivo compatível com SmartThings


Você pode ter uma pergunta: por que? Qual o sentido de torná-lo compatível se você é um desenvolvedor de dispositivos?

  • A principal vantagem é o aumento do valor do produto devido à integração automática com todo o ecossistema.
  • Sob a condição de passar nos testes funcionais, você pode colar o logotipo: “Compatível com SmartThings” na caixa do produto, garantindo instalação e configuração sem problemas do dispositivo no ecossistema SmartThings.
  • Como em qualquer plataforma, sua tarefa é facilitada: você não precisa mais tentar desenvolver, por exemplo, uma interface de usuário - é possível usar os botões padrão e outros elementos da interface do SmartThings.
  • Você obtém relações públicas e público de usuários graças à comunidade SmartThings (é animada e ativa).

No manual abaixo, conectaremos nosso próprio dispositivo totalmente personalizado.

O que se propõe fazer


O SmartThings Device SDK (STDK) foi apresentado recentemente na Samsung Developer Conference em outubro de 2019. Abaixo, oferecemos uma tradução do manual para este SDK. E não apenas uma tradução: fizemos a mesma coisa e repetimos com nossas próprias mãos, para que haja alguns comentários práticos que vão além do manual original.

Como o resultado final será exibido no vídeo:


A lâmpada RGB está conectada à plataforma SmartThings via Wi-Fi e você a controla através do telefone. A lâmpada em si é implementada da maneira mais barata e fácil - no super popular chip ESP8266. O ferro não é importante: pode ser feito em qualquer microcontrolador, porque o SDK é escrito em C, organizado em domínio público e pode ser portado, se desejado. É improvável que o ESP entre em produção (para iniciantes, é mais conveniente usar outras interfaces na Smart Home do que o WiFi), mas é bastante adequado para o modelo e ilustração.

A funcionalidade da "lâmpada inteligente" resultante será a seguinte: Controle de LED RGB usando a roda de cores do telefone. Além de desligar e ligar usando o botão
O processo de desenvolvimento é mostrado no diagrama:


O processo mostrado não é difícil, algumas das etapas podem ser revertidas, o que mostraremos no manual.

Ferro


O manual original mostra tudo no exemplo da placa WeMos D1 Mini; esta é uma placa de depuração baseada no ESP8266 que pode ser inserida na placa de ensaio. Em geral, não há nada de complicado nisso, é apenas um módulo do chip ESP chinês que é super popular entre os fãs, soldado por conveniência a uma placa mais larga do tamanho da placa de ensaio. Portanto, você pode fazer tudo em qualquer outra placa.


Esquerda: WeMos D1, direita - Troyka WiFi Shield

Suave


O que você precisa para construir o exemplo:

  • Versão do Ubuntu Linux não inferior a 18.04 (você pode criar um exemplo para Windows e MacOS, mas, definitivamente, escolhemos o Linux)
  • Android 1.7.39, iOS 1.6.41-343. Play Market SmartThings, Samsung Account. Samsung, .
  • ESP8266 SDK. , , , :

    git clone https://github.com/espressif/ESP8266_RTOS_SDK.git

    SDK IDF_PATH:

    nano ~/.bashrc
    export IDF_PATH="~/git/ESP8266_RTOS_SDK:$IDF_PATH"
  • :

    sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools

    ():

    sudo mkdir /opt/Espressif
    sudo chown username /opt/Espressif/
    cd /opt/Espressif
    wget https://dl.espressif.com/dl/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
    tar -xzf ./xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
    cd xtensa-lx106-elf
    export PATH="/opt/Espressif/xtensa-lx106-elf/bin:$PATH"

  • Smart Things Device SDK C – . github, , , .

    git clone https://github.com/SmartThingsCommunity/st-device-sdk-c-ref.git
    cd st-device-sdk-c-ref
    ./setup.sh esp8266



Os seguintes dispositivos serão considerados como exemplos: interruptor inteligente e lâmpada inteligente. Começaremos com um switch inteligente, mais simples e sem exigir periféricos externos.

Etapa 1. Registre seu dispositivo.


O trabalho começa no espaço de trabalho do desenvolvedor do SmartThings , onde você precisa fazer login usando sua conta Samsung. Essa conta é criada gratuitamente e, para criar, não é necessário ter um telefone Samsung. 



No Developer Workspace, você é imediatamente oferecido para criar o primeiro projeto. Concordamos que após as duas opções do projeto você precisará selecionar a Integração de dispositivos.



A escolha terá três opções para integrar o dispositivo: 

  • SmartThings Cloud Connector - para conectar dispositivos que possuem sua própria nuvem e que serão conectados à nuvem SmartThings
  • O SmartThings Hub não está disponível para dispositivos ZigBee, Z-Wave, Bluetooth e no momento da redação deste artigo, pois o hub ainda não foi vendido oficialmente na Rússia
  • Conexão Direta é a opção mais fácil de conectar-se diretamente, sem intermediários. 

Escolha a terceira opção. Pense no nome de um projeto, por exemplo, para simplificar - SmartSwitch.



Adicione um perfil de dispositivo. Falando em termos de POO, um perfil de dispositivo é uma "classe" e um dispositivo específico é uma "instância de classe".

Precisamos determinar as características funcionais do dispositivo em termos de capacidade do SmartThings. Você pode ler sobre os “recursos” gerais do dispositivo no manual.



Nós preenchemos os campos com nossos valores. Por exemplo, o nome do perfil pode ser digitado Test Switch Profile, descrição - qualquer texto, tipo de dispositivo - Switch, ID do fornecedor - qualquer texto. "Tipo de dispositivo" afeta o ícone do seu dispositivo e a interface do usuário. Não há muitos tipos possíveis de dispositivos na lista (embora existam dispositivos exóticos, por exemplo, WineCellar - um armário de vinhos), portanto, se você não encontrar o seu, não desanime e apenas escolha o mais próximo e o mais próximo. Na última tela (Controle do painel), você não pode alterar nada.

Após criar o perfil, não se esqueça de clicar no botão "Adicionar perfil de dispositivo ao projeto" no canto superior direito.



  • Importante: a verificação de integridade é necessária para todos os dispositivos conectados diretamente. Adicione-o ao perfil do dispositivo. 
  • « » : Switch, Health Check.

Agora adicione o perfil de autenticação (perfil de integração). Em resumo, neste perfil, você pode personalizar as telas que aparecem quando você se conecta e faz login pela primeira vez. Digite qualquer nome e qualquer número de três dígitos. Você pode pular as outras duas telas por enquanto. Na última tela, selecione a opção de confirmação - Confirmação do botão - pressionando o botão no dispositivo. Neste manual, presumimos que você tenha uma placa com um botão embutido. Se de repente não houver um botão (por exemplo, você estiver usando outro módulo ESP), poderá escolher a opção sem autenticação - ela se chama Just Works, ou seja, “simplesmente funciona” sem nenhuma pergunta.

E novamente, por analogia com o exemplo anterior, não se esqueça de clicar no botão "Adicionar dispositivo integrado ao projeto".



Tudo o que resta é clicar no botão Implementar. Depois disso, você poderá ver seu dispositivo no aplicativo SmartThings - mas apenas no Modo Desenvolvedor. Se Deploy não for pressionado, e eles disserem "Por favor, adicione um nome de modelo" - isso significa que você não especificou um ID de integração do dispositivo, role a página abaixo e faça - insira qualquer nome de sua escolha.



Agora você pode começar a testar seu dispositivo virtual no seu telefone.

Todo o primeiro passo é mostrado em detalhes no vídeo:


Registrar um dispositivo na nuvem


Antes de começar a trabalhar com o hardware real, você precisa fazer outra coisa. Depois de pressionar o botão Implementar, a tela parecerá diferente: um novo campo Identidade do dispositivo aparecerá lá. 


Para autenticar seu dispositivo na nuvem SmartThings, é necessário inserir o número de série e a chave pública (com o esquema de assinatura ED25519). Isso é fácil o suficiente.

Este exemplo mostra como criar um par de chaves ED25519 usando uma ferramenta no SDK. Você obterá o arquivo device_info.json como resultado do programa na pasta tools / keygen / linux / output_ {serialNumber}

A versão Linux do keygen está localizada em st-iot-device-sdk-c-reference / iot-core / tools / keygen / linux ou em st-device-sdk-c / tools / keygen / linux

O número de série do dispositivo de teste será gerado aleatoriamente no formato STDK + [MNID] + formato alfanumérico (8 caracteres). Você pode encontrar seu MNID no perfil de desenvolvedor na seção Gerenciar conta. 





Em seguida, para gerar a parte alfanumérica, é necessário inserir seu MNID (4 caracteres) como um parâmetro keygen. No exemplo abaixo, o MNID é fJ * c.


    cd ~/Workspace/st-iot-device-sdk-c-ref/iot-core/tools/keygen
    ./stdk-keygen -m fJ*c
    Go Device Identity of Developer Workspace.
    
    Serial Number:
    ┌──────────┬──────────┐
    │ STDKfJ*c    │ abed**5c   │
    └──────────┴──────────┘
    
    Public Key:
    waGgyjWIvHhF1LU***FG2hx/4u***ADFHr/ry0j5jbk=

Copie “abed ** 5c” da emissão do keygen e cole nos campos XXXXXXXX na seção Registro de identidade do dispositivo. Uma janela aparecerá solicitando que você insira a chave pública.


Copie a chave pública da emissão do keygen ("waGgyjWIvHhF1LU *** FG2hx / 4u *** ADFHr / ry0j5jbk =" neste exemplo) e cole no campo "Chave pública do dispositivo".



Etapa 2. Firmware do dispositivo


Fale sobre o código que você fará o download no dispositivo.
Exemplos de firmware estão localizados na pasta st-device-sdk-c-ref / apps / esp8266 / . Estaremos interessados ​​no exemplo st_switch .

  • Baixe onboarding_profile.json na janela de visão geral do seu dispositivo no escritório do desenvolvedor.


  • Copie o arquivo onboarding_profile.json baixado para o diretório do seu aplicativo - no nosso caso apps / esp8266 / st_switch / main .

    cd ~/Workspace/st-device-sdk-c-ref/apps/esp8266/st_switch/main/
    cp ~/Downloads/onboarding_profile.json .
    

    Já existe um exemplo desse arquivo - basta substituí-lo pelo seu.
  • Da mesma forma, copiar o device_info.json arquivo da pasta de ferramentas / keygen / linux / output_ {serialNumber} , em que as informações específicas do dispositivo está localizado, para a mesma pasta, substituindo o arquivo existente.

    cd ~/Workspace/st-device-sdk-c-ref/iot-core/tools/keygen/linux/
    cp output_{serialNumber}/device_info.json ~/Workspace/st-device-sdk-c-ref/apps/esp8266/st_switch/main/

    Neste arquivo, além das chaves e do número de série, existe a linha "firmwareVersion" - ela pode ser substituída pela versão do seu programa.
  • Agora monte e atualize o programa.

    cd ~/Workspace/st-device-sdk-c-ref
    ./build.sh esp8266 st_switch
    ./build.sh esp8266 st_switch flash
    ./build.sh esp8266 st_switch monitor

    Ou o mesmo, mas mais curto:

    cd ~/Workspace/st-device-sdk-c-ref
    ./build.sh esp8266 st_switch flash monitor


! Se você não pode exibir o programa de forma alguma - provavelmente, esqueceu de colocar a placa ESP8266 no modo de programação. Isso geralmente é feito pressionando um botão no próprio quadro. Por exemplo, o módulo Wi-Fi Troyka pode ser traduzido mantendo pressionado o botão PROG e, em seguida, pressionando e soltando o botão RESET.

Após o download do firmware, não se esqueça de reiniciar a placa.

Etapa 3. Conexão e controle do telefone


Ative o modo de desenvolvedor no aplicativo SmartThings no seu telefone. Como fazer isso está escrito no site oficial, mas é mais fácil explicar com palavras: insira as configurações na "engrenagem" e pressione o botão "Detalhes do SmartThings" por 20 segundos. O menu "Modo de desenvolvedor" aparece abaixo.



Nosso dispositivo deve estar visível na lista do aplicativo SmartThings: inicie o aplicativo, clique no botão mais e em Adicionar dispositivo. Role até o final da lista de fornecedores e veja o ícone "Meus dispositivos de teste". Clique nele e selecione seu dispositivo.



Além disso: se você já ativou o modo de desenvolvedor e ligou o dispositivo, terá um menu pop-up oferecendo a adição deste dispositivo em particular!

A conexão inicia :


Gerenciar o dispositivo a partir do aplicativo SmartThings. 

Inicialmente, o dispositivo aparece como um ponto de acesso, porque ainda não sabe a senha do seu WiFi. Durante o processo de conexão, você especifica a rede com a qual o dispositivo deve se conectar. Se você tiver um ponto de acesso oculto, o ESP não poderá se conectar a ele; portanto, escolha um ponto aberto.

O resultado será o seguinte:



Neste exemplo ( comutador ), você controla o LED embutido na placa pressionando o botão na própria placa. Como você pode ver, neste exemplo, você nem precisa de periféricos adicionais, apenas a placa ESP8266.

Você também pode ligar / desligar o dispositivo com o botão no painel de controle do aplicativo para dispositivos móveis.



E, é claro, se você pressionar o botão físico, o status da lâmpada no aplicativo também será atualizado.

Exemplo de luz inteligente


Depois de fazer o exemplo do Smart Switch, vamos tentar complicar um pouco as coisas. Haverá um LED RGB e ligar / desligar um botão externo, além de selecionar uma cor no aplicativo.

Ferro


O esquema de conexão será simples:

E o diagrama do circuito também não dói:



Se você olhar para a fonte (localizada em: st-device-sdk-c-ref / apps / esp8266 / st_lamp), a conexão é a seguinte: Você pode reatribuir as conclusões segundo as quais é o modelo do quadro que você tem. Observe que existe um sistema de notação (D1, D2 ...) na placa e outro no código, mas isso é fácil de entender apenas olhando a documentação da sua placa.

#define GPIO_OUTPUT_NOTIFICATION_LED 2
#define GPIO_INPUT_BUTTON 5
#define GPIO_OUTPUT_COLORLED_R 16
#define GPIO_OUTPUT_COLORLED_G 14
#define GPIO_OUTPUT_COLORLED_B 12
#define GPIO_OUTPUT_COLORLED_0 13 




Parte do software


De acordo com a parte do software, alteraremos várias etapas:

  • Ao adicionar Recursos, você deve especificar o seguinte: Switch, Switch Level, Color Control, Health Check. O tipo de dispositivo que haverá - Luz.
  • Tomamos um exemplo de firmware da mesma pasta com exemplos, é chamado st_lamp

A interface no aplicativo terá a seguinte



aparência : Como fica em ação - mais uma vez GIF:



Conclusão


Então, você tem um exemplo de trabalho pronto. Você vê que a maior parte do código já foi feita para você - tudo relacionado à conexão, autenticação, interface do dispositivo. O exemplo do SmartThings é valioso, pois não está vinculado a nenhum dispositivo de hardware e você pode assistir e avaliar qual funcionalidade da plataforma é necessária no 2k20 se estiver desenvolvendo uma Casa Inteligente.


Tatyana Volkova - autora do Internet of Things da Samsung IT Academy acompanha o currículo, especialista em programas de responsabilidade social corporativa no Samsung Research Center

All Articles