Beijer ELECTRONICS MQTT Client JSON – Guia do usuário do módulo iX Developer Script
Beijer ELECTRONICS MQTT Client JSON - Módulo iX Developer Script

Função e área de uso

Este documento explica como se inscrever em tópicos de um broker MQTT e também publicar dados nesses tópicos. esse example utiliza um objeto JSON “MachineData” contendo 10 Tags, DeviceId e TimeStamp para ser trocado com o corretor MQTT.

Sobre este documento

Este documento de início rápido não deve ser considerado um manual completo. É uma ajuda para poder inicializar um aplicativo normal de forma rápida e fácil.

Direitos autorais © Beijer Electronics, 2021
Esta documentação (referida abaixo como 'o material') é propriedade da Beijer Electronics. O titular ou usuário tem o direito não exclusivo de usar o material. O titular não está autorizado a distribuir o material para qualquer pessoa fora de sua organização, exceto nos casos em que o material faz parte de um sistema que é fornecido pelo titular ao seu cliente. O material só pode ser usado com produtos ou software fornecidos pela Beijer Electronics. A Beijer Electronics não assume nenhuma responsabilidade por quaisquer defeitos no material ou por quaisquer consequências que possam surgir do uso do material. É responsabilidade do titular garantir que quaisquer sistemas, para quaisquer aplicações, que sejam baseados ou incluam o material (seja em sua totalidade ou em partes), atendam às propriedades ou requisitos funcionais esperados. A Beijer Electronics não tem obrigação de fornecer ao titular versões atualizadas.

Use o seguinte hardware, software, drivers e utilitários para obter um aplicativo estável:

Neste documento, usamos o seguinte software e hardware

  • Desenvolvedor iX 2.40 SP5/SP6
  • X2 baseV2/pro/marine/control/extreme series, C2, dispositivos de PC

Para mais informações consulte

  • Manual de Referência do Desenvolvedor iX (MAxx831)
  • Guia do usuário do iX Developer (MAxx832)
  • Banco de dados de conhecimento da Beijer Electronics, HelpOnline
    Este documento e outros documentos de início rápido podem ser obtidos em nossa página inicial. Por favor, use o suporte de endereço.europe@beijerelectronics.com para feedback.

Mosquito Eclipse™

O Eclipse Mosquitto™ é um broker MQTT de software livre. https://mosquitto.org/download/ Após a instalação, vá para serviços e verifique se o tipo de inicialização do Mosquitto está definido como “Automático”, o que significa que ele é iniciado automaticamente com o Windows. Após a instalação, você deve reiniciar o Windows ou iniciar o Mosquitto manualmente.

Serviço local

No painel de controle do Windows, vá em “Permitir um aplicativo…”

Página inicial do painel de controle

Permitir acesso ao mosquitto.exe para todos os tipos de rede

Alterar configuração
Testando Mosquito
Para publicar uma mensagem, inicie o CMD e mude para o diretório Mosquitto.

  • Use o mosquitto_pub.exe para publicar uma mensagem em um determinado tópico.
  • O parâmetro -t especifica o tópico Teste/Mensagem
  • O parâmetro -m especifica a mensagem “Hallo”

Sistema Windows

  • Para se inscrever em um ou vários tópicos, use o mosquitto_sub.exe
  • O parâmetro especifica o host(broker) ao qual você deseja se conectar -h 127.0.0.1
  • O parâmetro especifica a porta -p 1883
  • O parâmetro especifica o(s) tópico(s) -t Test/#
  • O # significa que você se inscreve em todos os subtópicos do tópico Teste

Biblioteca M2Mqtt e Json

Desde o iX 2.40 SP4, o M2Mqtt.NetCf35.dll, bem como o Newtonsoft.Json.Compact.dll, estão incluídos na instalação do iX.
Eles estão localizados na subpasta ..\Bin\Extensions da instalação do iX.

Inclua as bibliotecas em seu projeto
Adicione M2Mqtt.NetCf35.dll e Newtonsoft.Json.Compact.dll como Referenced Assemblies ao seu projeto.

bibliotecas em seu projeto

