KPOP i KLOP

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

Post

Kilka dni temu w końcu zrobiłem ten KLOP i działa jak chciałem.
Dla anemometru liczy impulsy w czasie cyklu pomiarowego (np. 5 sekund) i pokazuje uśrednioną wartość w m/s.
W następnym cyklu pomiarowym dalej liczy i pokazuje nową wartość. I tak w kółko.
Jeśli nie zmieniła się liczba impulsów - wiatr nie wieje - pokazuje "0".
Ten kanał Klop nie ma historii, nie zapisuje wartości do FRAM.
Równocześnie te same impulsy są zliczane przez drugi Klop - ten ma historię, zapis do FRAM i statystyki na stronie i w aplikacji.
Czyli mam licznik wartości chwilowej i niezależny zapis historii wiania.

To samo wykorzystam do mierzenia ilości opadów - wartość chwilowa i rejestrowana.
Oraz do mierzenia ilości wody przy podlewaniu ogrodu - wartość chwilowa przepływu przydaje się do ustalania przepływu dla każdego sterownika, w każdej linii - tego mi brakowało. W zależności od pory roku zmieniają się ilości otwartych zaworów na liniach - niektórych roślin się nie podlewa w określonych okresach itp. Wtedy trzeba też dostosować ilość przepływającej w linii wody - do tego wartość chwilowa.

Teraz czekam na kanał KTOP - żeby kierunek wiatru mógł być odczytywany tekstowo, a nie w postaci kąta od północy. Chociaż z drugiej strony - to zawsze jakieś ćwiczenie dla mózgu ;-)
iM@rek
Posts: 348
Joined: Thu Feb 09, 2023 1:25 pm

Post

Trochę porządkowałem kod i zauważyłem, że po skróceniu nazw instancji kanałów GPM,
przestają się rejestrować w Supli i ich nie widać w Cloud.
Nie ma żadnych błędów w kompilacji, to tylko po stronie Supli nie są akceptowane krótkie nazwy.

Przykład: Kl0 => Klop0

Supla::Sensor::GeneralPurposeMeter *kl0 = nullptr; <= nie działa
Supla::Sensor::GeneralPurposeMeter *klop0 = nullptr; <= działa

kl0 = new Supla::Sensor::GeneralPurposeMeter(); <= nie działa
klop0 = new Supla::Sensor::GeneralPurposeMeter(); <= działa

Tak, jakby było ograniczenie na długość nazwy zmiennej. Po powrocie do 5-ciu znaków - wszystko działa poprawnie.
Straciłem trochę czasu nim się połapałem, że wśród porządków skróciłem nazwy.
Może się komuś przyda.
User avatar
klew
Posts: 9413
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Thu May 23, 2024 11:19 am Trochę porządkowałem kod i zauważyłem, że po skróceniu nazw instancji kanałów GPM,
przestają się rejestrować w Supli i ich nie widać w Cloud.
Nie ma żadnych błędów w kompilacji, to tylko po stronie Supli nie są akceptowane krótkie nazwy.

Przykład: Kl0 => Klop0

Supla::Sensor::GeneralPurposeMeter *kl0 = nullptr; <= nie działa
Supla::Sensor::GeneralPurposeMeter *klop0 = nullptr; <= działa

kl0 = new Supla::Sensor::GeneralPurposeMeter(); <= nie działa
klop0 = new Supla::Sensor::GeneralPurposeMeter(); <= działa

Tak, jakby było ograniczenie na długość nazwy zmiennej. Po powrocie do 5-ciu znaków - wszystko działa poprawnie.
Straciłem trochę czasu nim się połapałem, że wśród porządków skróciłem nazwy.
Może się komuś przyda.
Jedyna poprawna nazwa tych zmiennych to "klew0" itd :P

A tak na serio, to nazwy zmiennych nie mają znaczenia dla działającego programu. Także jeśli coś przestało działać, to na pewno z innego powodu.
Kiedy będzie Supla Offline Party / SOP#2025 ?
iM@rek
Posts: 348
Joined: Thu Feb 09, 2023 1:25 pm

Post

Jasne... :D
Program nie przestał działać - tylko nie pojawiły się dodatkowe kanały.
Miałem już 4x KLOP, chciałem dołożyć 4xKPOP i przy okazji porządków min. skróciłem nazwy zmiennych.

Ale poważnie, kiedy miałem skrócone nazwy: Kl0 do Kl3 oraz Kp0 do Kp3 - w Supli widziałem tylko 4 liczniki KPOP.
Czyściłem ESP32, wgrywałem kilka razy, konfigurowałem od początku - ciągle miałem tylko 4xKLOP - tak było przed dodaniem 4 KLOP i skróceniem nazw dla wszystkich instancji - ciągle to samo.
Potem przypomniałem sobie, że już kiedyś miałem taki problem, kiedy nazwy gpm0 do gpm3 skróciłem do gp0, gp3.
No i zmieniłem TYLKO te nazwy odpowiednio z Kl0-> Klop0 oraz Kp0-> Kpop0 itd., skompilowałem i zaczęło działać.
Pojawiły się wszystkie kanały 4x Klop i 4x Kpop.
Tak, jakby 3 literowe nazwy były za krótkie/ nierozróżnialne...
User avatar
klew
Posts: 9413
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Thu May 23, 2024 12:08 pm Jasne... :D
Program nie przestał działać - tylko nie pojawiły się dodatkowe kanały.
Miałem już 4x KLOP, chciałem dołożyć 4xKPOP i przy okazji porządków min. skróciłem nazwy zmiennych.

Ale poważnie, kiedy miałem skrócone nazwy: Kl0 do Kl3 oraz Kp0 do Kp3 - w Supli widziałem tylko 4 liczniki KPOP.
Czyściłem ESP32, wgrywałem kilka razy, konfigurowałem od początku - ciągle miałem tylko 4xKLOP - tak było przed dodaniem 4 KLOP i skróceniem nazw dla wszystkich instancji - ciągle to samo.
Potem przypomniałem sobie, że już kiedyś miałem taki problem, kiedy nazwy gpm0 do gpm3 skróciłem do gp0, gp3.
No i zmieniłem TYLKO te nazwy odpowiednio z Kl0-> Klop0 oraz Kp0-> Kpop0 itd., skompilowałem i zaczęło działać.
Pojawiły się wszystkie kanały 4x Klop i 4x Kpop.
Tak, jakby 3 literowe nazwy były za krótkie/ nierozróżnialne...
Coś innego musiało być problemem. Nazwy zmiennych nie mają znaczenia. Możesz nawet 1 literowych używać ;)
Kiedy będzie Supla Offline Party / SOP#2025 ?
iM@rek
Posts: 348
Joined: Thu Feb 09, 2023 1:25 pm

Post

klew wrote: Thu May 23, 2024 12:14 pm Coś innego musiało być problemem. Nazwy zmiennych nie mają znaczenia. Możesz nawet 1 literowych używać ;)
Ok, przyjąłem do wiadomości.
Jeśli przydarzy mi się to ponownie - przyjrzę się uważnie.
Na razie nie mam czasu do tego wracać.
User avatar
veeroos
Posts: 525
Joined: Sun Mar 20, 2022 9:30 am
Location: Głogów

Post

wiem, że to wątek o gg, ale podłączę się do tematu, mam pytanie czy poprawnie KPOP działa jedynie z dołączonym webinterfacem? Bo zrobiłem kod, który na sztywno ustawia serwery, ustawienia wifi itd. Problem jest taki, że nie wpisuje on w kanał wartości "Before" i "After",
Screenshot_2024-06-05-19-45-12-194_org.supla.android.jpg
Dodatkowo w Cloudzie jest komunikat że konfiguracja jeszcze nie jest dostępna.
Screenshot_2024-06-05-19-45-41-887_com.android.chrome.jpg
To jest kod z przykładów do biblioteki, tyle że ustawiam na sztywno wszystko
kod

Code: Select all

#include <SuplaDevice.h>   //https://github.com/SUPLA/arduino/tree/develop
#include <EEPROM.h>
#include <supla/control/relay.h>
#include <supla/network/esp_wifi.h>
#include <supla/sensor/general_purpose_measurement.h>

//******************************************************************WIFI SETUP************************************************************************************************
Supla::ESPWifi wifi("ssid", "pass");

//*****************************************************************SUPLA SETUP************************************************************************************************
  // Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
  char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  // Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

const char* SERVER_SUPLA = "svr";
const char* Email_adres = "mail";

Supla::Sensor::GeneralPurposeMeasurement *gpm = nullptr;

void setup() {
  auto r1 = new Supla::Control::Relay(12);
  Serial.begin(115200);
  gpm = new Supla::Sensor::GeneralPurposeMeasurement();

  // Default channel config values are initialized only once. They can be
  // modified later, but they won't change corresponding used configurable
  // parameters.
  // Below lines are optional, just remove them if you don't want to set
  // them.
  gpm->setDefaultValueDivider(0);  // in 0.001 steps, 0 is ignored
  gpm->setDefaultValueMultiplier(0);  // in 0.001 steps, 0 is ignored
  gpm->setDefaultValueAdded(0);  // in 0.001 steps
  gpm->setDefaultUnitBeforeValue("before");
  gpm->setDefaultUnitAfterValue("after");
  gpm->setDefaultValuePrecision(3);  // 0..4 - number of decimal places

  // Set some initial value of measurement
  gpm->setValue(3.1415);
  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    SERVER_SUPLA,  // SUPLA server address
                    Email_adres,   // Email address used to login to Supla Cloud
                    AUTHKEY);          // Authorization key

  // put your main code here, to run repeatedly:

}
void loop() {
  SuplaDevice.iterate();
   static uint32_t lastTime = 0;
  if (millis() - lastTime > 1000) {
    lastTime = millis();
    // set some new value on gpm:
    gpm->setValue(millis() / 1000.0);
  }
}
You do not have the required permissions to view the files attached to this post.
Zamel Mew-01, Wemos D1 mini Pro + Ikea vindriktning + BME280, 3x - SonOff mini, 3x - SonOff Basic, 3xGosund SP111, SonOff S55, 2x GOSUND WB4

https://github.com/v33r005
User avatar
klew
Posts: 9413
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

veeroos wrote: Wed Jun 05, 2024 5:49 pm Podłączę się do tematu, mam pytanie czy poprawnie KPOP działa jedynie z dołączonym webinterfacem? Bo zrobiłem kod, który na sztywno ustawia serwery, ustawienia wifi itd. Problem jest taki, że nie wpisuje on w kanał wartości "Before" i "After",
Screenshot_2024-06-05-19-45-12-194_org.supla.android.jpg
Dodatkowo w Cloudzie jest komunikat że konfiguracja jeszcze nie jest dostępna.
Screenshot_2024-06-05-19-45-41-887_com.android.chrome.jpg
To jest kod z przykładów do biblioteki, tyle że ustawiam na sztywno wszystko
Te kanały wymagają "Configa". Teoretycznie reszta rzeczy nie jest konieczna, ale trzeba by to zaimplementować, aby dało się bez.
Możesz nie tworzyć webservera, a konfigurację wpisać na sztywno do Configa - to powinno ruszyć
Kiedy będzie Supla Offline Party / SOP#2025 ?
Pietras81
Posts: 1992
Joined: Sun Feb 17, 2019 6:56 am
Location: Osielsko

Post

Czy mogę poprosić do dodanie do oleda 1.3 odczytu z linku bezpośredniego z kanałów typu KOP.
Z gory dziękuję.
https://pietras-81.aqi.eco/

Return to “GUI Generic”