KPOP i KLOP

iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

@Klew:
Czy jest jakiś przykład wykorzystania KLOP?
Skorzystałem z powodzeniem z przykładów z KPOP, chciałbym jeszcze skorzystać z dobrodziejstw KLOPa ;-)
I czy KLOP może zapisywać dane w FRAM?
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Fri Apr 12, 2024 11:54 am @Klew:
Czy jest jakiś przykład wykorzystania KLOP?
Skorzystałem z powodzeniem z przykładów z KPOP, chciałbym jeszcze skorzystać z dobrodziejstw KLOPa ;-)
I czy KLOP może zapisywać dane w FRAM?
KLOP to kanał podobny do licznika impulsów. Jest kilka różnic. W wielu przypadkach można ich używać zamiennie.
Obecna implementacja KLOP-a nie przechowuje stanu. Raczej zakłada, że źródło danych dla tego licznika pamięta stan (np. jak robisz zdalny odczyt licznika, to ESP nie musi przechowywać stanu). Natomiast jeśli chciałbyś na nim coś liczyć samemu i zapmiętywać stan, to trzeba by taką funkcję dopisać.

Ale jestem raczej za dobieraniem rozwiązań do realnych potrzeb, niż za szukaniem zastosowania do każdej dostępnej opcji ;)
Widzimy się na Supla Offline Party vol. 2 :!:
iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

OK,
chciałbym użyć KLOP do liczenia wody i szybkości wiatru
W kilku przypadkach:
1. Pomiar ilości opadów deszczu (miernik szalkowy)
2. Pomiar ilości wody użytej do podlewania ogrodu
3. Pomiar szybkości obrotów anemometru - szybkość wiatru
Dotychczas robiłem to licznikami impulsów.
Brakowało mi tego, żeby np. licznik nie sumował narastająco opadów czy wiatru, a tylko "resetował" np. co 10 min.
Na dzisiaj mam około 6mln zarejestrowanych obrotów anemometru od początku roku ;-)
KPOP jest dla mnie ok dla np. pomiaru ciśnienia, wilgotności i temperatury i rejestracji jego zmian - działa i jest ok (poza skalowaniem ciśnienia).

KLOP był by chyba dobry dla wspomnianych zastosowań z punktów 1-3.

Czyli potrzebuję przykładu KLOP dla zliczania impulsów.
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Jak czytasz zużycie wody?

Pomiar opadów wg mnie lepiej zrobić na zwykłym liczniku narastającym. Opady dobowe, godzinowe czy miesięczne masz na wykresie.
Resetowanie do 0 codziennie też już będzie działać, bo zarówno licznik impulsów i klop mogą pracować jako "always increment".
Anemometer wg mnie pewniej być na kpop lub na dedykowanym kanale. Trzeba tylko w kodzie przeliczać impulsy na częstotliwość i z tego wyliczać prędkość wiatru
Widzimy się na Supla Offline Party vol. 2 :!:
iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

klew wrote: Fri Apr 12, 2024 1:47 pm A. Jak czytasz zużycie wody?
B. Pomiar opadów wg mnie lepiej zrobić na zwykłym liczniku narastającym. Opady dobowe, godzinowe czy miesięczne masz na wykresie.
Resetowanie do 0 codziennie też już będzie działać, bo zarówno licznik impulsów i klop mogą pracować jako "always increment".
C. Anemometer wg mnie pewniej być na kpop lub na dedykowanym kanale. Trzeba tylko w kodzie przeliczać impulsy na częstotliwość i z tego wyliczać prędkość wiatru
Ad. A.
Używam liczników impulsowych przepływowych na zaworach. Nie zerują się dobowo. A jeszcze lepiej wtedy, kiedy jest potrzeba pomiaru dla kolejnego obwodu.
Ad. B.
Jak ustawić "always increment" i zerowanie dobowe?
Ad. C.
Tu również potrzebowałbym możliwość zerowania np. dobowego. Jak to zrobić? Jak pisałem - mam ok. 6mln obrotów od stycznia.

Możesz mi dać link do przykładu implementacji KLOP dla licznika impulsów?
iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

iM@rek wrote: Fri Apr 12, 2024 2:00 pm
klew wrote: Fri Apr 12, 2024 1:47 pm A. Jak czytasz zużycie wody?
B. Pomiar opadów wg mnie lepiej zrobić na zwykłym liczniku narastającym. Opady dobowe, godzinowe czy miesięczne masz na wykresie.
Resetowanie do 0 codziennie też już będzie działać, bo zarówno licznik impulsów i klop mogą pracować jako "always increment".
C. Anemometer wg mnie pewniej być na kpop lub na dedykowanym kanale. Trzeba tylko w kodzie przeliczać impulsy na częstotliwość i z tego wyliczać prędkość wiatru
Ad. A.
Używam liczników impulsowych przepływowych na zaworach. Nie zerują się dobowo. A jeszcze lepiej wtedy, kiedy jest potrzeba pomiaru dla kolejnego obwodu.
Ad. B.
Jak ustawić "always increment" i zerowanie dobowe?
Ad. C.
Tu również potrzebowałbym możliwość zerowania np. dobowego. Jak to zrobić? Jak pisałem - mam ok. 6mln obrotów od stycznia.

