GUI-Generic 1.7.0 - wsparcie dla PZEM-004T V3

krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Yarek wrote: Fri Jun 28, 2024 7:02 am Witam wszystkich

Zwracam sie z pytaniem i prośbą do @krycha88 czy była by szansa do GG wrzucić wsparcie dla PZEM dla 3 faz, ale z obsługą adresowanych PZEM-ów.
Poczyniłem dla siebie i paru znajomych kiedyś kod w Arduino do obsługi takich urządzeń (oczywiście po wcześniejszym adresowaniu które nie jest wcale zbyt skomplikowane)
Może sie komuś przyda (adresowanie PZEM):

Code: Select all

#include <PZEM004Tv30.h>
#include <SoftwareSerial.h>


#define PZEM_RX_PIN D5
#define PZEM_TX_PIN D6

SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN);
PZEM004Tv30 pzem(pzemSWSerial);
void setup() {
Serial.begin(9600);
}
uint8_t ustaw_adres = 0x02;   // tutaj wpisz adres 
            


void loop() {
pzem.setAddress(ustaw_adres);
Serial.print("Ustawiony adres:");
Serial.println(pzem.getAddress());
Serial.println();
   

delay(1000);
}
Jednak chciałbym bardzo to "urządzenie" zintegrować z SUPLA.
Ze względu na to, że do ESP8266 prócz 3szt PZEM są jeszcze podpięte 3szt przekaźnika SSR, wyświetlacz OLED i czujnik temp, to GPIO są na wyczerpaniu.

Może wyjaśnię choć nie wiem czy to ważne, urządzenie ma na celu pomiar napięcia na każdej z FAZ (L1,L2,L3) i jeżeli napięcie przekracza 248V załącza jeden z przekaźników SSR w który jest wpięta jedna z grzałek 2kW.
Cel: obniżenie napięcia na poszczególnych fazach aby uniknąć wyłączania sie instalacji PV która domyślnie przy 250V (na której z kolwiek faz)
przechodzi w tryb OFF (co jest efektem nie działania PV czyli zero produkcji)

NIe chce udostępniać publicznie całego kodu aby uniknąć zbędnej dla mnie krytyki, jestem amatorem sam sklepałem ten kod i wiem że pewno jest tam masa błędów.
Poniżej fragment kodu który chyba jest najistotniejszy jeśli chodzi o adresowanie:

Code: Select all

// inny OLED 1,3" + WWW
#include <ESP8266WiFi.h>
#include <SPI.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <PZEM004Tv30.h>
#include <SoftwareSerial.h>
//#include <LiquidCrystal_I2C.h>
//#include <Adafruit_GFX.h>
//#include "SSD1306Wire.h"
#include "SH1106Wire.h"
//Encoder myEnc(D6, D7); 

const char* ssid = ".........";
const char* password = "...........";
WiFiServer server(80);// Set port to 80
String header; // This storees the HTTP request

#define RX D5
#define TX D6

SoftwareSerial pzemSWSerial(RX, TX);
PZEM004Tv30 pzemL1(pzemSWSerial, 0x01);
PZEM004Tv30 pzemL2(pzemSWSerial, 0x02);
PZEM004Tv30 pzemL3(pzemSWSerial, 0x03);

//LiquidCrystal_I2C lcd(0x27,20,4);
//SSD1306Wire  display(0x3c, D2, D1);
SH1106Wire display(0x3c, D2, D1);

OneWire oneWire(D4); //Podłączenie do A5
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki

int maxNapiecie = 244.00;

int temp = 0;
int tempMAX = 80;

int SSR_L1 = D7;
int SSR_L2 = D8;
int SSR_L3 = D0;

int wartosc1 = 0;
float napiecieL1 = 0;

int wartosc2 = 0;
float napiecieL2 = 0;

int wartosc3 = 0;
float napiecieL3 = 0;


Ewentualnie może kolega @klew zaproponował by coś gotowego do wgrania

Pozdrawiam wszystkich
Jeżeli zaakceptujesz to, że adresy dla każdego PZEM będą przypisane na stałe to mogę dodać takie wsparcie.
https://gui-generic-builder.supla.io/
Yarek
Posts: 4
Joined: Fri Jun 28, 2024 5:47 am

