MQTT_Q4GA1

Este bloco tem a funcionalidade se conectar a um broker MQTT através do módulo de modem celular 4GA1, um modem 4G (CAT-M) que pode ser integrado aos equipamentos da HI Tecnologia.

Este bloco é parte da biblioteca de comunicação do protocolo MQTT V1.3.1.

Dica

Para mais informações sobre o protocolo e os blocos disponíveis no HIstudio consulte o protocolo MQTT.

Para utilização deste módulo, inicialmente o usuário deverá configurar no módulo de modem os parâmetros para acesso à rede celular (APN, PIN, User, Password) e especificar o IP(ou URL) porta de conexão com o broker MQTT. Este processo é realizado através do script “Configura módulo 4GA1”, disponível no HIstudio em Ferramentas ‣ Ferramentas avançadas ‣ Scripts

Quando inserido na aplicação, este bloco manterá o módulo de modem inativo e ficará aguardando uma transição de subida na entrada START que, quando esta ocorrer, habilitará o módulo de modem 4GA1 que realizará todo o processo de registro na rede celular e abertura da conexão TCP com o broker. Quando esta conexão for estabelecida é iniciado o processo de conexão do protocolo MQTT e, uma vez concluído com êxito, entra em sua rotina padrão de publishing e subscribing das variáveis catalogadas no canal de Mapeamento de dados do projeto.

Se habilitado na interface o bloco utiliza o led vermelho do equipamento para sinalizar os os seguintes estados:

  • Led Vermelho ACESO: Equipamento configurando rede celular ou bloco desabilitado.

  • Led Vermelho PISCANDO: Equipamento em processo de abertura de conexão TCP.

  • Led Vermelho APAGADO: Equipamento operando, trocando dados com sucesso.

A entrada START deve permanecer em nível alto durante a execução do bloco. Os itens a seguir detalham o funcionamento do bloco.

Importante

Este bloco opera apenas com o módulo de modem 4GA1 operando na ITF-B do equipamento. Quando o equipamento possuir o módulo de modem 4G (EG915) você deve utilizar o bloco de função MQTT_QC1.

Quando o equipamento possuir o módulo de modem U3G (3G-SARA-U201) você deve utilizar o bloco de função MQTT_RNB_U3G.

Bloco

                   MQTT_Q4GA1
           +-------------------------+
  BOOL ----|START        MODEM_STATUS|---- USINT
           |                         |
  BOOL ----|EN_SCAN            RESULT|---- INT
           |                         |
  BOOL ----|EN_SUBS         CONNECTED|---- BOOL
           |                         |
  BOOL ----|USE_FLED            SB_EV|---- BOOL
           |                         |
 USINT ----|DMAP_ID             SB_ID|---- INT
           |                         |
  UINT ----|FLAGS             SB_CODE|---- INT
           |                         |
 USINT ----|DEC_SEP             PB_EV|---- BOOL
           |                         |
  BOOL ----|HI_GATE             PB_ID|---- INT
           |                         |
  UINT ----|KEEP_ALIVE        PB_CODE|---- INT
           |                         |
           |                    RT_EV|---- BOOL
           |                         |
           |                   RT_CHG|---- BOOL
           |                         |
           |                    RT_ID|---- INT
           |                         |
           |                  RT_CODE|---- INT
           |                         |
STRING ----|CLIENT_ID -------------- |----
           |                         |
STRING ----|W_TOPIC ---------------- |----
           |                         |
STRING ----|W_MSG ------------------ |----
           |                         |
STRING ----|USER ------------------- |----
           |                         |
STRING ----|PASSW ------------------ |----
           |                         |
   INT ----|T_CACHE ---------------- |----
           +-------------------------+

Dica

Para conhecer melhor o recurso e suas funcionalidades acesse o vídeo tutorial: Trabalhando com MQTT utilizando modem integrado 4G.

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

START

Entrada

BOOL

FALSE

Habilita operação do bloco

EN_SCAN

Entrada

BOOL

TRUE

Habilita o ciclo de notificacoes automaticas ao broker

EN_SUBS

Entrada

BOOL

TRUE

Ativa o processo de registro dos itens

USE_FLED

Entrada

BOOL

FALSE

Utiliza o LED de falha da interface do equipamento para informar o status de conexão com a rede celular e o broker

DMAP_ID

Entrada

USINT

0

Id do mapeamento de dados associado ao bloco MQTT

FLAGS

Entrada

UINT

8

Flags de conexão com o broker (default: Clean session)

DEC_SEP

Entrada

USINT

46

Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)

HI_GATE

Entrada

BOOL

FALSE

Se TRUE e conectado ao Portal da HI Tecnologia, notifica que é um equipamento HI e sincroniza o relógio automaticamente.

KEEP_ALIVE

Entrada

UINT

300

Tempo em segundos para o broker validadar a conexão

CLIENT_ID

Entrada/Saída

STRING

:*

Nome do cliente na conexão como broker (opcional)

W_TOPIC

Entrada/Saída

STRING

:*

Nome do tópico associado a mensagem de desconexão

W_MSG

Entrada/Saída

STRING

:*

Mensagem de desconexão

USER

Entrada/Saída

STRING

:*

Nome do usuário/login de autenticação do broker mqtt (opcional)

PASSW

Entrada/Saída

STRING

:*

Senha de acesso do login de autenticação do broker mqtt (opcional)

