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
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 |
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;