Post

Witam

Oczywiście że zaakceptuje.

Code: Select all

 Adres pierwszego: 0x01
 Adres drugiego: 0x02
 Adres trzeciego: 0x03
 
Takie adresy jak wyżej ułatwiły by mi testy.

Czekam na jakieś info kiedy można generować.

I bardzo dziękuje za zainteresowanie.
Kawa oczywiście będzie.

Pozdrawiam
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Yarek wrote: Sun Jun 30, 2024 8:55 am Witam

Oczywiście że zaakceptuje.

Code: Select all

 Adres pierwszego: 0x01
 Adres drugiego: 0x02
 Adres trzeciego: 0x03
 
Takie adresy jak wyżej ułatwiły by mi testy.

Czekam na jakieś info kiedy można generować.

I bardzo dziękuje za zainteresowanie.
Kawa oczywiście będzie.

Pozdrawiam
Wrzuciłem wsparcie dla adresowanych PZEMow, tylko nie sprawdzałem czy wszystko działa bo nie mam aktualnie nawet ESP.

Flaga SUPLA_PZEM_ADR
https://gui-generic-builder.supla.io/
tomzi
Posts: 46
Joined: Fri May 19, 2023 6:12 am

Post

krycha88 wrote: Mon Jul 01, 2024 2:42 pm
Wrzuciłem wsparcie dla adresowanych PZEMow, tylko nie sprawdzałem czy wszystko działa bo nie mam aktualnie nawet ESP.

Flaga SUPLA_PZEM_ADR
Mam akurat 3x PZEM-004T i ESP - też chciałbym to ogarnąć na jednym UART za pomocą adresowania (adresy PZEM sobię oczywiście ustawię)

Pytanie tylko: trzeba zaznaczyć obie flagi (Licznik energii PZEM V3 i SUPLA_PZEM_ADR) czy tylko to SUPLA_PZEM_ADR??
Bo zaznaczyłem obie flagi i nie da się wybrać dla faz 2 i 3 tych samych GPIO.

Już sobie sam odpowiedziałem - tylko SUPLA_PZEM_ADR ;)
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

tomzi wrote: Sun Jul 28, 2024 8:44 am Już sobie sam odpowiedziałem - tylko SUPLA_PZEM_ADR ;)
Czy SUPLA_PZEM_ADR działa Ci na 3F?
https://gui-generic-builder.supla.io/
tomzi
Posts: 46
Joined: Fri May 19, 2023 6:12 am

Post

krycha88 wrote: Mon Jul 29, 2024 4:59 am Czy SUPLA_PZEM_ADR działa Ci na 3F?
Przy opcji na 1 faza działa poprawnie (adres 0xF8). Dla 3-faz jeszcze nie zdążyłem przetestować - brakło czasu, ale sprawdzę dziś/jutro i dam znać.
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

tomzi wrote: Mon Jul 29, 2024 1:39 pm
krycha88 wrote: Mon Jul 29, 2024 4:59 am Czy SUPLA_PZEM_ADR działa Ci na 3F?
Przy opcji na 1 faza działa poprawnie (adres 0xF8). Dla 3-faz jeszcze nie zdążyłem przetestować - brakło czasu, ale sprawdzę dziś/jutro i dam znać.
To wiem, że nie działa 😛
https://gui-generic-builder.supla.io/
tomzi
Posts: 46
Joined: Fri May 19, 2023 6:12 am

Post

krycha88 wrote: Mon Jul 29, 2024 3:09 pm
tomzi wrote: Mon Jul 29, 2024 1:39 pm
krycha88 wrote: Mon Jul 29, 2024 4:59 am Czy SUPLA_PZEM_ADR działa Ci na 3F?
Przy opcji na 1 faza działa poprawnie (adres 0xF8). Dla 3-faz jeszcze nie zdążyłem przetestować - brakło czasu, ale sprawdzę dziś/jutro i dam znać.
To wiem, że nie działa 😛
Niestety, ale po wybraniu pinów jako licznik 3f (TX i RX) i po zapisaniu i zresetowaniu moduł cały czas się resetuje, ESP miga diodą powoli 4 razy (jak przy łaczeniu z siecią). Następnie próbuje skomunikować się z PZEM'ami (diody od RX i TX) migają na PZEM'ach i nastepuje reset ESP'a i tak w pętli.

