Linkit Smart 7688 com MQTT e MediaTek Cloud Sandbox 2

No nosso post anterior sobre a MediaTek Cloud Sandbox, mostramos o que é a MediaTek Cloud Sandbox (MCS), como se cadastrar lá e como utilizá-la, junto com a placa Linkit 7688, para seus projetos na área de IoT. Dando continuidade a este assunto, neste post será mostrado como comunicar a Linkit Smart 7688 com MQTT e MCS, permitindo envio e recepção de dados para a plataforma Cloud. No caso, será controlado um LED da placa Linkit 7688 e seu estado (on/off) poderá ser monitorado pela MCS.

Material necessário

Para reproduzir este projeto da Linkit Smart 7688 com MQTT e MCS, você precisará de:

*Se preferir, pode ligá-la na USB do computador, poupando o uso de uma fonte.

Overview do projeto

Neste post, o projeto realizado consistirá de um controle e monitoramento de um LED da placa Linkit 7688 via plataforma Cloud MCS. O controle será do tipo on/off, e o monitoramento será do estado do LED (aceso / apagado) na MCS.

Assim como no projeto do post anterior, o desenvolvimento se dará em linguagem Python.

Data Channel Display – recepção do estado do LED

No artigo anterior, foi criado um Data Channel somente, o qual consistia em um Data Channel do tipo Controller (para acionamento On/Off do LED na placa). Para o projeto de hoje, será criado outro Data Channel, chamado Display. O Data Channel Display será responsável por exibir na MCS o estado atual do LED da placa presente na Linkit 7688 (o mesmo LED utilizado no artigo anterior). Desta forma, tudo o que foi feito no artigo anterior será aproveitado.

Portanto, siga o procedimento abaixo para criação do Data Channel Display:

  1. Faça login na MCS
  2. Ao ser feito o login, será exibida uma página com o overview de tudo que você criou. Nela, clique no prototype do projeto desenvolvido (em destaque na figura abaixo): Linkit Smart 7688 com MQTT
  3. Uma vez aberto o prototype do seu projeto, clique em “Add” para adicionar um Data Channel
  4. Na tela de seleção de Data Channel, selecione o Data Channel do tipo Display
  5. Será solicitado o preenchimento de algumas informações do Data Channel. Preencha-as conforme a imagem abaixo e clique em “Save”.
    Importante: anote o Data Channel Id em local seguro. este será necessário no projeto.

Em termos de configurações / atividades na MCS, está concluído!

MQTT – uma breve explicação

MQTT (Message Queue Telemetry Transport) é em um protocolo de rede com mensagens leves, criado para comunicação M2M (Machine to Machine). Por exigir pouquíssimo “poder de fogo”  (pouca banda de Internet e poucos recursos computacionais dos nós que se comunicam), este é um dos protocolos mais utilizados em dispositivos embarcados inseridos no contexto de IoT.

Em resumo, uma comunicação MQTT é composta de três partes:

  • Publishers: dispositivos que publicam / disponibilizam informações
  • Subscribers: dispositivos que escutam / esperam por informações
  • Broker: é o servidor MQTT. Dado o contexto de IoT, ele a priori deve ser acessível de qualquer lugar do planeta que contenha conexão com a Internet.

Uma informação muito interessante sobre MQTT é que em uma comunicação NÃO há limite especificado de subscribers e publishers. Isso abre possibilidades de aplicação em sistemas dos mais variados portes. Segue abaixo diagrama exemplificando uma comunicação MQTT:

NodeMCU e MQTT

Ou seja: publishers enviam informação para o Broker, subscribers recebem informação do Broker e, por fim, o Broker gerencia a troca de mensagens. A comunicação MQTT, portanto, configura-se como centralizada no Broker.

No caso do projeto aqui desenvolvido, a MCS contém um Broker / servidor MQTT. Desta maneira, os elementos da comunicação são:

  • Broker: o próprio servidor / Broker contido na MCS.
  • Subscribers: a Linkit 7688, para fins de recepção de comandos de acender / apagar o LED da placa.
  • Publishers: também a Linkit 7688, para fins de envio do status do LED (aceso / apagado) para a MCS.

Instalação de bibliotecas

Para ser possível utilizar MQTT com Python na Linkit 7688, antes é preciso instalar as bibliotecas necessárias. Para isso, execute o comando abaixo:

Detalhes da comunicação MQTT com a MCS

Os detalhes / informações da comunicação MQTT com a MCS são:

  • Endereço do Broker: mqtt.mcs.mediatek.com
  • Porta: 1883 ou 8883. Para fins de prototipação e testes, será usada a porta 1883.
  • Tópico para subscribe: compor no formato mcs/deviceId/deviceKey/dataChnId
    Onde deviceId, deviceKey e dataChnId devem ser substituídos pelos do seu projeto
  • Tópico para publish: compor no formato mcs/deviceId/deviceKey/dataChnId
    Onde deviceId, deviceKey e dataChnId devem ser substituídos pelos do seu projeto

Código-fonte do projeto Linkit Smart 7688 com MQTT

Abaixo está o código-fonte do projeto. Salve-o como “ControleMonitoramentoMCS.py” na sua Linkit 7688.
IMPORTANTE: não se esqueça de substituir os deviceID e deviceKey de seu projeto nas strings dos tópicos!!

Para rodar o projeto, basta executar o comando abaixo e utilizar a MCS para controlar e monitorar o estado do LED.

Projeto em ação!

Veja abaixo o projeto em ação!

Gostou da Linkit Smart 7688 com MQTT e MediaTek Cloud Sandbox? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Ótimo artigo, parabéns. Existe alguma forma de colocar minhas credenciais (deviceId, deviceKey) sem ser hardcoded? Exemplo: criar um servidor web e acessá-lo para colocar minhas credenciais dinamicamente.

    1. Renato, muito obrigado!

      Sim, é possível (inclusive, esta pode ser uma etapa essencial em termos de segurança). A forma de implementar depende muito do tipo de servidor, comunicação com o mesmo e como as informações são guardadas e acessadas.

      Atenciosamente,
      Pedro Bertoleti