#include <PubSubClient.h>
#include <WiFi.h>
#include <ArduinoJson.h>
#include <Wire.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqttServer = "mqtt.tago.io";
const int mqttPort = 1883;
const char* mqttUser = "Default";
const char* mqttPassword = "c8585135-d485-4dbf-9edb-6f47688f5fe7";
WiFiClient espClient;
PubSubClient client(espClient);
unsigned long tempo;
int led = 33;
int botao = 32;
int potenciometro = 34;
bool leituraAtual;
String mqqtChegou;
char envioDados[100];
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print("Connecting to WiFi:");
Serial.println(ssid);
}
Serial.println("Connected to the WiFi network");
Serial.println("");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
while (!client.connected()) {
Serial.println("Connecting to MQTT…");
String clientId = "ESP32Client-";
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str(), mqttUser, mqttPassword )) {
// if (client.connect(clientId.c_str())) {
Serial.println("connected");
} else {
Serial.print("failed with state ");
Serial.print(client.state());
delay(2000);
}
}
Serial.print("Tentando enviar a mensagem");
client.publish("senai/comandos", "Hello from ESP32");
client.subscribe("senai/recebimentos");
client.subscribe("senai/comandos");
pinMode(led,OUTPUT);
pinMode(botao,INPUT);
}
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived in topic: ");
Serial.println(topic);
Serial.print("Message:");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
char JSONMessage[length];
for (int i = 0; i < length; i++) {
JSONMessage[i] = (char)payload[i];
}
Serial.println("Parsing start: ");
Serial.println(JSONMessage);
StaticJsonDocument<300> JSONBuffer;
deserializeJson(JSONBuffer, JSONMessage);
DeserializationError error = deserializeJson(JSONBuffer, JSONMessage);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
}
const char* variable = JSONBuffer["variable"];
String variavel = String(variable);
bool value = JSONBuffer["value"];
Serial.print("variavel: ");
Serial.println(variable);
Serial.print("Valor: ");
Serial.println(value);
Serial.println();
if(variavel == "led"){
digitalWrite(led, value);
}
}
void loop() {
client.loop();
if((millis() - tempo) > 1000){
StaticJsonDocument<300> potenciometroJson;
potenciometroJson["variable"] = "potenciometro";
potenciometroJson["value"] = analogRead(potenciometro);
Serial.println(analogRead(potenciometro));
serializeJson(potenciometroJson, envioDados);
client.publish("senai/comandos", envioDados);
tempo = millis();
}
}