0
respostas

Dúvida para conexão com broker

Bom Dia,

inspirado no código do curso, fiz o código abaixo para leitura de tensão do PZEM004T, entretanto não sei o que estou fazendo de errado: testei em dois aplicativos de MQTT e acontecem a mesma coisa, sempre que o dado de tensão é enviado ao broker, o aplicativo atualiza e o valor não muda nada. Coloquei essas informações no app: Nome: Teste Endereço: test.mosquitto.org Porta: 1883 Cliente ID: pzem004tdiegopnf

Na parte de tópico configurei isso: Nome: Tensão Topico (sub): pzem/tensao

Não sei o que estou fazendo de errado, poderiam me ajudar?

Código: // --- WIFI ---

#include <ESP8266WiFi.h>

#include <DNSServer.h>

#include <ESP8266WebServer.h>

#include <WiFiManager.h>WiFiClient nodemcuClient;

// --- MQTT ---

#include <PubSubClient.h> const char* mqtt_Broker = "test.mosquitto.org"; const char* mqtt_ClientID = "pzem004tdiegopnf"; PubSubClient client(nodemcuClient); const char* topicoTensao = "pzem/tensao";

// --- PZEM004T ---

#include <PZEM004Tv30.h> PZEM004Tv30 pzem(D5, D6); float tensao;

void setup() { Serial.begin(115200); WiFiManager wifiManager; wifiManager.autoConnect("ESP8266"); client.setServer(mqtt_Broker, 1883); }

void loop() { if (!client.connected()) { reconectarMQTT(); } medirEnergia(); publicarTensaoNoTopico(); }

void reconectarMQTT() { while (!client.connected()) { client.connect(mqtt_ClientID); } }

void publicarTensaoNoTopico() { client.publish(topicoTensao, String(tensao).c_str(), true);

}

void medirEnergia(){ float tensao = pzem.voltage(); Serial.print("Tensao (V): "); Serial.println(tensao); delay(10000); }