Możesz mi dać link do przykładu implementacji KLOP dla licznika impulsów?
@Klew: grzecznie ponawiam pytania/prośby od Ado C i prośbę o KLOP z poprzedniego postu
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Mon Apr 15, 2024 9:50 am
iM@rek wrote: Fri Apr 12, 2024 2:00 pm
klew wrote: Fri Apr 12, 2024 1:47 pm A. Jak czytasz zużycie wody?
B. Pomiar opadów wg mnie lepiej zrobić na zwykłym liczniku narastającym. Opady dobowe, godzinowe czy miesięczne masz na wykresie.
Resetowanie do 0 codziennie też już będzie działać, bo zarówno licznik impulsów i klop mogą pracować jako "always increment".
C. Anemometer wg mnie pewniej być na kpop lub na dedykowanym kanale. Trzeba tylko w kodzie przeliczać impulsy na częstotliwość i z tego wyliczać prędkość wiatru
Ad. A.
Używam liczników impulsowych przepływowych na zaworach. Nie zerują się dobowo. A jeszcze lepiej wtedy, kiedy jest potrzeba pomiaru dla kolejnego obwodu.
Ad. B.
Jak ustawić "always increment" i zerowanie dobowe?
Ad. C.
Tu również potrzebowałbym możliwość zerowania np. dobowego. Jak to zrobić? Jak pisałem - mam ok. 6mln obrotów od stycznia.

Możesz mi dać link do przykładu implementacji KLOP dla licznika impulsów?
@Klew: grzecznie ponawiam pytania/prośby od Ado C i prośbę o KLOP z poprzedniego postu
A - to musisz sobie ręcznie w sofcie zaimplementować. Tylko pamiętaj, że ESP nie mają zegara z baterią, więc reset zasilania powoduje reset czasu i dopiero po nawiązaniu połączenia z serwerem, zegarek jest ustawiany.
B - w Cloud w ustawieniach kanału KLOP wybiera się typ zliczania "zawsze rosnący". Zerowanie dobowe - patrz A ;)
C - na instancji KLOP-a wywołujesz metodę "setCounter(0)" i resetuje do zera. Tak samo można robić na licznikach impulsów.

KLOP nie ma gotowego przykładu. Niestety nie mam teraz czasu na przygotowanie czegoś.
Widzimy się na Supla Offline Party vol. 2 :!:
iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

klew wrote: Mon Apr 15, 2024 9:56 am A - to musisz sobie ręcznie w sofcie zaimplementować. Tylko pamiętaj, że ESP nie mają zegara z baterią, więc reset zasilania powoduje reset czasu i dopiero po nawiązaniu połączenia z serwerem, zegarek jest ustawiany.
B - w Cloud w ustawieniach kanału KLOP wybiera się typ zliczania "zawsze rosnący". Zerowanie dobowe - patrz A ;)
C - na instancji KLOP-a wywołujesz metodę "setCounter(0)" i resetuje do zera. Tak samo można robić na licznikach impulsów.

KLOP nie ma gotowego przykładu. Niestety nie mam teraz czasu na przygotowanie czegoś.
Tego się niestety obawiałem - brak przykład KLOP ;-(
Szkoda, rozumiem - brak czasu i pewnie zainteresowania ze strony innych.
Ad B. - co rozumiesz przez:
Cloud w ustawieniach kanału KLOP wybiera się typ zliczania "zawsze rosnący"
Nie wiem, gdzie znaleźć te ustawienia kanału KLOP...
C - na instancji KLOP-a wywołujesz metodę "setCounter(0)" i resetuje do zera. Tak samo można robić na licznikach impulsów.
Gdzie jest ta instancja KLOP?
Czy chodzi o to: /lib/SuplaDevice/src/supla/sensor/general_purpose_meter.cpp?
User avatar
klew
Posts: 8638
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Mon Apr 15, 2024 10:10 am Ad B. - co rozumiesz przez:
Cloud w ustawieniach kanału KLOP wybiera się typ zliczania "zawsze rosnący"
Nie wiem, gdzie znaleźć te ustawienia kanału KLOP...
Jak dodasz kanał KLOP do Cloud, to zobaczysz to pole w ustawieniach.
iM@rek wrote: Mon Apr 15, 2024 10:10 am
C - na instancji KLOP-a wywołujesz metodę "setCounter(0)" i resetuje do zera. Tak samo można robić na licznikach impulsów.
Gdzie jest ta instancja KLOP?
Czy chodzi o to: /lib/SuplaDevice/src/supla/sensor/general_purpose_meter.cpp?
[/quote]

"Instancja" to utowrzony obiekt danej klasy/zmiennej. GeneralPurposeMeter to nazwa klasy. Jak zrobisz:

Code: Select all

 auto klop = new Supla::Sensor::GeneralPurposeMeter;
To "klop" wskazuje wtedy na instancję klasy. W ogólności możesz mieć wiele instancji danej klasy.
Widzimy się na Supla Offline Party vol. 2 :!:
iM@rek
Posts: 247
Joined: Thu Feb 09, 2023 1:25 pm

Post

Ok, w zarysie rozumiem, o co chodzi.
Dla mnie to jednak za dużo (wiedza i czas).
Szkoda, że nie zrobiłeś jakiegoś przykładu.
Spróbuję popytać na forum, może ktoś już to robił/ zrobił i podzieli się przykładem KLOP'a

Return to “GUI Generic”