Page 48 of 49

Re: Licznik energii elektrycznej

Posted: Sun Dec 01, 2019 4:18 pm
by QLQ
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 ? ;)

Re: Licznik energii elektrycznej

Posted: Sun Dec 01, 2019 4:23 pm
by QLQ
krycha88 wrote:
Mon Nov 25, 2019 8:50 pm
Robert Błaszczak wrote:
Mon Nov 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:

Code: Select all

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.

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 7:34 pm
by michalbajda
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.

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 8:24 pm
by o_rany
michalbajda wrote:
Tue Dec 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 :(

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 8:32 pm
by klew
o_rany wrote:
Tue Dec 03, 2019 8:24 pm

Tez kombinowalem z mnoznikiem ale niestety gubi nieliniowo :(
Na którym liczniku impulsów próbowałeś?

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 11:01 pm
by o_rany
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.

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 11:26 pm
by klew
o_rany wrote:
Tue Dec 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 :)

Re: Licznik energii elektrycznej

Posted: Tue Dec 03, 2019 11:46 pm
by elmaya
klew wrote:
Tue Dec 03, 2019 11:26 pm
o_rany wrote:
Tue Dec 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.

Re: Licznik energii elektrycznej

Posted: Wed Dec 04, 2019 7:46 pm
by michalbajda
klew wrote:
Tue Dec 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?

Re: Licznik energii elektrycznej

Posted: Wed Dec 04, 2019 9:45 pm
by klew
michalbajda wrote:
Wed Dec 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.