W takim stanie nie da się nawet wejść w konfig ponownie (próbowałem z ustawioną opcją przytrzymania 5sek jak i przez wcisniecie 10x pinu. Żeby ponownie wejść w konfig trzeba przeflashować ESP ale po ponownym ustawieniu pinów dla licznika 3f dzieje się dokładnie to samo jak wyżej w pętli.

Zauważyłem jeszcze jedną rzecz: mam podłączony OLED na I2c i w miejscu gdzie jest zasięg prawie cały czas pokazuje się "X". Na chwile pojawia się ikonka że jest zasięg następnie jakies 0,5sek później idzie komunikacja do PZEM'ów (migaja diody na wszystkich RX'ach i TX'ach) i praktycznie od razu robi się reset (OLED się również reinicjalizuje)

Edit - adresy PZEM sa ustawione OK (0x01, 0x02 i 0x03) - przy próbie komunikacji po modbus odpowiadają poprawnie
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

tomzi wrote: Mon Jul 29, 2024 7:52 pm
krycha88 wrote: Mon Jul 29, 2024 3:09 pm
tomzi wrote: Mon Jul 29, 2024 1:39 pm

Przy opcji na 1 faza działa poprawnie (adres 0xF8). Dla 3-faz jeszcze nie zdążyłem przetestować - brakło czasu, ale sprawdzę dziś/jutro i dam znać.
To wiem, że nie działa 😛
Niestety, ale po wybraniu pinów jako licznik 3f (TX i RX) i po zapisaniu i zresetowaniu moduł cały czas się resetuje, ESP miga diodą powoli 4 razy (jak przy łaczeniu z siecią). Następnie próbuje skomunikować się z PZEM'ami (diody od RX i TX) migają na PZEM'ach i nastepuje reset ESP'a i tak w pętli.

W takim stanie nie da się nawet wejść w konfig ponownie (próbowałem z ustawioną opcją przytrzymania 5sek jak i przez wcisniecie 10x pinu. Żeby ponownie wejść w konfig trzeba przeflashować ESP ale po ponownym ustawieniu pinów dla licznika 3f dzieje się dokładnie to samo jak wyżej w pętli.

Zauważyłem jeszcze jedną rzecz: mam podłączony OLED na I2c i w miejscu gdzie jest zasięg prawie cały czas pokazuje się "X". Na chwile pojawia się ikonka że jest zasięg następnie jakies 0,5sek później idzie komunikacja do PZEM'ów (migaja diody na wszystkich RX'ach i TX'ach) i praktycznie od razu robi się reset (OLED się również reinicjalizuje)

Edit - adresy PZEM sa ustawione OK (0x01, 0x02 i 0x03) - przy próbie komunikacji po modbus odpowiadają poprawnie
Już nie powinno być restartów.
https://gui-generic-builder.supla.io/
tomzi
Posts: 46
Joined: Fri May 19, 2023 6:12 am

Post

krycha88 wrote: Wed Jul 31, 2024 9:20 am
Już nie powinno być restartów.
Restartów nie ma, widać ze komunikacja z PZEMami idzie (migaja diody TX i RX na wszystkich sztukach) ale nie pokazuje ani napięć ani prądu ani mocy aktualnej -- wszytsko jest na "0"
zarówno w apliacji, chmuerze, na OLEDzie jak i na stronie głównej w konfigu.

Niestety nie mam przy sobie oscyloskopu z analizą magistral, ale wygląda jak by wszystkie gadały na raz?

Ale, jeżeli zostawię podłączony do magistrali tylko jeden PZEM (nie ma znaczenia z jakim ustawionym adresem, w konfigu cały czas ustawiony licznik 3fazowy) to jego wartości pokazują się pod Faza 3, ale na OLEDzie są dalej cały czas "0"

Return to “GUI Generic”