#include <WiFi.h>
#include <PubSubClient.h>
const char*ssid="Wokwi-GUEST";
const char*password="";
const char*mqttServer="mqtt.netpie.io";
const int mqtt_port=1883;
const char*mqtt_Client="f26e62bb-3c25-46d9-ab5c-cfad647c0a83";
const char*mqtt_username="4bWYZRJF9qwE9JMxFrFQMU74NBsDVusR";
const char*mqtt_password="xmYSKDABkWxWCFSttdbZH7WtAaFkXWJt";
WiFiClient espClient;
PubSubClient client(espClient);
int ledPin=23;
void setup()
{
Serial.begin(9600);
delay(10);
Serial.println();
Serial.println("Connecting to..");
Serial.println(ssid);
wifiConnect();
Serial.println("");
Serial.println("WiFi connected");
client.setServer(mqttServer,mqtt_port);
client.setCallback(callback);
pinMode(ledPin,OUTPUT);
}
void wifiConnect()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid,password);
while(WiFi.status()!=WL_CONNECTED)
{
delay(1000);
Serial.print(".");
}
}
void mqttReconnect()
{
while(!client.connected())
{
if(client.connect(mqtt_Client,mqtt_username,mqtt_password))
client.subscribe("@msg/#");
else
delay(5000);
}
}
void callback(char*topic,byte*payload,unsigned int length)
{
String message;
for(int i=0;i<length;i++)
message = message+(char)payload[i];
if(String(topic)=="@msg/message")
{
if(message=="on")
{
digitalWrite(ledPin,HIGH);
}
else if(message=="off")
{
digitalWrite(ledPin,LOW);
}
}
}
void loop()
{
delay(20);
if(!client.connected())
{
mqttReconnect();
}
client.loop();
}