Aktualizacja SuplaDevice

elmaya
Posts: 1485
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

it works fine for me

Code: Select all

void status_func(int status, const char *msg) {    //    ------------------------ Status --------------------------            
  s = status; 
}
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

elmaya wrote: Sat Dec 14, 2019 6:00 pm it works fine for me

Code: Select all

void status_func(int status, const char *msg) {    //    ------------------------ Status --------------------------            
  s = status; 
}
No tak, u mnie też to działało, ale tak jak napisałem, po aktualizacji biblioteki pojawił się problem. Statusy są przekazywane na serial i zastanawiam się jak mogę je przekazać do zmiennej globalnej, nie używając:

Code: Select all

SuplaDevice.setStatusFuncImpl(&status_func);
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
elmaya
Posts: 1485
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

transfers only if the status changes.

Code: Select all

if (S != s){
    S = s;
    Serial.print("status:"); 
    Serial.println(s); 
  }
or use a timer to send from time to time
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

lukfud wrote: Sat Dec 14, 2019 4:46 pm Jak mogę wyciągnąć kod statusu do zmiennej.

Na bibliotece master używałem:

Code: Select all

SuplaDevice.setStatusFuncImpl(&status_func);
void status_func(int status, const char *msg) { }
Po zmienianie na develop użycie tej funkcji powoduje rozłączanie się esp od serwera (sonoff basic czy esp-01s), albo wariuje reakcja na zmianę stanów - z opóźnieniem albo w ogóle nie przełącza.

po usunięciu tej linii z kodu stabilizuje się.

Code: Select all

SuplaDevice.setStatusFuncImpl(&status_func);
Tego fragmentu kodu chyba jeszcze nie ruszałem, więc powinno działać jak na master.
Sprawdzę u siebie wieczorem. Co masz w tej funkcji?
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

elmaya wrote: Sat Dec 14, 2019 6:53 pm transfers only if the status changes.

Code: Select all

if (S != s){
    S = s;
    Serial.print("status:"); 
    Serial.println(s); 
  }
or use a timer to send from time to time
Niestety to też nie działa poprawnie, a na timerach się jeszcze nie znam.
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
User avatar
lukfud
Posts: 2480
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa
Has thanked: 13 times
Been thanked: 11 times

Post

klew wrote: Sat Dec 14, 2019 7:16 pm Sprawdzę u siebie wieczorem. Co masz w tej funkcji?
Wyświetlałem status i aktualizowałem stany przekaźników po utracie połączenia. Mam też kilka sekwencji migania diody w zależności od kodu statusu, dlatego potrzebowałem przypisania do zmiennej.

Code: Select all

void status_func(int status, const char *msg) {
  sNumber = status;
  Serial.print("Kod - ");
  Serial.print(sNumber);
  Serial.print(", ");
  Serial.println(msg);
  if (sNumber == 17) {
    SuplaDevice.channelValueChanged(0, digitalRead(relay_pin));
    /*SuplaDevice.channelValueChanged(1, digitalRead(4));
    SuplaDevice.channelValueChanged(2, digitalRead(5));
    SuplaDevice.channelValueChanged(3, digitalRead(9));
    SuplaDevice.channelValueChanged(4, digitalRead(10));
    SuplaDevice.channelValueChanged(5, digitalRead(12));
    SuplaDevice.channelValueChanged(6, digitalRead(14));
    SuplaDevice.channelValueChanged(7, digitalRead(14));
    SuplaDevice.channelValueChanged(8, digitalRead(16));*/
  }
}
Teraz z tego co zauważyłem na develop, to nie ma potrzeby aktualizacji stanów w tym miejscu, ale zmienną do migania nadal potrzebuję.

Po kilku testach rezultat jest taki:

Jeśli nie dodam

Code: Select all

SuplaDevice.setStatusFuncImpl(&status_func);
to wyświetlają się statusy w serialu (te zaszyte w bibliotece), ale nie mam swojej zmiennej.

Jeśli dodam to "wywołanie" i funkcję

Code: Select all

void status_func(int status, const char *msg) {
  sNumber = status; }
to mam swoją zmienną ale nie wyświetlają się statusy w serialu.

A jak wyrzucę statusy na serial w tej funkcji to niestety kończy się tak jak napisałem na początku.

Code: Select all

void status_func(int status, const char *msg) {
  sNumber = status;
  Serial.print("Kod - ");
  Serial.print(sNumber);
  Serial.print(", ");
  Serial.println(msg); }
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/suplaauraton
https://smartnerzeczy.pl
andrew01
Posts: 163
Joined: Fri May 24, 2019 6:49 am

Post

klew wrote: Fri Dec 13, 2019 8:27 pm
andrew01 wrote: Fri Dec 13, 2019 7:52 pm Mam mały kłopot, pobrałem najnowszą bibliotekę gdzie autoryzacja jest już przy pomocy AuthKey ale czegoś tu nie rozumiem, czy po stronie cloud'a trzeba ten klucz gdzieś wpisać (gdzie? zamiast hasła przy identyfikatorze dostępu?) Pytam, ponieważ na razie nie mogę się połączyć:
Authkey zapisuje serwer przy pierwszym prowadzeniu urządzenia o danym guid i przypisuje do konta powiązanego z podanym adresem mail.

Kompilujesz jakiś przekład czy swój program?
Kompiluję swój program który na poprzednim rodzaju "logowania" i poprzedniej bibliotece działa bez przeszkód. Wstawiłem także nowy GUID sądząc, że to pomoże ale jest bez zmian.
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

andrew01 wrote: Sat Dec 14, 2019 9:02 pm
klew wrote: Fri Dec 13, 2019 8:27 pm
andrew01 wrote: Fri Dec 13, 2019 7:52 pm Mam mały kłopot, pobrałem najnowszą bibliotekę gdzie autoryzacja jest już przy pomocy AuthKey ale czegoś tu nie rozumiem, czy po stronie cloud'a trzeba ten klucz gdzieś wpisać (gdzie? zamiast hasła przy identyfikatorze dostępu?) Pytam, ponieważ na razie nie mogę się połączyć:
Authkey zapisuje serwer przy pierwszym prowadzeniu urządzenia o danym guid i przypisuje do konta powiązanego z podanym adresem mail.

Kompilujesz jakiś przekład czy swój program?
Kompiluję swój program który na poprzednim rodzaju "logowania" i poprzedniej bibliotece działa bez przeszkód. Wstawiłem także nowy GUID sądząc, że to pomoże ale jest bez zmian.
Wklej tutaj kod, albo na priv
Najlepsze suple dla Twojego domu :mrgreen:
andrew01
Posts: 163
Joined: Fri May 24, 2019 6:49 am

Post

Zrobiłem sobie testowy programik i wiem już coś więcej, po pierwsze wpuszcza mnie na svr21.supla.org zamiast svr1.supla.org (taki znalazłem w przykładach do biblioteki). Druga sprawa to taka, mam 16 przekaźników i 8 termometrów DS18B20 i teraz jeśli ograniczę liczbę termometrów do 5 to jest OK, dodanie 6 termometru powoduje, że już się nie mogę podłączyć.
andrew01
Posts: 163
Joined: Fri May 24, 2019 6:49 am

Post

To nie jest kwestia samych termometrów ale liczby urządzeń/kanałów, gdy mam 21 to jest ok, dodanie 22 powoduje, że już się nie łączy.

Return to “Arduino IDE”