Czujnik ciśnienia atmosferycznego.

User avatar
lesny8
Posts: 463
Joined: Mon Dec 11, 2017 9:43 pm

Sat Jan 19, 2019 12:48 am

QLQ wrote:
Fri Jan 18, 2019 5:33 pm
Właśnie rozwiązałęm problem restartu :

Jak nie masz wpisanego :

Code: Select all

cb.get_temperature = NULL
albo go brakuje (do testu wyremowałem) to modół się restartuje. jak ten wpis jest DZIAŁA !!! :)
Dzięki temu mnie olśniło :) i zrozumiałem co robiłem nie tak, albo czego nie dopilnowałem. Można też po prostu wyrugować

Code: Select all

//  SuplaDevice.addDS18B20Thermometer();    // chaneel 1 siła sygnału Wifi

W tym przykładzie ode mnie rejestrowane są trzy kanały i jeden z nich jest do prezentacji RSSI, ale prezentacja sygnału jest na kanale temperatury.
Klasa SuplaDevice posiada chronioną metodę begin_thermometer, której zadaniem jest rozpoczęcie odczytów, dla kanałów temperatury.
Każdy typ kanału ma swojego callbacka, czyli tak naprawdę wskaźnik do adresu jakiejś funkcji zwracającej zmienną określonego typu, do której musimy coś przypisać, chociażby NULL.
Oczywiście jak przypiszemy NULL to na kanale nie zobaczymy żadnych wartości, ale jeśli nie przypiszemy do callbacka nic to wskazuje on na jakiś przypadkowy adres w pamięci naszego esp.
Definicja callbacków w strukturze SuplaDeviceCallbacks tego za nas nie robi, bo nie jest od tego i po stworzeniu obiektu przez konstruktor dla struktury callbackom rezerwowany jest obszar w pamięci, ale obszar ten bez właściwej inicjacji zawierać może przypadkowe śmieci.
Funkcji begin_thermometer, która jest wywołana w pętli dla wszystkich kanałów, sprawdza typ kanału i czy callback przypisany do typu kanału nie jest NULLem.
Callback ma zarezerwowany jakiś obszar w pamięci na którym mogą być jakiś śmieciowe dane, i zatem nie jest NULLem więc program wchodzi do warunku, próbując go wykonać i wtedy klops.
Procek się gubi, dochodzi do stack overflow i reastartu przez watchdoga.
Można by było do konstruktora dopisać i zainicjować callbacki domyślnie NULLem, tylko po co skoro inicjacja już tam jest poprzez przypisanie funkcji supla_arduino_get_callbacks definiowanej w naszym '.ino'.

Po prostu trzeba o tym pamiętać, żeby inicjować używane zmienne. To co zadeklarowane w strukturze SuplaDeviceCallbacks musi być zainicjowane w supla_arduino_get_callbacks i kropka.

Tak to sobie wytłumaczyłem :mrgreen:
User avatar
QLQ
Posts: 453
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Jan 19, 2019 1:10 am

Tak, tak, nie zaprzeczam bo nie ogarniam.
A tak na serio to masz w 100% rację. Jak w programie będzie zmienna , która gdzieś tam się plącze nieprzypisana będzie spowalnia proces lub wywalać procek.

Ps. Ta siła sygnału wifi jakoś mnie nie kręci. Bardziej interesowało by mnie naładowanie bateri dla urządzeń żeń zasilanych.
User avatar
QLQ
Posts: 453
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Jan 19, 2019 4:14 pm

No to jak kolega @lesny8 zaczął to teraz trza dorobić a apce: czujnik wagi - właśnie dodałem do SuplaDevice:
viewtopic.php?f=24&t=4276&p=33759#p33759

Dodam zaraz jeszcze czujnik wiatru i deszczu (przynajmniej te proste jak dla mnie ):

Code: Select all

#define SUPLA_CHANNELTYPE_WINDSENSOR 3042
#define SUPLA_CHANNELTYPE_RAINSENSOR 3048  
Proszę kolegę @pzygmunt o to aby dodać czujnik nasłonecznienia / światła (np BH1750)
User avatar
lesny8
Posts: 463
Joined: Mon Dec 11, 2017 9:43 pm

Sat Jan 19, 2019 9:59 pm

Wiedziałem, że też tego brakuje dla tych kanałów, ale nie miałem czym mierzyć tych wartości, więc pominąłem. Zastanawiam się teraz jakie miały by być jednostki?
Wiatr w km/h czy m/s? Tu bym dał na pewno wartości całkowite.
Deszcz w mm/H2O czy l/m2? Tu na pewno wartości dziesiętne z podwójną precyzją.
Waga od 1 do 1000 albo 2000 dał bym w gramach a powyżej kg. Wartości całkowite dla gramów i dziesiętne dla kg z podwójną precyzją.

Co Wy na to?

Już zacząłem nieco grzebać w kodzie, tylko trzeba przemyśleć jednostki...
User avatar
lesny8
Posts: 463
Joined: Mon Dec 11, 2017 9:43 pm