Conecte-se a um corretor
Crie uma nova instância da classe MqttClient: static string sMqttBroker = “127.0.0.1”; // “192.168.99.123”; // “BE526KFN” // “localhost” static MqttClient mqttClient;
A sobrecarga mais simples do construtor de classe MqttClient precisa apenas do intermediário MQTT URL como parâmetro sem especificar o protocolo (é TCP) e a porta (o padrão é 1883); pode ser um nome de host ou um endereço IP. Existem outras sobrecargas que você pode usar para especificar:

  • Uma porta diferente (não padrão 1883 ou 8883 para conexão TLS/SSL)
  • O certificado X509 necessário para uma conexão TLS/SSL com o broker (como veremos nas próximas seções)
  • Callbacks opcionais para validação de certificado acima

Crie uma nova instância MqttClient dentro do método Created do módulo de script “SCM_MQTT_Client”.

void SCM_MQTT_Client_Created(System.Object remetente, System.EventArgs e){mqttClient = new MqttClient(sMqttBroker);
// A sobrecarga abaixo deve ser usada para dispositivos da série X2 com estrutura compacta .Net ao usar um certificado
// byte[] certBytes = LeituraFileToByteArray(@”C:\Users\310208195\root.crt”);
// certificado X509Certificate = new X509Certificate(certBytes);
// mqttClient = new MqttClient(sMqttBroker, 8883, verdadeiro, certificado, certificado, MqttSslProtocols.TLSv1_2);
// A sobrecarga abaixo pode ser usada para série C2 ou PC Runtime com estrutura completa .Net ao usar um certificado
// mqttClient = new MqttClient(sMqttBroker, 8883, true, new X509Certificate(@”C:\Users\310208195\root.crt”), new X509Certificate(@”C:\Users\310208195\root.crt”), MqttSslProtocols .TLSv1_2);

// Cadastra-se na mensagem recebida
mqttClient.MqttMsgPublishReceived += client_receivedMessage;
m_Timer= novo temporizador();
m_Timer.Enabled = verdadeiro;
m_Timer.Interval = 2500; //EM
m_Timer.Tick += OnTimerTick;

Inscreva-se em um ou vários tópicos e conecte-se ao corretor
string[] sTopics = new string[] {“Máquina1”}; byte[] QOSbytes = novo byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE};
Especifique um nível de QOS para cada tópico – o tamanho do array de “QOSbytes” deve caber no tamanho do array de “sTopics”!

