Problem z aktualizacją licznika PZEM004

Maniek913
Posts: 519
Joined: Thu Feb 22, 2018 9:46 pm

Post

klew wrote: Wed Aug 30, 2023 8:26 am
Maniek913 wrote: Wed Aug 30, 2023 8:24 am
klew wrote: Wed Aug 30, 2023 8:04 am

A próbowałeś dodać 3 liczniki jednofazowe?
Chętnie ale mogę poprosić o przykład z trzema licznikami jednofazowymi? Szkoda czasu na moje błędy w składni.
Tak jak to krycha wcześniej podał, tylko zamiast jednego pzema 3 fazowego dodajesz 3x:

Code: Select all

  new Supla::Sensor::PZEMv3(5, 4);  // (RX,TX)  "PZEM Addr default to 0xF8"
5 i 4 to oczywiście gpio rx i tx
Tak rozumiem, a nie trzeba zmienić tego:

Code: Select all

#include <supla/sensor/three_phase_PzemV3.h>
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Dla tego przykładu co napisałem wcześniej zamień

Code: Select all

ThreePhasePZEMv3
na

Code: Select all

new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_1);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_2);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_3);
oraz dodaj

Code: Select all

#include "src/sensor/PzemV3.h"
A przy okazji sprawdź co napisałem wcześniej z zwiększeniem czasu odczytów.
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 10022
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Maniek913 wrote: Wed Aug 30, 2023 8:31 am
Tak rozumiem, a nie trzeba zmienić tego:

Code: Select all

#include <supla/sensor/three_phase_PzemV3.h>
#include <supla/sensor/PzemV3.h>
Maniek913
Posts: 519
Joined: Thu Feb 22, 2018 9:46 pm

Post

krycha88 wrote: Wed Aug 30, 2023 8:31 am Dla tego przykładu co napisałem wcześniej zamień

Code: Select all

ThreePhasePZEMv3
na

Code: Select all

new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_1);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_2);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_3);
oraz dodaj

Code: Select all

#include "src/sensor/PzemV3.h"
A przy okazji sprawdź co napisałem wcześniej z zwiększeniem czasu odczytów.
Więc trzy liczniki jednofazowe pojawiły się , ale niestety na każdym brak wskazań. Zmieniłem czas odczytu i znowu powróciłem do pierwotnego twojego przykładu z licznikiem trójfazowym , widać po diodach że odczyty są dużo rzadsze (co ok pół minuty , a miały być chyba częstsze?), ale nic to nie dało .
Bardzo dziękuję za poświęcony czas, ale muszę już kończyć, wieczorem spróbuję coś pomieszać z starymi bibliotekami, ale nie chcę robić bałaganu w środowisku i musze odpalić inną maszynę. Jeszcze raz dziękuję i na razie zmykam.
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

to jeszcze spróbuj odpalić to na ESP32.
https://gui-generic-builder.supla.io/
Maniek913
Posts: 519
Joined: Thu Feb 22, 2018 9:46 pm

Post

Dalej drążę temat :?
Esp32jeszcze nie próbowałem, ale wykonałem dziesiątki testów i mam takie spostrzeżenia:
1.Zmiana wersji biblioteki supla nic nie wnosi ciągle ten sam problem.
2.Zmiana wersji płytek- nie próbowałem , bo akurat dla płytki esp8266 nie wiem dlaczego nie można w łatwy sposób zmienić wersji w
arduinoIDE aktualnie jest 3.1.2 i nie można wybrać innej wersji.

Skupiłem się na przykładzie od kol. krycha z trzema licznikami jednofazowymi:

Code: Select all

#include <SuplaDevice.h>
//#include <supla/sensor/three_phase_PzemV3.h>
#include <supla/sensor/PzemV3.h>
#include <supla/network/esp_wifi.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/wifi_parameters.h>

Supla::ESPWifi wifi;
Supla::LittleFsConfig configSupla;
Supla::EspWebServer suplaServer;

#define PIN_RX_1     3
#define PIN_TX_1     1
#define PIN_TX_2     4
#define PIN_TX_3     5

void setup() {

  Serial.begin(115200);
  
  new Supla::Html::DeviceInfo(&SuplaDevice);
  new Supla::Html::WifiParameters;
  new Supla::Html::ProtocolParameters;

  //new Supla::Sensor::ThreePhasePZEMv3(PIN_RX_1, PIN_TX_1, PIN_RX_1, PIN_TX_2, PIN_RX_1, PIN_TX_3);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_1);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_2);
new Supla::Sensor::PZEMv3(PIN_RX_1, PIN_TX_3);

  SuplaDevice.setName("Test_PZEMv3");
  SuplaDevice.begin();
}

void loop() {
  SuplaDevice.iterate();
}
I obecnie jest taka sytuacja : w cloud pojawiły się trzy liczniki, ponumerowałem je 1,2,3. Podłączając fizycznie trzy PZEM-y do układu nie ma wskazań na żadnym liczniku, ale po odłączeniu dwóch szt. Pojawiają się pomiary na liczniku nr3, i co najciekawsze, nie ma znaczenia który PZEM pozostawię podłączony do układu(w sensie na jakichkolwiek z skonfigurowanych GPIO) , zawsze pojawiają się pomiary na tym samym, trzecim kanale w cloud.
Trzeba by jeszcze pewnie spróbować zastosować całkiem inne pary pinów dla trzech liczników, ale niestety mam tylko jeden wolny PZEM i działające układy liczników trójfazowych z sztywnymi połączeniami (PCB) i trudno byłoby to zrobić.
pavel@
Posts: 58
Joined: Mon Oct 31, 2022 11:19 am

Post

Czy to oznacza że PZEM 3 fazowy przestał działać na nowych bibliotekach i wszyscy nowi użytkownicy którzy nie maja wcześniejszych kompilacji są skazani na porażkę ? :shock:

Moja konfiguracja
You do not have the required permissions to view the files attached to this post.
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

pavel@ wrote: Fri Sep 01, 2023 2:51 pm Czy to oznacza że PZEM 3 fazowy przestał działać na nowych bibliotekach i wszyscy nowi użytkownicy którzy nie maja wcześniejszych kompilacji są skazani na porażkę ? :shock:

Moja konfiguracja
Zamiast tak dramatyzować to poproszę ponownie o wykonanie testu na ESP32...
https://gui-generic-builder.supla.io/
Maniek913
Posts: 519
Joined: Thu Feb 22, 2018 9:46 pm

Post

Niestety nie mogę skompilować przyładu dla esp32:

Code: Select all

C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino: In function 'void setup()':
C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino:58:33: error: no matching function for call to 'Supla::Sensor::PZEMv3::PZEMv3(int, int)'
   new Supla::Sensor::PZEMv3(5, 4);  // (RX,TX)  "PZEM Addr default to 0xF8"
                                 ^
In file included from C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino:21:
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:49:3: note: candidate: 'Supla::Sensor::PZEMv3::PZEMv3(HardwareSerial*, uint8_t, uint8_t, uint8_t)'
   PZEMv3(HardwareSerial *serial,
   ^~~~~~
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:49:3: note:   candidate expects 4 arguments, 2 provided
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note: candidate: 'constexpr Supla::Sensor::PZEMv3::PZEMv3(const Supla::Sensor::PZEMv3&)'
 class PZEMv3 : public OnePhaseElectricityMeter {
       ^~~~~~
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note:   candidate expects 1 argument, 2 provided
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note: candidate: 'constexpr Supla::Sensor::PZEMv3::PZEMv3(Supla::Sensor::PZEMv3&&)'
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note:   candidate expects 1 argument, 2 provided

exit status 1

Compilation error: no matching function for call to 'Supla::Sensor::PZEMv3::PZEMv3(int, int)'
Taki sam błąd przy kompilacji przykładu z biblioteki.
krycha88
Posts: 5417
Joined: Fri Nov 16, 2018 7:25 am

Post

Maniek913 wrote: Sat Sep 02, 2023 2:22 pm Niestety nie mogę skompilować przyładu dla esp32:

Code: Select all

C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino: In function 'void setup()':
C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino:58:33: error: no matching function for call to 'Supla::Sensor::PZEMv3::PZEMv3(int, int)'
   new Supla::Sensor::PZEMv3(5, 4);  // (RX,TX)  "PZEM Addr default to 0xF8"
                                 ^
In file included from C:\Users\Damian\Desktop\Pzem_V_3\Pzem_V_3.ino:21:
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:49:3: note: candidate: 'Supla::Sensor::PZEMv3::PZEMv3(HardwareSerial*, uint8_t, uint8_t, uint8_t)'
   PZEMv3(HardwareSerial *serial,
   ^~~~~~
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:49:3: note:   candidate expects 4 arguments, 2 provided
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note: candidate: 'constexpr Supla::Sensor::PZEMv3::PZEMv3(const Supla::Sensor::PZEMv3&)'
 class PZEMv3 : public OnePhaseElectricityMeter {
       ^~~~~~
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note:   candidate expects 1 argument, 2 provided
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note: candidate: 'constexpr Supla::Sensor::PZEMv3::PZEMv3(Supla::Sensor::PZEMv3&&)'
d:\ArduinoIDE\libraries\SuplaDevice\src/supla/sensor/PzemV3.h:38:7: note:   candidate expects 1 argument, 2 provided

exit status 1

Compilation error: no matching function for call to 'Supla::Sensor::PZEMv3::PZEMv3(int, int)'
Taki sam błąd przy kompilacji przykładu z biblioteki.
Użyj buildera. Ja zrobiłem przykład dla ESP8266.
https://gui-generic-builder.supla.io/

Return to “GUI Generic”