T_CACHE

Entrada/Saída

INT

[*]

0

Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)

MODEM_STATUS

Saída

USINT

0

Resultado do status de conexão do modem, reflete ao status do modem

RESULT

Saída

INT

0

Resultado da operação do bloco

CONNECTED

Saída

BOOL

FALSE

Indica que o equipamento esta conectado com o broker

SB_EV

Saída

BOOL

FALSE

Indica fim do processo de subscribe de um topico (mqtt)

SB_ID

Saída

INT

0

Id do item da última aquisição do equipamento remoto (MQTT)

SB_CODE

Saída

INT

0

Código de retorno da ultima recepção remota (MQTT)

PB_EV

Saída

BOOL

FALSE

Indica fim do processo de escrita de um item no equipamento remoto (MQTT)

PB_ID

Saída

INT

0

Id do item da última escrita no equipamento remoto (MQTT)

PB_CODE

Saída

INT

0

Código de retorno da ultima escrita no equipamento remoto (MQTT)

RT_EV

Saída

BOOL

FALSE

Indica fim do processo de recepção de um tópico do broker (MQTT)

RT_CHG

Saída

BOOL

FALSE

Indica que o tópico recebido é diferente do valor anterior presente na base global (MQTT)

RT_ID

Saída

INT

0

Id do item da última recepção de tópico do broker (MQTT)

RT_CODE

Saída

INT

0

Código de retorno da ultima recepção de tópico do broker (MQTT)

Nota

Para as variáveis MQTT_DMAP_ID, DEC_SEP, HI_GATE, KEEP_ALIVE, MQTT_USR, MQTT_PSW, MQTT_CACHE, W_TOPIC, W_MSG ver documentação das mesmas no bloco MQTT_GATEWAY.

STATUS

A variável STATUS retorna o código de operação, listados a seguir:

Valor

Descrição

-1

Hardware incompatível

0

Falha de hardware

1

Configuração do modem inválida

2

Sem SIMCard

10

Sem rede celular

11

Falha de autenticação na rede celular

12

Modem em modo de configuração

15

Erro no acesso ao servidor (ex: IP/porta inválidos)

19

Modem com conexão estabelecida

RESULT

Os erro gerado no processo é reportado através da variável RESULT. Este erro é obtido da saída CONN_CODE do bloco MQTT_GATEWAY chamado internamente.

Adicionalmente o bloco pode reportar os seguintes erros:

CÓDIGO

LABEL

DESCRIÇÃO

064

CO_DEV_UNCONN

Desconexão realizada pelo equipamento remoto

080

CO_EQP_TMO

Timeout na resposta de equip. externo (Modem)

Para acesso a lista completa dos códigos de falha que podem ser reportados pelo firmware G5 consulte RET_CODE - Códigos de retorno do firmware G5

Exemplo

Declaração de variáveis

Nome

Classe

Tipo

Valor Inicial

Descrição

START

Local

BOOL

FALSE

Habilita operação do bloco

MQTT_CLI_ID

Local

STRING

‘DEV_ID’

Nome cliente da conexão como broker (opcional)

MQTT_PASSW

Local

STRING

Senha de acesso do login de autenticação do broker mqtt (opcional)

MQTT_W_TOPIC

Local

STRING

Nome do tópico associado a mensagem de desconexão (string:80)

MQTT_W_MSG

Local

STRING

Mensagem de desconexão (string:140)

MQTT_CACHE

Local

INT

0

Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)

MQTT_DMAP_ID

Local

USINT

0

Id do mapeamento de dados associado ao bloco

MQTT_DEC_SEP

Local

USINT

46

Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)

MQTT_KEEP_ALIVE

Local

UINT

300

Tempo em segundos para o broker validadar a conexão

MQTT_CEL_RESULT

Local

INT

0

Resultado da operação do bloco de conexão MQTT via rede celular

MODEM_MQTT

Local

HILS.MQTT_QC1

Instância do bloco MQTT_QC1

Clique aqui para baixar a tabela de variáveis

Código ST

MODEM_MQTT(  // MQTT_4GA1
  START        := START,        // [BOOL] Habilita operação do bloco
  DMAP_ID      := MQTT_DMAP_ID, // [USINT] Id do mapeamento de dados associado ao bloco MQTT
  MODEM_SIMSTK := FALSE,        // [BOOL] Chip Multioperadora: habilita SIM ToolKit
  CLIENT_ID    := MQTT_CLI_ID,  // [STRING] Nome do cliente na conexão como o broker  (opcional)
  USER         := MQTT_USER,    // [STRING] Nome do usuário/login de autenticação do broker mqtt  (opcional)
  PASSW        := MQTT_PASSW,   // [STRING] Senha de acesso do login de autenticação do broker mqtt  (opcional)
  T_CACHE      := MQTT_CACHE,   // [INT] Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)
  DEC_SEP      := MQTT_DEC_SEP, // [USINT] Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)
  KEEP_ALIVE   := MQTT_KEEP_ALIVE, // [UINT] Tempo em segundos para o broker validadar a conexão
  W_TOPIC      := MQTT_W_TOPIC, // [STRING] Nome do tópico associado a mensagem de desconexão (string:80)
  W_MSG        := MQTT_W_MSG,   // [STRING] Mensagem de desconexão (string:140)
  );

MQTT_CEL_RESULT := MODEM_MQTT.RESULT;