#include <WiFi.h>
#include <PubSubClient.h>
#include <WiFiClient.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// MQTT details RabbitMQ (MQTT)
const char* mqtt_server = "chimpanzee.rmq.cloudamqp.com";
const char* mqtt_user = "ugdfxnks:ugdfxnks";
const char* mqtt_password = "xjpDGcniFqwgbnKhyZ2aP9E8z5k4u5m1";
const int mqtt_port = 1883;
const int ledPin = 12;
// Cliente WiFi y MQTT
WiFiClient espClient;
PubSubClient client(espClient);
// Función para conectar al WiFi
void setup_wifi() {
pinMode(ledPin, OUTPUT);
delay(10);
Serial.begin(115200);
Serial.print("Connecting to WiFi");
WiFi.begin(ssid,pass, 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
}
// MQTT mesajlarını işlemek için geri arama işlevi
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Mesaj alındı: ");
Serial.println(topic);
// text e dönüştür
String message;
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}
Serial.print("Mesaj içeriği: ");
Serial.println(message);
// Alınan mesaja göre LED kontrol
if (String(topic) == "led/control") {
if (message == "ON") {
digitalWrite(ledPin, HIGH);
Serial.println("LED AÇIK");
} else if (message == "OFF") {
digitalWrite(ledPin, LOW);
Serial.println("LED KAPALI");
}
}
}
// Setup
void setup() {
setup_wifi();
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
// MQTT aracısına bağlanma
while (!client.connected()) {
Serial.println("MQTT bağlanma...");
if (client.connect("ESP32Client", mqtt_user, mqtt_password)) {
Serial.println("MQTT bağlandı");
client.subscribe("led/control"); // -----------
} else {
Serial.print("Bağlantı başarısız oldu. Durum: ");
Serial.println(client.state());
delay(5000);
}
}
}
// Ana döngü
void loop() {
client.loop(); // MQTT mesajlarını dinleme
}