#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqttServer = "broker.hivemq.com";
const int mqttPort = 1883;
const char* mqttUser = "";
const char* mqttPassword = "";
const char* clientId = "ESP32Client";
const char* topic = "alarmes_poste";
const int pin4 = 4;
const int pin5 = 5;
const int pin12 = 12;
const int pin13 = 13;
const int pin14 = 14;
const int pin15 = 15;
const int pin18 = 18;
const int pin19 = 19;
const int pin21 = 21;
const int pin22 = 22;
const int pin23 = 23;
const int pin27 = 27;
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
void setup() {
Serial.begin(115200);
pinMode(pin4, INPUT);
pinMode(pin5, INPUT);
pinMode(pin12, INPUT);
pinMode(pin13, INPUT);
pinMode(pin14, INPUT);
pinMode(pin15, INPUT);
pinMode(pin18, INPUT);
pinMode(pin19, INPUT);
pinMode(pin21, INPUT);
pinMode(pin22, INPUT);
pinMode(pin23, INPUT);
pinMode(pin27, INPUT);
connectToWiFi();
mqttClient.setServer(mqttServer, mqttPort);
mqttClient.setCallback(callback);
}
void loop() {
if (!mqttClient.connected()) {
connectToMQTT();
}
mqttClient.loop();
// Create JSON object and set values for all pins
StaticJsonDocument<256> doc;
doc["CommunPoste"] = digitalRead(pin4);
doc["2émeCommunPoste"] = digitalRead(pin5);
doc["D24VPoste"] = digitalRead(pin12);
doc["Dalimentation"] = digitalRead(pin13);
doc["D24VLigne"] = digitalRead(pin14);
doc["GE"] = digitalRead(pin15);
doc["Disolement"] = digitalRead(pin18);
doc["DGE"] = digitalRead(pin19);
doc["DONE"] = digitalRead(pin21);
doc["DASI"] = digitalRead(pin22);
doc["gasoilbas"] = digitalRead(pin23);
doc["CdV"] = digitalRead(pin27);
// Serialize JSON object to string
char buffer[256];
serializeJson(doc, buffer);
// Publish JSON string to topic
mqttClient.publish(topic, buffer);
delay(1000);
}
void connectToWiFi() {
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println(" connected.");
}
void connectToMQTT() {
while (!mqttClient.connected()) {
Serial.print("Connecting to MQTT broker...");
if (mqttClient.connect(clientId, mqttUser, mqttPassword)) {
Serial.println(" connected.");
mqttClient.subscribe(topic);
} else {
Serial.print("failed with state ");
Serial.print(mqttClient.state());
Serial.println(". Retrying in 5 seconds...");
delay(5000);
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message received [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}