#include <WiFi.h>
#include <PubSubClient.h>
int Button = 12;
int Led = 2;
bool toggle = false;
//MQTT
String clientId = "myClient";
String broker = "broker.hivemq.com";
int port = 1883;
String TopicSubscribe = "module1";
String TopicPublish = "module2";
WiFiClient wifiClient;
PubSubClient wifiMQTT(wifiClient);
void mqttCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("topic:");
Serial.println(topic);
String mqttdata = "";
for (int i = 0; i < length; i++) {
mqttdata += (char)payload[i];
}
Serial.println(mqttdata);
if (mqttdata == "ledOn") {
digitalWrite(Led, HIGH);
}
if (mqttdata == "ledOff") {
digitalWrite(Led, LOW);
}
}
void setup() {
Serial.begin(115200);
pinMode(Button, INPUT);
pinMode(Led, OUTPUT);
Serial.print("Connecting to WiFi");
WiFi.begin("Wokwi-GUEST", "",6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
wifiMQTT.setServer(broker.c_str(), port);
wifiMQTT.setCallback(mqttCallback);
clientId += (String)random(1, 1000);
Serial.print("MQTT id: ");
Serial.println(clientId);
if ( wifiMQTT.connect(clientId.c_str())) {
Serial.println("MQTT Connected!");
wifiMQTT.subscribe(TopicSubscribe.c_str());
Serial.print("MQTT subscribe: ");
Serial.println(TopicSubscribe);
}
else {
Serial.println("MQTT error!");
}
}
void loop() {
if (digitalRead(Button) == LOW) {
if (wifiMQTT.connected()) {
Serial.print("MQTT publish: ");
Serial.println(TopicPublish);
if (!toggle) {
toggle = true;
wifiMQTT.publish(TopicPublish.c_str(), "ledOn");
Serial.println("led On");
}
else {
toggle = false;
wifiMQTT.publish(TopicPublish.c_str(), "ledOff");
Serial.println("led Off");
}
}
delay(1000);
}
wifiMQTT.loop();
}
Loading
esp32-c6-devkitc-1
esp32-c6-devkitc-1