Linkit Smart 7688 com MQTT e MediaTek Cloud Sandbox - MakerHero

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.

Faça seu comentário

Acesse sua conta e participe

2 Comments

  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