Strona 1 z 1

Błąd wskazań czujnika deszczu

: wt cze 30, 2020 6:27 am
autor: shimano73
Zauważyłem dziś różnicę po między tym co widać na serwerze a tym co widać w aplikacji na telefonie , tzn w aplikacji pokazuje 100x mniej :o , może to jest przyczyną że zerują mi się pomiary z deszczomierza bo double się przepełnia :D . Może zaskoczę was pytaniem , ale jaka jest maksymalna wartość dla zmiennej double w esp8266 , bo znalazłem w sieci niby zajmuje 8 bajtów, liczbę całkowitą bym sobie wyliczył ale jak to jest ze zmiennoprzecinkową. Przepraszam ale brakuje mi wiedzy ... podstawowej :roll:

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 8:36 am
autor: klew
double jest zapisywany inaczej niż liczby całkowite. Z reguły jest tam jakaś część opisująca liczbę, oraz wykładnik opisujący przez ile ją trezba pomnożyć. Np. coś w stylu "2,323523 * 10^13" - przy czym tylko to 2,32... i 13 są zapisane, a reszta jest wyliczana.
W praktyce double może zapisać ogromną liczbę, ale wtedy tracisz precyzję i jeśli dodajesz liczbę mniejszą niż aktualna precyzja, to takie dodawanie przestaje działać.

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 9:12 am
autor: shimano73
klew pisze:
wt cze 30, 2020 8:36 am
double jest zapisywany inaczej niż liczby całkowite. Z reguły jest tam jakaś część opisująca liczbę, oraz wykładnik opisujący przez ile ją trezba pomnożyć. Np. coś w stylu "2,323523 * 10^13" - przy czym tylko to 2,32... i 13 są zapisane, a reszta jest wyliczana.
W praktyce double może zapisać ogromną liczbę, ale wtedy tracisz precyzję i jeśli dodajesz liczbę mniejszą niż aktualna precyzja, to takie dodawanie przestaje działać.
Moja funkcja deszczomierza wygląda tak :

Kod: Zaznacz cały

void RainCount() { // z przerwania

unsigned long curtime = millis();
  
  // Make sure we don't record bounces
  if ((curtime - tiptime) < interval) {
    return;
  }
// How long since the last tip?
 
  tiptime = curtime;


  rain += rain_gauge_cup_capacity;
  
}

double get_rain(int channelNumber, double t) {


//double t = -275;  
    t = rain;
    Serial.print("Opad deszczu :");Serial.println(rain);
    return t;
}  

gdzie rain_gauge_cup_capacity= 0.35543
i gdy pada desczyk to pokazują sie jakies wartości które rosną aby za chwile spaść prawie do zera i tak w kółko. Nie mam pomysłu co może ją resetować.
I jeszcze jedna rzecz , mianowicie sam licznik dziwnie działa, jest ustawiony jako

Kod: Zaznacz cały

attachInterrupt(digitalPinToInterrupt(RainImpuls), RainCount,FALLING);
no i funkcja RainCount powinna się wywoływać tylko przy przejściu z H na L, ale nie zawsze się tak dzieje .
Gdy czas LOW jest krótki to jest ok ale gdy LOW i HIGH jest podobny to funkcja się wywołuje przy każdej zmianie , dlaczego ?

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 10:33 am
autor: klew
Wracając do opisanego przez Ciebie problemu z pierwszego posta - na serwerze (w sensie "w cloud"?) widzisz inną wartość niż na tel. Różnica jest 100x.
Taki błąd raczej nie wynika z urządzenia z czujnikiem deszczu. Apka na telefonie dostaje dane od serwera, więc one powinny się zgadzać.
Pokaż screen z clouda i apki oraz napisz jaki typ kanału do tego używasz (termometr?)

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 11:29 am
autor: shimano73
klew pisze:
wt cze 30, 2020 10:33 am
Wracając do opisanego przez Ciebie problemu z pierwszego posta - na serwerze (w sensie "w cloud"?) widzisz inną wartość niż na tel. Różnica jest 100x.
Taki błąd raczej nie wynika z urządzenia z czujnikiem deszczu. Apka na telefonie dostaje dane od serwera, więc one powinny się zgadzać.
Pokaż screen z clouda i apki oraz napisz jaki typ kanału do tego używasz (termometr?)
Pomyliłem się nie 100 a 1000 , to tak jakby jedno pokazywało w litrach a drugie w m3.
Używam kanału rain ze starej bibliotecki Primary GUI V2 stworzonego na bazie termometru. Sorki za duże zdjęcia ale zrobione z telefonu

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 11:36 am
autor: pzygmunt
W aplikacjach wartość jest dzielona przez 1000. Web tego nie robi stąd różnica. Trzeba to uporządkować.

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 11:37 am
autor: klew
To pewnie jest błąd w cloud przy przeliczaniu jednostek.

Tak się zastanawiam, czy nie lepiej byłoby to zrobić na kanale licznika impulsów? Wtedy byłaby historia pomiarów dostępna. Na urządzeniu liczyłbyś tylko impulsy z deszczomierza. Przeliczenie na l/m2 ustawiałbyś w cloud.

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 11:58 am
autor: shimano73
klew pisze:
wt cze 30, 2020 11:37 am
To pewnie jest błąd w cloud przy przeliczaniu jednostek.

Tak się zastanawiam, czy nie lepiej byłoby to zrobić na kanale licznika impulsów? Wtedy byłaby historia pomiarów dostępna. Na urządzeniu liczyłbyś tylko impulsy z deszczomierza. Przeliczenie na l/m2 ustawiałbyś w cloud.
To by się wiązało z przejściem na nową bibliotekę i cały program stacji przepisać od nowa a Wy tam tak "obiektujecie" że mało co ogarniam :lol:

Re: Błąd wskazań czujnika deszczu

: wt cze 30, 2020 3:38 pm
autor: QLQ
pzygmunt pisze:
wt cze 30, 2020 11:36 am
W aplikacjach wartość jest dzielona przez 1000. Web tego nie robi stąd różnica. Trzeba to uporządkować.

@pzygmunt z tego co pamiętam jak robilem deszczomierz i przerabialem kod to na konsoli pokazywalo poprawnie czyli np 12l/m, w apce tez. Nie bylo wtedy wskazania wartości na serwerze i byla tylko ikona. Wiec wg mnie na Cloud jest cos nie tak, to raczej serwer mnozy x1000 i to wyświetla

Re: Błąd wskazań czujnika deszczu

: pt lip 03, 2020 5:09 am
autor: Kassewsky
shimano73 pisze:
wt cze 30, 2020 11:58 am
klew pisze:
wt cze 30, 2020 11:37 am
To pewnie jest błąd w cloud przy przeliczaniu jednostek.

Tak się zastanawiam, czy nie lepiej byłoby to zrobić na kanale licznika impulsów? Wtedy byłaby historia pomiarów dostępna. Na urządzeniu liczyłbyś tylko impulsy z deszczomierza. Przeliczenie na l/m2 ustawiałbyś w cloud.
To by się wiązało z przejściem na nową bibliotekę i cały program stacji przepisać od nowa a Wy tam tak "obiektujecie" że mało co ogarniam :lol:
Więc wychodzi na to że program jest dobry?