#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 ="3ffcea2c-6443-4bfe-8ff4-af3b5c53de0e";
const char* mqtt_username ="fwisP7kKQH685V36TXUy6xYD3ouzegrx";
const char* mqtt_password ="~*02SsipOftDmzTyqVUzZoa5YBBE!ITW";
WiFiClient espClient;
PubSubClient client(espClient);
int rpin=21;
int gpin=19;
int bpin=18;
void setup()
{
Serial.begin(9600);
delay(10);
Serial.println();
Serial.print("Connecting to");
Serial.print(" ");
Serial.print(ssid);
wifiConnect();
Serial.println("");
Serial.println("WiFi connected");
client.setServer(mqttServer,mqtt_port);
client.setCallback(callback);
pinMode(rpin,OUTPUT);
pinMode(gpin,OUTPUT);
pinMode(bpin,OUTPUT);
}
void wifiConnect()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid,password);
while(WiFi.status()!=WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
}
void mqttReconnect()
{
while(!client.connected())
{
if(client.connect(mqtt_Client, mqtt_username, mqtt_password)){
client.subscribe("@shadow/data/updated");
Serial.print("Subscribed");}
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];
Serial.print(message);
if(String(topic)=="@shadow/rgb")
{
if(message=="r")
{
analogWrite(rpin,255);
analogWrite(gpin,0);
analogWrite(bpin,0);
}
else if(message=="g")
{
analogWrite(rpin,0);
analogWrite(gpin,255);
analogWrite(bpin,0);
}
else if(message=="b")
{
analogWrite(rpin,0);
analogWrite(gpin,0);
analogWrite(bpin,255);
}
}
}
void loop()
{
if(!client.connected())
{
mqttReconnect();
}
client.loop();
}