GUI Generic

User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

rumunn95 wrote: Fri Dec 18, 2020 3:23 pm czy mógłby ktoś zmienic rozdzielczosc czujnika ds18b20 z 12 do 10 jak i odczyt ograniczyc do dwóch zer po przecinku? w obecnej konfiguracji mam bledy odczytu :(
Czym się obawiają te błędy odczytu? Na jakiej płytce? Ile i jak podłączonych DSów?
Najlepsze suple dla Twojego domu :mrgreen:
rumunn95
Posts: 9
Joined: Sun Oct 25, 2020 8:02 am

Post

plytka nodemcu v3 z gui generic testowo jeden ds na okolo 50cm przewodzie z rezem 4.7k, chce korzystac z linku bezposredniego do autorskiej aplikacji smarthome zbudowanej w mit app inwentor zeby w apce wyswietlac temp. z tego czujnika skrypt wyłuskuje temperature z ciagu znakow z linku bezposredniego lecz temperatura raz jest np 18.8 a innym razem 18.823 przez co moj skrypt sieje bledami ciagu znakow :( chyba ze macie inny patent wyswietlania temp. w mit app
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

rumunn95 wrote: Fri Dec 18, 2020 6:58 pm plytka nodemcu v3 z gui generic testowo jeden ds na okolo 50cm przewodzie z rezem 4.7k, chce korzystac z linku bezposredniego do autorskiej aplikacji smarthome zbudowanej w mit app inwentor zeby w apce wyswietlac temp. z tego czujnika skrypt wyłuskuje temperature z ciagu znakow z linku bezposredniego lecz temperatura raz jest np 18.8 a innym razem 18.823 przez co moj skrypt sieje bledami ciagu znakow :( chyba ze macie inny patent wyswietlania temp. w mit app
Ok, czyli nie ma żadnych błędów odczytu, tylko jakaś inna aplikacja nie potrafi sobie poradzić z odczytem liczb z tekstu.
Raczej bym szedł w kierunku rozwiązania tego problemu po stronie mit app
Najlepsze suple dla Twojego domu :mrgreen:
rumunn95
Posts: 9
Joined: Sun Oct 25, 2020 8:02 am

Post

Jakieś błędy są napewno i to widać w linku bezpośrednim, odczyt powinien być ze stałą dokładnością po przecinku, jak to robią inne czujniki u mnie w Arduino jeżeli nikt nie chce zrobić mi gotowca to proszę chociaż o dokładny opis jak ten kod edytować(wiem co zmienić) i skompilować
elmaya
Posts: 1485
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

rumunn95 wrote: Fri Dec 18, 2020 9:15 pm Jakieś błędy są napewno i to widać w linku bezpośrednim, odczyt powinien być ze stałą dokładnością po przecinku, jak to robią inne czujniki u mnie w Arduino jeżeli nikt nie chce zrobić mi gotowca to proszę chociaż o dokładny opis jak ten kod edytować(wiem co zmienić) i skompilować
https://github.com/klew/arduino/blob/ma ... 8B20.h#L68
rumunn95
Posts: 9
Joined: Sun Oct 25, 2020 8:02 am

Post

Dokładnie tak jak pokazałeś rozdzielczość czujnika powinna być max 10 co procentuje krótszym czasem dostępu do niego i zmniejszeniem możliwości zakłóceń . Dodatkowo zmienna getValue nie powinna być double co na najwyżej float. Co i gdzie to wiem jak zmienić tylko problem jak to wszystko skleić w całość do wrzucenia na płytkę.
Patryk
Posts: 2944
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

rumunn95 wrote: Fri Dec 18, 2020 10:23 pm ... tylko problem jak to wszystko skleić w całość do wrzucenia na płytkę.
Pewne "rzeczy" już nieaktualne ale...
Najważniejsze z tego to pkt5. ( z pierwszego posta ).
 viewtopic.php?p=23214#p23214
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 136 times
Been thanked: 137 times

Post

rumunn95 wrote: Fri Dec 18, 2020 10:23 pm Dokładnie tak jak pokazałeś rozdzielczość czujnika powinna być max 10 co procentuje krótszym czasem dostępu do niego i zmniejszeniem możliwości zakłóceń . Dodatkowo zmienna getValue nie powinna być double co na najwyżej float. Co i gdzie to wiem jak zmienić tylko problem jak to wszystko skleić w całość do wrzucenia na płytkę.
Precyzja odczytu DS-a nie ma nic wspólnego z precyzją reprezentacji liczb zmiennoprzecinkowych (czy też z ilością miejsc po przecinku). Czas odczytu jest nieistotny, bo nikomu różnicy nie zrobi, czy odczyt będzie po 600 ms, czy po 100 ms (w aplikacji odczyt jest i tak nie blokujący, więc nikt tego w żaden sposób nie zauważy). Z żadnymi zakłóceniami odczytu jeszcze się nie spotkałem. Aplikacja i tak musi napotkać na 3 błędne odczyty, aby ten błąd zasygnalizować do serwera Supli.

getValue zwraca double, ponieważ kanał termometru używa typu double do przesłania wartości na serwer - dlatego konwersja jest robiona już na tym etapie.

Jeśli chcesz określić precyzję w postaci ilości miejsc po przecinku w dziesiętnej reprezentacji liczby, to najlepiej jakbyś to zmodyfikował po stronie serwera, a nie aplikacji na urządzenia wykonawcze. Przy zapisie zmiennoprzecinkowym musiałbyś np zaokrąglać liczbę do dwóch miejsc po przecinku, ale binarna reprezentacja liczby nie gwarantuje, że po konwersji do zapisu dziesiętnego nie pojawi się tam jakiś drobniejszy ułamek, jak np 32,129999.
Dlatego określenie precyzji zapisu w postaci dziesiętnej najlepiej zrobić w kodzie serwera odpowiadającym za linki bezpośrednie.

Jednak nadal to wszystko wydaje się strasznie dziwne. Czemu ta aplikacja, której używasz nie umie odczytać liczby z tekstu o dowolnej ilości miejsc po przecinku?
Najlepsze suple dla Twojego domu :mrgreen:
rumunn95
Posts: 9
Joined: Sun Oct 25, 2020 8:02 am

Post

Już tłumacze jak do tego podchodzę :idea: kod w zalacznikach zdj nr1 jest wycinkiem z calosci ktora obecnie nie gra roli ;)
Aplikacja pobiera ciag znakow z linku bezposredniego ktory wyglada tak jak na zdj2(do przyjecia). nastepnie porównuje długość textu i jezeli dlugosc ma wiecej niz 36 znakow dzieli text na segment ktory zaczyna sie od 33 znaku i ma dlugosc 4 i przypisuje do zmiennej "global_name" czyli nasza zmienna od teraz ma na przyklad: 9.50 .nastepnie zmienna wyswietlana jest na label1.
Schody zaczynają sie kiedy ciąg znaków wyglada tak jak na zdjeciu nr2(tu zaczynaja sie schody), wtedy aplikacja zwraca blad jak na zjęciu nr3 poniewaz czwartym znakiem w tym momencie jest "}", lub inny blad ze dlugosc calego lancucha jest za krótka. Zdjecia beda wyrazne po otworzeniu w nowej karcie
You do not have the required permissions to view the files attached to this post.
jarsyb
Posts: 64
Joined: Sun May 31, 2020 4:03 pm

Post

rumunn95 wrote: Sat Dec 19, 2020 8:53 am Już tłumacze jak do tego podchodzę :idea: kod w zalacznikach zdj nr1 jest wycinkiem z calosci ktora obecnie nie gra roli ;)
Aplikacja pobiera ciag znakow z linku bezposredniego ktory wyglada tak jak na zdj2(do przyjecia). nastepnie porównuje długość textu i jezeli dlugosc ma wiecej niz 36 znakow dzieli text na segment ktory zaczyna sie od 33 znaku i ma dlugosc 4 i przypisuje do zmiennej "global_name" czyli nasza zmienna od teraz ma na przyklad: 9.50 .nastepnie zmienna wyswietlana jest na label1.
Schody zaczynają sie kiedy ciąg znaków wyglada tak jak na zdjeciu nr2(tu zaczynaja sie schody), wtedy aplikacja zwraca blad jak na zjęciu nr3 poniewaz czwartym znakiem w tym momencie jest "}", lub inny blad ze dlugosc calego lancucha jest za krótka. Zdjecia beda wyrazne po otworzeniu w nowej karcie
Wydaje mi się ze problem nie leży po stronie GUI tylko Supli. W historii pomiarów w Supli wszystkie wartości są do 4-tego miejsca po przecinku, nawet jeśli występują tam same zera, natomiast wyświetlanie w cloud i w linku bezpośrednim, jest zaokrąglane przez wyżej wymienianą do najmniejszego znaczącego "bitu". Raczej bez porównania długości słowa i dopisania (pomnożenia 10^x) będzie ciężko.
(nie znam tej aplikacji i nie wiem co tam można zrobić)
Istnieją 10 rodzaje ludzi - ci którzy rozumieją binarnie i ci którzy nie.

Return to “GUI Generic”