🛠 Remonter des données machine en MQTT via Ethernet

Arduino Opta (micro PLC, STM32H747) · intermediaire · Schéma : IMG-opta-plc-intermediaire-3-opta-mqtt-industriel.svg — Opta publiant sur un broker MQTT les états de ses entrées vers un serveur de supervision et un dashboard dans le cloud via le réseau Ethernet

Objetivos

Conectar el Opta a un broker MQTT para enviar el estado de las máquinas a un supervisor (Node-RED, Mosquitto, Tasmota, cloud). El Ethernet 10/100 integrado garantiza un enlace fiable en el taller; el protocolo MQTT, ligero y de publicación/suscripción, es el estándar de la IIoT. Publicarás las entradas digitales cada segundo en un topic jerárquico.

Material

Código completo

// opta_mqtt.ino — publication des entrees I1..I4 en MQTT sur Ethernet
#include <Ethernet.h>
#include <PubSubClient.h>

EthernetClient ethClient;
PubSubClient mqtt(ethClient);

const char* BROKER = "192.168.1.50"; // IP de votre broker Mosquitto
const int ENTREES[] = {A0, A1, A2, A3}; // bornes I1..I4
char topic[40], payload[8];

void setup {
  Serial.begin(9600);
  if (Ethernet.begin == 0) { Serial.println("Echec DHCP"); while (1); }
  Serial.println(Ethernet.localIP);
  mqtt.setServer(BROKER, 1883);
  for (int i = 0; i < 4; i++) pinMode(ENTREES[i], INPUT);
}

void boucleMqtt {
  while (!mqtt.connected) {
    if (mqtt.connect("opta-atelier")) { Serial.println("MQTT connecte"); return; }
    delay(2000); // nouvelle tentative toutes les 2 s
  }
}

void loop {
  boucleMqtt;
  for (int i = 0; i < 4; i++) {
    snprintf(topic, sizeof(topic), "usine/opta1/E%d", i + 1);
    snprintf(payload, sizeof(payload), "%d", digitalRead(ENTREES[i]) ? 1 : 0);
    mqtt.publish(topic, payload, true); // retain = true
  }
  mqtt.loop;
  delay(1000);
}

Verificación esperada

Con mosquitto_sub -t 'usine/opta1/#', los mensajes «usine/opta1/E1» = 0/1 desfilan cada segundo y siguen tus entradas de 24 V. El flag retain permite al supervisor conocer el último estado desde su conexión.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales