Licznik energii elektrycznej

Awatar użytkownika
QLQ
Posty: 2276
Rejestracja: ndz wrz 03, 2017 9:13 am
Lokalizacja: Koszalin

No dobra .. bo tak grzebie i grzebie na git - a co tu jest ? : https://github.com/SUPLA/supla-espressif-esp

czy tu nie da się skomplować energy_meter skoro są : https://github.com/SUPLA/supla-espressi ... ty_meter.c oraz https://github.com/SUPLA/supla-espressi ... ty_meter.h?

Tak aby podłączyć to pod piny D1i D2 ??? :) czy za prosto to sobie wytłumaczyłem ? ;)
jak coś nie działa to włącz zasilanie.....
Awatar użytkownika
QLQ
Posty: 2276
Rejestracja: ndz wrz 03, 2017 9:13 am
Lokalizacja: Koszalin

krycha88 pisze: pn lis 25, 2019 8:50 pm
Robert Błaszczak pisze: pn lis 25, 2019 8:32 pm Sensownym rozwiązaniem zdaje się być zastosowanie liczników z interfejsem Modbus (np.: https://www.orno.pl/pl/category/product ... -MID--100A). Mam taki licznik spięty z takim konwerterem https://pl.aliexpress.com/item/32789859586.html. Konwerter podpinam do drugiego konwertera RS232 / USB i bez problemu czytam na komputerze rejestry licznika energii.
Protokół Modbus jest w miarę opisany przez producenta, więc wystarczyłoby oprogramować ESP, który czytałby co określony interwał rejestry licznika energii i wysyłał do Supli. Modbus to magistrala dwużyłowa, na której spokojnie może być kilkanaście liczników. Niestety moja wiedza w zakresie programowania jest jeszcze zdecydowanie zbyt słaba :) .

Ps.
Jeśli któryś z kolegów piszących programy chciałby się tematem pobawić, to mogę mu wysłać licznik energii wraz konwerterem RS-232/RS-485 oraz Wemosem D1 mini.
Bardzo ciekawa propozycja i prawdopodobnie najbardziej niezawodna 😀
Faktycznie, bardzo fajne rozwiązanie a i sprzęt ogólnodostępny w PL i pasuje na szynę DIN od razu.

Problemem jest tylko jak te odczytane dane wysłać do Cloud'a w Pzem jest dokładnie ten sam protokół.
Potrzebna byłaby tylko "konersja" tych danych ..


Ja bym to pod Arduino widział tak (tak jak dodaje się czujnik ):

double get_electricity_meter (int channelNumber, dane_jakie_chcemy_wysłac_z ponizej_stuktury_do_cloud last_val) {

}
Wykorzstać to co jest w strukturze electricity_meter w proto.h:

Kod: Zaznacz cały

typedef struct {
  // 3 phases
  unsigned _supla_int16_t freq;        // * 0.01 Hz
  unsigned _supla_int16_t voltage[3];  // * 0.01 V
  unsigned _supla_int16_t current[3];  // * 0.001 A
  _supla_int_t power_active[3];        // * 0.00001 kW
  _supla_int_t power_reactive[3];      // * 0.00001 kvar
  _supla_int_t power_apparent[3];      // * 0.00001 kVA
  _supla_int16_t power_factor[3];      // * 0.001
  _supla_int16_t phase_angle[3];       // * 0.1 degree
} TElectricityMeter_Measurement;       // v. >= 10

#define EM_VAR_FREQ 0x0001
#define EM_VAR_VOLTAGE 0x0002
#define EM_VAR_CURRENT 0x0004
#define EM_VAR_POWER_ACTIVE 0x0008
#define EM_VAR_POWER_REACTIVE 0x0010
#define EM_VAR_POWER_APPARENT 0x0020
#define EM_VAR_POWER_FACTOR 0x0040
#define EM_VAR_PHASE_ANGLE 0x0080
#define EM_VAR_FORWARD_ACTIVE_ENERGY 0x0100
#define EM_VAR_REVERSE_ACTIVE_ENERGY 0x0200
#define EM_VAR_FORWARD_REACTIVE_ENERGY 0x0400
#define EM_VAR_REVERSE_REACTIVE_ENERGY 0x0800
#define EM_VAR_ALL 0xFFFF

#define EM_MEASUREMENT_COUNT 5

// [IODevice->Server->Client]
typedef struct {
  unsigned _supla_int64_t total_forward_active_energy[3];    // * 0.00001 kW
  unsigned _supla_int64_t total_reverse_active_energy[3];    // * 0.00001 kW
  unsigned _supla_int64_t total_forward_reactive_energy[3];  // * 0.00001 kvar
  unsigned _supla_int64_t total_reverse_reactive_energy[3];  // * 0.00001 kvar

  // The price per unit, total cost and currency is overwritten by the server
  // total_cost == SUM(total_forward_active_energy[n] * price_per_unit
  _supla_int_t total_cost;      // * 0.01
  _supla_int_t price_per_unit;  // * 0.0001
  // Currency Code A https://www.nationsonline.org/oneworld/currencies.htm
  char currency[3];

  _supla_int_t measured_values;
  _supla_int_t period;  // Approximate period between measurements in seconds
  _supla_int_t m_count;
  TElectricityMeter_Measurement m[EM_MEASUREMENT_COUNT];  // Last variable in
                                                          // struct!
} TElectricityMeter_ExtendedValue;                        // v. >= 10

#define EM_VALUE_FLAG_PHASE1_ON 0x01
#define EM_VALUE_FLAG_PHASE2_ON 0x02
#define EM_VALUE_FLAG_PHASE3_ON 0x04

// [IODevice->Server->Client]
typedef struct {
  char flags;
  unsigned _supla_int_t total_forward_active_energy;  // * 0.01 kW
} TElectricityMeter_Value;                            // v. >= 10
i tak:
SuplaDevice.addElectricityMeter();
cb.get_ElectricityMeter = &get_ElectricityMeter;

podobnie dla ImpulsCounter.
jak coś nie działa to włącz zasilanie.....
michalbajda
Posty: 5
Rejestracja: sob lis 09, 2019 3:24 pm

Odnośnie gubienia impulsów u mnie jak dotąd maksymalny pobór prądy był na poziomie 450-500W więc na pewno nie jest to kwestia nie nadążania Wemos'a za impulsami. Po zmianie impulsów z 1000 na 818 (bo wyliczyłem po różnicach odczytów) wskazania na Supli i liczniku pokrywają się już w miarę ok.
Wczoraj zakupiłem podlicznik ORNO OR-WE-519, zobaczymy czy lepszej jakości licznik daje bardziej "przyswajalne" impulsy dla Wemos'a.
Awatar użytkownika
o_rany
Posty: 275
Rejestracja: śr lis 14, 2018 5:32 pm
Lokalizacja: Sosnowiec
Kontakt:

michalbajda pisze: wt gru 03, 2019 7:34 pm Odnośnie gubienia impulsów u mnie jak dotąd maksymalny pobór prądy był na poziomie 450-500W więc na pewno nie jest to kwestia nie nadążania Wemos'a za impulsami. Po zmianie impulsów z 1000 na 818 (bo wyliczyłem po różnicach odczytów) wskazania na Supli i liczniku pokrywają się już w miarę ok.
Wczoraj zakupiłem podlicznik ORNO OR-WE-519, zobaczymy czy lepszej jakości licznik daje bardziej "przyswajalne" impulsy dla Wemos'a.
Tez kombinowalem z mnoznikiem ale niestety gubi nieliniowo :(
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

o_rany pisze: wt gru 03, 2019 8:24 pm
Tez kombinowalem z mnoznikiem ale niestety gubi nieliniowo :(
Na którym liczniku impulsów próbowałeś?
Widzimy się na Supla Offline Party vol. 2 :!:
Awatar użytkownika
o_rany
Posty: 275
Rejestracja: śr lis 14, 2018 5:32 pm
Lokalizacja: Sosnowiec
Kontakt:

Na sofcie i hardwarze Roberta (wemos) pojedynczy licznik podlaczony pod wyjscie impulsowe fizycznego licznika prądu, oraz na sofcie od Slawka na sonoffie oraz canwingu.

Intensywnie testowalem na tych 3 licznikach 6 miesiecy grzewczych w minionym sezonie. Kreciłem potencjoetrem, zmianialem przeliczniki, robilem przeslone z foli dymionej na diode, zmienialem odleglosc od diody.... - niestety wszedzie podobne problemy.
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

o_rany pisze: wt gru 03, 2019 11:01 pm Na sofcie i hardwarze Roberta (wemos) pojedynczy licznik podlaczony pod wyjscie impulsowe fizycznego licznika prądu, oraz na sofcie od Slawka na sonoffie oraz canwingu.

Intensywnie testowalem na tych 3 licznikach 6 miesiecy grzewczych w minionym sezonie. Kreciłem potencjoetrem, zmianialem przeliczniki, robilem przeslone z foli dymionej na diode, zmienialem odleglosc od diody.... - niestety wszedzie podobne problemy.
Problem był, że Wemos gubił? Czy dioda nie wszystko łapała?

Jeśli chcesz, możesz spróbować licznika impulsów z Arduino IDE (np. z tą biblioteką: https://github.com/klew/arduino/tree/develop )
Ja mam pod Arduino Mega podpięte7 podliczników z wyjściem impulsowym i jak na razie nie zauważyłem, aby coś gubił.
Jestem ciekaw, czy na Wemosie z tym softem też będzie gubił czy nie :)
Widzimy się na Supla Offline Party vol. 2 :!:
elmaya
Posty: 1482
Rejestracja: śr cze 27, 2018 5:48 pm
Lokalizacja: El Saucejo - Sevilla

klew pisze: wt gru 03, 2019 11:26 pm
o_rany pisze: wt gru 03, 2019 11:01 pm Na sofcie i hardwarze Roberta (wemos) pojedynczy licznik podlaczony pod wyjscie impulsowe fizycznego licznika prądu, oraz na sofcie od Slawka na sonoffie oraz canwingu.

Intensywnie testowalem na tych 3 licznikach 6 miesiecy grzewczych w minionym sezonie. Kreciłem potencjoetrem, zmianialem przeliczniki, robilem przeslone z foli dymionej na diode, zmienialem odleglosc od diody.... - niestety wszedzie podobne problemy.
Problem był, że Wemos gubił? Czy dioda nie wszystko łapała?

Jeśli chcesz, możesz spróbować licznika impulsów z Arduino IDE (np. z tą biblioteką: https://github.com/klew/arduino/tree/develop )
Ja mam pod Arduino Mega podpięte7 podliczników z wyjściem impulsowym i jak na razie nie zauważyłem, aby coś gubił.
Jestem ciekaw, czy na Wemosie z tym softem też będzie gubił czy nie :)
you have to add "EEPROM.begin ();" and "EEPROM.commit ();" to save the impulses on Esp8266 Flash.
michalbajda
Posty: 5
Rejestracja: sob lis 09, 2019 3:24 pm

klew pisze: wt gru 03, 2019 11:26 pm Jeśli chcesz, możesz spróbować licznika impulsów z Arduino IDE (np. z tą biblioteką: https://github.com/klew/arduino/tree/develop )
Ja mam pod Arduino Mega podpięte7 podliczników z wyjściem impulsowym i jak na razie nie zauważyłem, aby coś gubił.
Robiłeś jakieś swoje zmiany czy na żywca wrzucałeś te biblioteki, które podałeś? Jestem początkującym jeśli chodzi o Arduino czy ESP/WEMOS dlatego bazuje na gotowych bibliotekach, których nie trzeba przerabiać.
Jestem ciekaw, czy na Wemosie z tym softem też będzie gubił czy nie :)
Da się wrzucić te biblioteki, które podałeś na Wemos D1?
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

michalbajda pisze: śr gru 04, 2019 7:46 pm Robiłeś jakieś swoje zmiany czy na żywca wrzucałeś te biblioteki, które podałeś? Jestem początkującym jeśli chodzi o Arduino czy ESP/WEMOS dlatego bazuje na gotowych bibliotekach, których nie trzeba przerabiać.
Jestem ciekaw, czy na Wemosie z tym softem też będzie gubił czy nie :)
Da się wrzucić te biblioteki, które podałeś na Wemos D1?
Ja dopisywałem licznik impulsów do tej biblioteki. Aktualnie też ją trochę przepisuję i rozbudowuję.

Biblioteka działa na Wemos D1. Tylko z licznik impulsów nie zapisuje stanu do pamięci trwałej na ESP8266. Trzeba by dodać te poprawki, o których elmaya wspomniał w poprzednim komentarzu. Może dziś/jutro to dodam do kodu.
Widzimy się na Supla Offline Party vol. 2 :!:
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”