public void mqttConnect(){ if (mqttClient.IsConnected) return; string clientId = Guid.NewGuid().ToString(); mqttClient.Connect(clientId); // Inscrever-se no tópico mqttClient.Subscribe(sTopics, QOSbytes);

Configuração do objeto Json
A configuração, bem como a serialização/desserialização do objeto Json são feitas dentro do módulo de script “SCM_JSON”. Na seção de definição, o Tag A matriz é especificada. private static GlobalDataItem[] Machine1Tags = novo GlobalDataItem[ {

  • Globais.Tags.pubTemperatura,
  • Globais.Tags.pubProduzidoPCS,
  • Globais.Tags.pubVoltage,
  • Globais.Tags.pubAtual,
  • Globais.Tags.pubSpeed,
  • Globais.Tags.pubBatchName,
  • Globais.Tags.pubStatus,
  • Globais.Tags.pubPower,
  • Globais.Tags.pubOperatingHours,
  • Globais.Tags.pubAlarmsActive};

A estrutura de dados é definida dentro da classe “MachineData”.
classe pública MachineData{
string pública DeviceId { get; definir; }
string pública TimeStamp { obter; definir; }
objeto público[] Dados { get; definir; }
DadosMáquina públicos(){}
public MachineData(string deviceId, DateTime timeStamp, objeto[] dados){
DispositivoId = dispositivoId;
HoraStamp = tempoStamp.Para sequenciar();
Dados = dados;
}
}

Publicar o objeto Json em um tópico
private bool mqttPublish(string sTopic, string sMessage){
bool bSucesso = false;
System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
byte[] MessageBytes = enc.GetBytes(sMessage);
if (mqttClient.IsConnected){
mqttClient.Publish(sTopic, MessageBytes,
MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, falso);
bSucesso = verdadeiro;
}
return bSucesso;
}

Neste example o objeto JSON é publicado a cada 2500ms utilizando um timer.

private void OnTimerTick(System.Object Sender, EventArgs e){
Globais.Tags.mqttConnected.Value = mqttClient.IsConnected;
Globais.Tags.mqttBrokerTopics.Value = mqttClient.IsConnected? sMqttBroker +”
conectado – Tópicos: ” + string.Join(“;”, sTopics): “não conectado”;
if (mqttClient.IsConnected)
publicarMessage(Globals.SCM_JSON.Create_JSON());
}
private void publicarMessage(string sJSON){
se (Globais.Tags.EncryptMessage.Value)
sJSON = mensagem criptografada(sJSON);
mqttPublish(sTopics[0],sJSON);
}

Receba e avalie um objeto Json recebido
void SCM_MQTT_Client_Created(System.Object remetente, System.EventArgs e){
…..
mqttClient.MqttMsgPublishReceived += client_receivedMessage;
…..
private void client_receivedMessage(remetente do objeto, MqttMsgPublishEventArgs e){
// Trata a mensagem recebida
string Mensagem recebida =
System.Text.Encoding.Default.GetString(e.Message,0,e.Message.Length);
Globais.Tags.JSON_String.Value = recebeuMensagem;
if (checkEncryption(mensagem recebida))
recebeuMessage = decryptMessage(receivedMessage);
Globals.SCM_JSON.Deserialize_JSON(mensagem recebida);

Desconectar de um corretor
public void mqttDisconnect(){
// Cancelar assinatura do tópico
mqttClient.Unsubscribe(sTopics);
if (mqttClient.IsConnected)
mqttClient.Disconnect();

Observação!

  • Certifique-se sempre de desconectar o cliente antes de fechar o aplicativo!
  • Este example funciona bem para dispositivos da série X2 baseV2/pro/marine/control/extreme, C2 e PC.
  • Siga as diretrizes abaixo sobre como instalar em seu aplicativo.

Incluindo o cliente MQTT e a funcionalidade de serialização Json

Implementação

  1. Importe o módulo de script “SCM_MQTT_Client” , veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
  2. Importe o módulo de script “SCM_JSON” , veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
  3. Adicione o M2Mqtt.NetCf35.dll e o Newtonsoft.Json.Compact.dll como assemblies referenciados ao seu projeto (consulte 5 e 5.1).
  4. Importe a tela, veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
  5. Adicione o Tags e/ou ajustar Tags e Tipos de Dados.
  6. Adapte a tela às suas necessidades.
  7. Transfira o aplicativo.
  8. Execute o aplicativo.

Importe as partes do projeto
Siga as etapas para adicionar a tela anexa e o módulo de script ao seu projeto iX:
Importar o projeto

  1. Desembale o ex incluídoampo ZIP-file para uma pasta temporária.
  2. Inicie o iX Developer e carregue seu projeto.
  3. No Project Explorer, clique com o botão direito do mouse no canto inferior esquerdo (1. na figura)
  4. Na lista, selecione Importar… (2. na imagem)
  5. Navegue até a pasta temporária, onde você descompactou o ZIP-file e selecione SCM_MQTT_Client.neo, clique em [Abrir].
  6. Navegue até a pasta temporária, onde você descompactou o ZIP-file e selecione SCM_JSON.neo, clique em [Abrir].
  7. Selecione Screen1.xaml, clique em [Abrir].
  8. Feito!

Sobre Beijer Electronics

A Beijer Electronics é uma empresa inovadora multinacional que conecta pessoas e tecnologias para otimizar processos para aplicativos essenciais aos negócios. A nossa oferta inclui comunicação do operador, soluções de automação, digitalização, soluções de exibição e suporte. Como especialistas em software, hardware e serviços fáceis de usar para a Internet Industrial das Coisas, capacitamos você a enfrentar seus desafios por meio de soluções de ponta. A Beijer Electronics é uma empresa do Grupo Beijer. O Beijer Group vendeu mais de 1.6 bilhão de coroas suecas em 2019 e está listado na lista NASDAQ OMX Nordic Stockholm Small Cap sob o código BELE. www.beijergroup.com

Contate-nos
Escritórios e distribuidores globais

Documentos / Recursos

Beijer ELECTRONICS MQTT Client JSON - Módulo iX Developer Script [pdf] Guia do Usuário
Módulo de script do desenvolvedor JSON iX do cliente MQTT, módulo de script do desenvolvedor JSON iX, módulo de script do desenvolvedor iX, módulo de script do desenvolvedor, módulo de script, módulo

Referências

Deixe um comentário

Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *