Beijer ELECTRONICS MQTT Client JSON – Guia do usuário do 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.
No painel de controle do Windows, vá em “Permitir um aplicativo…”
Permitir acesso ao mosquitto.exe para todos os tipos de rede
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”
- 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.
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
- Importe o módulo de script “SCM_MQTT_Client” , veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
- Importe o módulo de script “SCM_JSON” , veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
- Adicione o M2Mqtt.NetCf35.dll e o Newtonsoft.Json.Compact.dll como assemblies referenciados ao seu projeto (consulte 5 e 5.1).
- Importe a tela, veja examparquivo projeto (iX_MQTT_Client_JSON_V1_0_0).
- Adicione o Tags e/ou ajustar Tags e Tipos de Dados.
- Adapte a tela às suas necessidades.
- Transfira o aplicativo.
- 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:
- Desembale o ex incluídoampo ZIP-file para uma pasta temporária.
- Inicie o iX Developer e carregue seu projeto.
- No Project Explorer, clique com o botão direito do mouse no canto inferior esquerdo (1. na figura)
- Na lista, selecione Importar… (2. na imagem)
- Navegue até a pasta temporária, onde você descompactou o ZIP-file e selecione SCM_MQTT_Client.neo, clique em [Abrir].
- Navegue até a pasta temporária, onde você descompactou o ZIP-file e selecione SCM_JSON.neo, clique em [Abrir].
- Selecione Screen1.xaml, clique em [Abrir].
- 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 |