#include <WiFi.h>
#include <PubSubClient.h>
const int LED_VERDE = 2;
const int LED_VERMELHO = 15;
const int PONTENCIOMETER = 34;
const char* ssid = "Wokwi-GUEST";
const char* password = ""; //incluir senha na implementação física
const char* mqtt_server = "broker.hivemq.com"; //redireciona para a conexão para o test mosquitto
WiFiClient WOKWI_Client; // cria um objeto wi-fi para comunicação
PubSubClient client(WOKWI_Client); //Cria um objeto cliente mqtt associado
void setup() {
Serial.begin(9600);
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_VERMELHO, OUTPUT);
pinMode(PONTENCIOMETER, INPUT);
setup_wifi();
client.setServer(mqtt_server,1883);
}
void loop() {
if (!client.connected()) {
reconnect();
}
wifi_on();
broker_on();
delay(100);
publish_mqtt();
}
void setup_wifi()
{
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA); //ativa o modo cliente do wi-fi(sta -> station mode > ele vai se conectar ao um ponto de acesso.)
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
// String clientId = "ESP8266Client-";
// clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect("WOKWI_Client")) {
Serial.println("connected");
// Once connected, publish an announcement...
// client.publish("outTopic", "hello world");
// ... and resubscribe
// client.subscribe("inTopic");
} else {
Serial.print("failed, rc=");
Serial.println(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(50);
}
}
}
// Function designated to publish data to the broker
void publish_mqtt(){
int valor_pot; //declara variavel
valor_pot = analogRead(PONTENCIOMETER); // coleta
Serial.println(valor_pot);
client.publish("public_pot_vav_afk", String(valor_pot).c_str());
delay(1000);
}
void wifi_on(){
if(WiFi.status()){
digitalWrite(LED_VERMELHO,HIGH);
} else {
digitalWrite(LED_VERMELHO, LOW);
}
}
void broker_on(){
if(client.connected()){
digitalWrite(LED_VERDE,HIGH);
} else {
digitalWrite(LED_VERDE, LOW);
}
}Wifi
MQTT - BROKER