Právě se nacházíte: Home / vyvoj /
EaSun - MQTT měření zdrojový kod pro ESP32
// http://EASUN.eu --------------------------------------------- http://POWMR.eu
//------------------------------------------------------------------------------
// 2023 © 2025 - Autor: Pavel Kunor - fanet@email.cz , obchod@fanet.cz
//------------------------------------------------------------------------------
/*
ESP32 pin connected to PZEM017 DC PZEM004 AC
OLED PIN
SCL - 22
SDA - 21
PZEM017 1
RX - 16
TX - 17
PZEM004 1 - 2
RX - 04
TX - 15
*/
#include
#include
//------- prace s SPIFFS pameti ESP32 --------
#include
//Systém SPIFFS je třeba naformátovat pouze při prvním spuštění
#define FORMAT_SPIFFS_IF_FAILED true
//------- WebServer --------------------------------------
#include
#include
AsyncWebServer server(80);
//------- Web klient pro predavani parametru ---------------
#include
//------- OLED -------------------------------------------
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
// 0X3C+SA0 - 0x3C or 0x3D
#define I2C_ADDRESS 0x3C
// Define proper RST_PIN if required.
#define RST_PIN -1
SSD1306AsciiWire oled;
//------- MQTT server ------------------------------------
#include
int brookerClinet = 0;
//PicoMQTT::Client mqtt("test.mosquitto.org");//klient posila data externe
PicoMQTT::Server mqtt;//Server mqtt(9000);nastaveni portu
//---- Nastaveni WiFi zakladni parametry
const char* parameter_string = "VstupniData";
const char* parameter_string2 = "VstupniData2";
//------- Nastaveni MQTT ---------------------------------
const char* parameter_string3 = "VstupniData3";//IP adres MQTT brokeru pro MQTT klient
const char* parameter_string8 = "VstupniData8";
const char* parameter_string9 = "VstupniData9";
const char* parameter_string10 = "VstupniData10";
const char* parameter_string11 = "VstupniData11";
const char* parameter_string12 = "VstupniData12";
const char* parameter_string13 = "VstupniData13";
const char* parameter_string14 = "VstupniData14";
const char* parameter_string15 = "VstupniData15";
const char* parameter_string16 = "VstupniData16";
const char* parameter_string17 = "VstupniData17";
const char* parameter_string18 = "VstupniData18";
//Cas na zasilani dat z MQTT
const char* parameter_string20 = "VstupniData20";
//Koeficient pro sondy na mereni elektriny
const char* parameter_string21 = "VstupniData21";
const char* parameter_string22 = "VstupniData22";
//--------------------------------------------------------
int CasMqtt;
//--------------------------------------------------------
const char* ssid = "";const char* password = "";
//--------------------------------------------------------
const char* broker = "null";//adresa brokeru (MQTT serveru)
int port = 1883;//port pro příjem MQTT komunikace
//--------------------------------------------------------
//Solarni vyroba REVOII ----------------------------------
String topic0 = "null";String topic0a = "null";String topic0b = "null";
//Spotreba REVOII ----------------------------------------
String topic1 = "null";
//CEZ odber REVOII ---------------------------------------
String topic1a = "null";String topic1b = "null";
//baterie REVOII -----------------------------------------
String topic2 = "null";String topic2a = "null";String topic2b = "null";
String topic2Amp = "null";String topic2kWh = "null";
//Prijem MQTT zprav externe ------------------------------
String NovaZprava = "easun/klacitko"; String HodnotaZpravy;
//---- Nastaveni MQTT ------------------------------------
int JakLAN; int JakWiFi; String WiFiIP; String WiFiMac;//DEKLAROVÁNÍ DALŠÍCH PROMĚNNÝCH--------------------------
int cezW;int cezV;int solarW;float solarA;int solarV;int loadW;//MQTT
int batteryW; float batterykWh; float batteryV; float batteryA; int batterySOC;
int counter=0;
float koeficient = 1; //2.2437 jsem mel nastaveno
float koeficientL = 1; //2.2437 jsem mel nastaveno
int NeRestartuj;//Cteni dat ze senzoru PZEM004 ---------------------------
float voltage1 = 0;float current1 = 0;float power1 = 0;
float energy1 = 0;float frequency1 = 0;float pf1 = 0;
//--------------------------------------------------------
float voltage2 = 0;float current2 = 0;float power2 = 0;
float energy2 = 0;float frequency2 = 0;float pf2 = 0;
//Cteni dat ze senzoru PZEM004 ---------------------------
#include
PZEM004Tv30 pzem1(&Serial2, 15, 4, 0x06);//PZEM-004T 100A civka
PZEM004Tv30 pzem2(&Serial2, 15, 4, 0x07);
//------- PZEM07 + serial ---------------------------------
//#define RX1 16
//#define TX1 17#define RX2 5
#define TX2 18
HardwareSerial hwSerial(1);
//HardwareSerial hwSerial1(3);#include
static uint8_t pzemSlaveAddr2 = 0x01;
static uint16_t NewshuntAddr2 = 0x0000;
ModbusMaster node2;
float PZEMVoltage2 = 0;
float PZEMCurrent2 = 0;
float PZEMPower2 = 0;
float PZEMEnergy2 = 0;int pzem01 = 1; int pzem02 = 1;
//---- Verze fimware -------------------------------------
String firmwareV = "6.00"; //Firmware version EaSun.eu ---
//---- html stranky --------------------------------------
String wifi_html; String wifi2_html; String mqtt_html;
String ok_html; String webrestart;
//--------------------------------------------------------
const char hlavicka[] PROGMEM = R"rawliteral(...................................................
Pro zkoušení doporučuji např. MQTT Explorer