Sat Jan 19, 2019 10:12 pm

QLQ wrote:
Sat Jan 19, 2019 4:14 pm
Proszę kolegę @pzygmunt o to aby dodać czujnik nasłonecznienia / światła (np BH1750)
Jak Przemek, będzie następną wersję protokołu wypuszczał, to zapewne tą prośbę uwzględni, a na czym pomiar zrealizujesz to nie ma już znaczenia, bo na serwer pchasz wynik w double.
Właśnie sprawdziłem zamówione przeze mnie ostatnio czujniki BH1750, wyleciały dzisiaj z Chin :D
User avatar
QLQ
Posts: 453
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Jan 19, 2019 10:41 pm

lesny8 wrote:
Sat Jan 19, 2019 9:59 pm
Wiedziałem, że też tego brakuje dla tych kanałów, ale nie miałem czym mierzyć tych wartości, więc pominąłem. Zastanawiam się teraz jakie miały by być jednostki?
Wiatr w km/h czy m/s? Tu bym dał na pewno wartości całkowite.
Deszcz w mm/H2O czy l/m2? Tu na pewno wartości dziesiętne z podwójną precyzją.
Waga od 1 do 1000 albo 2000 dał bym w gramach a powyżej kg. Wartości całkowite dla gramów i dziesiętne dla kg z podwójną precyzją.

Co Wy na to?

Już zacząłem nieco grzebać w kodzie, tylko trzeba przemyśleć jednostki...
Prędkość najlepiej w km/h (każdy jeździ autem więc łatwiej to mu sobie wyobrazić). Objętość raczej w m3. Waga w jak piszesz w g a powyżej to w kg. Co do oświetlenia albo.lux albo kandela..
User avatar
QLQ
Posts: 453
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Sat Jan 19, 2019 10:51 pm

Zrobiłem z ciekawości WEATHER_STATION. Zajęło mi to chyba z 1.5h . Normalnie pogryzłem klawiaturę i żelazko. Bo zgubiłem literę H w "weather". Taka niby pierdoła w literówce ale mózg ma swoje działania. :x :evil:

Jakie dane mają w niej być uwzględniane? Temp, wilgotność, ciśnienie, wiatr, deszcz, nasłonecznienie..., ?
User avatar
shimano73
Posts: 655
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Fri Jan 25, 2019 9:32 am

Czy aby to u mnie zadziałało muszę mieć własną malinę czy na publicznym zadziała ?
User avatar
shimano73
Posts: 655
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Fri Jan 25, 2019 9:42 am

Jeśli mogę wprowadzić swoje uwagi to prędkość wiatru widziałbym m/s bo tak pokazuje większość stacji pogodowych. Zmienna powinna być zmiennoprzecinkowa aby precyzyjniej przedstawiać wynik (np 0.7 m/s - stan z tej chwili :) u mnie )
Do określania kierunku wiatru widziałem produkt który ma wyjście analogowe - właściwie jest szeregową drabinką rezystorową i ośmioma kontaktronami które zwierają pojedyncze oporniki magnesem umieszczonym na łożyskowanym korpusie element dostępny w sklepie ( nie portalach aukcyjnych ) na A..
User avatar
lesny8
Posts: 463
Joined: Mon Dec 11, 2017 9:43 pm

Fri Jan 25, 2019 10:31 am

shimano73 wrote:
Fri Jan 25, 2019 9:32 am
Czy aby to u mnie zadziałało muszę mieć własną malinę czy na publicznym zadziała ?
Jak najbardziej, zadziała wszedzie.
shimano73 wrote:
Fri Jan 25, 2019 9:42 am
Jeśli mogę wprowadzić swoje uwagi to prędkość wiatru widziałbym m/s bo tak pokazuje większość stacji pogodowych. Zmienna powinna być zmiennoprzecinkowa aby precyzyjniej przedstawiać wynik (np 0.7 m/s - stan z tej chwili :) u mnie )
Uwagi są oczywiście mile widziane :D
Może być zmiennoprzecinkowa, nie ma z tym problemu, ale czym to mierzysz? Ja nie mam na czym sprawdzić jak dokładny jest pomiar. Skoro da się uzyskać po przecinku, to wyświetlimy po przecinku ;) Rozglądałem się wczoraj za jakimś zestawem do pomiaru siły(prędkości) wiatru i wielkości opadów, ale koszty są spore, jak masz jakieś konkretne sprzęty to zapodaj linki lub zdjęcia.
shimano73 wrote:
Fri Jan 25, 2019 9:42 am
Do określania kierunku wiatru widziałem produkt który ma wyjście analogowe
Nie wiem czy jest taki kanał, bynajmniej nie widziałem, do określania kierunku wiatru? Ale jakby był to jak tu zaprezentować taki odczyt? Liczbą nie bardzo :roll: musi być jakaś ruchoma strzałka czy coś...
Post Reply