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); }