Jeżeli zaakceptujesz to, że adresy dla każdego PZEM będą przypisane na stałe to mogę dodać takie wsparcie.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):Jednak chciałbym bardzo to "urządzenie" zintegrować z SUPLA.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); }
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
GUI-Generic 1.7.0 - wsparcie dla PZEM-004T V3
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
https://gui-generic-builder.supla.io/
-
- Posts: 4
- Joined: Fri Jun 28, 2024 5:47 am
Witam
Oczywiście że zaakceptuje.
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
Oczywiście że zaakceptuje.
Code: Select all
Adres pierwszego: 0x01
Adres drugiego: 0x02
Adres trzeciego: 0x03
Czekam na jakieś info kiedy można generować.
I bardzo dziękuje za zainteresowanie.
Kawa oczywiście będzie.
Pozdrawiam
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Wrzuciłem wsparcie dla adresowanych PZEMow, tylko nie sprawdzałem czy wszystko działa bo nie mam aktualnie nawet ESP.Yarek wrote: Sun Jun 30, 2024 8:55 am Witam
Oczywiście że zaakceptuje.Takie adresy jak wyżej ułatwiły by mi testy.Code: Select all
Adres pierwszego: 0x01 Adres drugiego: 0x02 Adres trzeciego: 0x03
Czekam na jakieś info kiedy można generować.
I bardzo dziękuje za zainteresowanie.
Kawa oczywiście będzie.
Pozdrawiam
Flaga SUPLA_PZEM_ADR
https://gui-generic-builder.supla.io/
-
- Posts: 46
- Joined: Fri May 19, 2023 6:12 am
Mam akurat 3x PZEM-004T i ESP - też chciałbym to ogarnąć na jednym UART za pomocą adresowania (adresy PZEM sobię oczywiście ustawię)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
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
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
To wiem, że nie działa
https://gui-generic-builder.supla.io/
-
- Posts: 46
- Joined: Fri May 19, 2023 6:12 am
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
-
- Posts: 5417
- Joined: Fri Nov 16, 2018 7:25 am
Już nie powinno być restartów.tomzi wrote: Mon Jul 29, 2024 7:52 pmNiestety, 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
https://gui-generic-builder.supla.io/
-
- Posts: 46
- Joined: Fri May 19, 2023 6:12 am
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"