Kontakt do PiWS

Captcha

Dlaczego ? Po co ?

Bo mogę :) I jeszcze raz bo mogę :) A tak poważnie to o tym dlaczego napisałem już dawno temu w tym miejscu oraz po jakimś czasie jeszcze raz o nowszej wersji tutaj Od grudnia 2014 roku z większym lub mniejszym zapałem grzebię przy owej stacji.
A po co ? - a po głębszym przemyśleniu to po to aby się czegoś nauczyć, podszkolić się z programowania, jakiejś prostej elektorniki ( bo skomplikowana elektornika może spowodować katastrofę na wielką skalę :P w moim wykonaniu ). Dzięki stacji poznałem sporo zagadnień związanych z meteorologią, klimatologią oraz badaniami smogu itd. Jak widać po ścieżce jaką przeszedł już ten projekt trochę pojąłem - innych rzeczy pewnie jeszcze nie , ale obiecuję doczytam :)

Wersja 3.x ?

Dostawałem czasem pytania od znajomych korzystających z odczytów PiWS, po co zmianay ? Dlaczego zafundowałem sobie znów x godzin przed komputerem ? A no odpowiedź jest prosta wersja 2.x była słaba a ja mam większe ambocje :P Nie no żart :) Stara wersja pewnego dnia zastrajkowała, a że informatyk bez kopii zapasowej chodzi trzeba było zaczynać wszystko totalnie od nowa. Chwilę się zbierałem do tego bo zwyczajnie mi się nie chciało , ale jakoś udało mi się wykrzesać siły i poswięcić czas na pisanie od nowa.

Parametry

Stacja pogodowa jest zgodna z WH2080 (a konkretnie Conrad WS0101)
Jej parametry techniczne to :
  • Zakres pomiarowy wilgotności powietrza na zewnątrz : 10 do 90 %
  • Zakres pomiarowy temperatury na zewnątrz : -40 do +65 °
  • Zakres pomiarowy wilgotności powietrza wewnątrz : 10 do 90 %
  • Zakres pomiarowy temperatury wewnątrz : 0 do +50 °C
  • Zakres pomiarowy ciśnienia powietrza : 300 do 1100 hPa
  • Zakres pomiarowy opadów : 0 do 9999 mm
  • Zakres pomiarowy prędkości wiatru : 0 do 160 km/h
  • Zasięg maksymalny : 100 m
Czujnik smogu jest sensorem zewnętrznym zasilanym osobno, zgodnym z projektem smogtok
  • Wymiary : 88x64x41mm
  • Waga : 120g
  • Zasilanie : 5V, 0,2A
  • Komunikacja : 802.11b/g/n 2,4GHz
  • Zakres pomiarowy PM 2,5 : 0-500 µg/m³
  • Zakres pomiarowy PM 10 : 0-500 µg/m³
  • Błąd pomiarowy : 0,3-5µm
  • Pracuje w warunkach od 0 do 100 % wilgotności
Mikrokomputer to oczywiście Raspberry Pi, nie powala już parametrami i pewnie niedługo będzie musiał odejść, ale dzielnie spełniał przez te wszystkie lata swoją rolę
  • Wersja : 2B
  • Procesor 1 Ghz
  • Karta pamięci : 16 gb
  • Ram : 512 mb

Statystyki

Stacja działa z małymi przerwami od 2015/12/28 czyli na ten moment 3072 dni
Dane znadują się w bazie danych mysql, a w sumie z powodu tego że to kolejna wersja oporgramowanie to trzecia baza - pierwsza miała 80,69 mb , druga 33,02 mb a bieżąca przedstawia się w następujący sposób:
  • Tabela pogoda : 455865 rekordów - w niej przetrzymywane są wszystkie dane takie jak temperatury, wiart, opady itd.
  • Tabela kpindex : 2321732 rekordów - w niech zapisuje się uśredniona wartość Indexu KP pobrana z serwerów NOAA/SWPC
  • Tabela smog : 208544 rekordów - w tej tabeli prowadzimy zapis danych z czujnika smogu , po za samym PM2,5 oraz PM10 zapisujemy tam już przeliczone dane indeksu jakości powietrza, wartości procentowej przekroczeń itd.
  • Tabela solar : 301175 rekordów - tutaj lądują odczyty prędkości wiatru słonecznego, dane te także pozyskuję z NOAA/SWPC
  • Tabela wybuchy : 222433 rekordów - ta tabela zachowuje dane pozyskiwane z serwerów NASA obserwujących rozbłyski na słońcu
Czyli łącznie w aktualnej bazie danych znjduje się 3509749 rekordów.

Historia

      Jak już wcześniej wspominałem projekt ten urodził się w mojej głowie bardzo dawno temu, pierwszy raz o tym że amator może wykonywać pomiary warunków meteo, dowiedziałem się od kolegi m4sh na IRC (tak, tak młodzi raczej nie wiedzą co to) To był rok 2004 czas w którym Allegro raczkowało, Alleexpres jeszcze nie było, więc nie każdemu było dane zakupić odpowiedi sprzęt do budowy stacji. Ba ! sprze† to jedno ale jeszcze potrzeba było mieć stały dostęp do internetu oraz albo konto hostingowe ( ktróre wtedy nie były tanie i dla wszystkich jak teraz.) lub stały adres IP, serwer w domu i wiedzę aby go postawić i nim administrować. Ja nie miałem internetu w domu :) komputera odpowiadającego wymaganiom też nie :) wiec pomysł został schowany do kieszeni na dobre kilka lat :)

      Do pomysłu udało mi się wrócić wiele lat później bo pod koniec 2011 roku kiedy to kupiłem w naszym naradowym żółto czerwonym dyskońcie spożywczym małą w pełni cyfrową stację pogodową marki "Clarus" z czujnikiem zewnętrznym. Pomiar ograniczał się do temperatury oraz wilgotności. Niestety nie dało się nijak podłączyć tego technologicznego demona do zasobów sieci globalnej, dlatego też pod koniec grudnia 2014 roku kiedy to czujnik zewnętrzy Clarusa odszedł to krainy wiecznie działającej elektroniki postanowiłem rozglądnąć się za czymś nowym ...

      Moja stacja pogodowa powstała w styczniu 2015 roku , technologicznie bardzo różniła się od pierwowzoru opisanego powyżej. Jeszcze przed świętami 2014 natknąłem się w Internetach na informacje o mikrokomputerach nazwanych Raspberry Pi – szukając drążąc przeczytałem że istnieje mnogość rozwiązań do tego mikrokomputera, masa dodatków, masa softu. Wtedy właśnie w mojej głowie urodził się pomysł. Części zostały zamówione ale niestety wysyłka nie wyrobiła na święta właśnie wtedy miałem nadzieje mieć czas i chęci na dłubanie.

Paczka z elektroniką zawierała:
  • RaspberryPi 2B+
  • Tp-Link karta wifi nano USB
  • Zasilacz do RPi
  • Przewody
  • Czujnik BMP280 – cyfrowy czujnik ciśnienia z dokładnością 1 hPa. Posiada wbudowany czujnik temperatury. Układ komunikuje się za pomocą magistrali I2C lub SPI. Zakres pomiaru od 300 do 1100 hPa.
  • Czujnik DHT22 – Moduł z czujnikiem temperatury i wilgotności powietrza z interfejsem cyfrowym, jednoprzewodowym. Zakres pomiarowy: temperatura -40 do +80 °C, wilgotność 0-100 %RH.
  • Czujnik YL-83 – Czujnik służy do wykrywania opadów atmosferycznych.

Zabrałem się za produkowanie stacji pogodowej , nie wiedząc jeszcze co mnie czeka 😛 Okazało się że oprogramowanie czujników do najłatwiejszych zadań kiepskiemu programiście nie pójdzie za szybko. Choć jeśli mnie pamięć nie myli to pierwszą przeszkodą okazało się zainstalowanie systemu operacyjnego na RPi ponieważ wymagało to telewizora bądź monitora z hdmi którego nie posiadałem ( tak tak nadal nie mam telewizora ) Jak już ta przeciwność została pokonana , pojawiły się inne należące do dziedziny bardziej upierdliwych. Raspbian – predefiniowany system operacyjny dla RPi nie miał zamiaru współpracować z moja kartą wifi 🙂 Walka była nierówna bardzo , ale udało mi się wygrać tę potyczkę po kilku dniach walk. Przyszła pora na instalacje MYSQL , serwera www , przekierowania portów itd. Wszystko szło dobrze zostało podłączyć do RPi czujniki i magicznie sprawić aby zaczęły działać. Jak podłączenie okazało się dosyć prostym zadaniem , to już oprogramowanie tego to już była wyższa szkoła jazdy.
Po próbach wykorzystania kilku klas do obsługi ww. czujników i częściowym sukcesie zacząłem szukać czegoś lepszego co pomogłoby mi w odczycie danych i znalazłem nettemp 🙂 Tak zaczął się nasz związek z wersja 2 tego oprogramowania. Instalacja wtedy na kablach wystawiona za okno , a RPi w klipsowym pudełku na jedzenie na parapecie dojrzewała do kolejnego kroku budowy przechodząc swoje pierwsze beta testy.
Strona www które prezentowała wtedy wyniki była osadzona na wspomnianym sercu całej stacji czyli RPi 2B+ , dane nettemp przechowywał w swojej bazie opartej na sqlite , ja aby usprawnić sobie pracę całego systemu dodałem kilka plików .sh które zapisywały mi wartości pomiarów do .txt z których łatwiej było mi odczytać dane i wstawić na www.
Nadszedł jednak czas modyfikacji i części odpowiedzialnej za pomiary jak i silnika wyświetlania. Pierw na warsztat poszedł back-end była to jesień 2016 roku. nettemp służył w stacji już tylko w zakresie bibliotek do odczytu danych z czujników a dopisane skrypty .sh były wspomagane poprzez .php które za pomocą CRON na wykupionym do tego serwerze VPS uruchamiały się w zadanych odstępach czasu i pobierały dane do postawionej tam bazy danych MYSQL. Ten proces odciążył znacznie RPi z wielu niepotrzebnych czynności i przekazał wszystko do VPS ( pogoda.chinczyk.ovh ) Kolejnym etapem przebudowy była wymiana czujnika DHT22 bo czujnik po roku działania padł , oraz kupienie Pi Camera HD v2 8MPx. Snapshotowanie wykonałem w prosty sposób ( bo inaczej nie umiałem ) Z wiersza poleceń wymuszałem snapa oraz zapisywałem go lokalnie na RPi w katalogu widocznym na www i na VPS pobieram go automatycznie zmieniam mu nazwę i wyświetlam – taki proces trwa 15 min po tym czasie kolejny skrypt zmienia nazwę tego pliku i ładuje go do archiwum i pobiera kolejny i tak cały czas 🙂 W ostatnim czasie DHT22 po raz kolejny pokazał że jest szajsowaty i padł choć teraz nie całkowicie. Przestała działać tylko wilgotność, więc po raz kolejny czeka mnie wymiana. Więc przyszedł czas na kolejne zmiany ...

      I jak się szybko okazało zmiany całkiem spore ponieważ zrezygnowałaem z czujników cyfrowych na rzecz analogowo-cyfrowej stacji CONRAD WS0101. Stacja dostała także nowe oczy , czyli nową kamerę do RPi , i tym razem postawiłem na klasyka kupując następcę poprzedniej kamery czyli RPi Camera HD v2 z 8px obiektywem. robi zdjęcia o niebo lepsze o swojej poprzedniczki. Aby całość mogła poprawnie być eksportowana , na mikrokomputerze zostało zainstalowane i skonfigurowane ( nie bez problemów – ale o tym w dalszej części ) oprogramowanie CumulusMX które za pomocą Mono pobiera dane i buduje defaultową stronę www , którą właśnie staram się dopasować do swoich potrzeb. Ale może od początku: Czujniki mojej stacji pogodowej , w tej chwili „zawieszone” są tymczasowo na elemencie okiennym , po dokonaniu wszystkich stosownych modyfikacji wyląduje na dachu lub przymocowana do wysięgnika i zamocowana do muru budynku.
Dużym problemem jest ( wiele osób wskazywało podobne przeboje ) czujnik temperatury oraz wilgotności ( dla niewtajemniczonych to ten w harmonijkowej obudowie ) narażony na nadmierne naświetlenie przekłamuje w rannych godzinach temperaturę. W chwili pisania artykułu nie podjąłem jeszcze decyzji jak zaradzić temu problemowi. ( opcje są dwie albo zbuduję nowy pojemnik dla czujnika temperatury i wilgotności , albo ekran ochraniający ustawiony w kierunku padania słońca )
Kolejnym ważnym elementem stacji jest czujnik pomiaru pyłków zawieszonych SDS011 dzięki któremu dokonuję pomiaru pyłków PM2,5 oraz PM10 . Czujnik podłączony za pomocą przejściówki UART USB do Raspberry Pi i za pomocą skryptu w Pythonie odczytuje dane i zapisuje do bazy danych mysql na serwerze zdalnym. Skrypt w Pythonie co 15 min uruchamia czujnik odczekuje 1 min i analizuje dane , wypluwa je do pliku txt po czym kolejny skrypt pobiera te dane i wkłada do bazy danych. Czujnik nie pracuje cały czas ponieważ jego żywotność jest ograniczona dlatego zdecydowałem się na taktowanie co 15 min. Rysowanie wykresów w zasadzie pozostawiłem dwóm silnikom rysującym wykresy ( google charts oraz drugim użytym przez dev Cumulusa ) Pewnie zaraz padnie pytanie dlaczego tak ? A przyczyna jest prosta 🙂 nie potrafiłem tamtych zastosować 🙂
Za te pieniądze nie są to złe parametry dla amatorskiej stacji pogodowej. Co prawda jakość wykonania zaraz po wyjęciu z pudełka trochę mnie rozczarowała. Łopatki wiatrołapu oraz listek wskaźnika kierunku wiatru wydają się być w dotyku dość liche . Zaraz po otwarciu pudełka uznałem że stacją jednak nie wyląduje na razie na dachu bo obawiam się że szybko będę musiał ją wymieniać 😛 Za to zdecydowanie trzeba przyznać że w pudełku znajduje się absolutnie wszystko co potrzebne do montażu, od masztu do trytytek. Irytuje tylko to że stacja bazowa może być zasilana za pomocą zasilacza sieciowego , którego oczywiście w zestawie BRAK. Wszystkie czujniki stacji znajdują się na maszcie przyczepionym do wysięgnika antenowego o długości 100 cm zawieszonego na wysokości ok. 5 m nad ziemią. Montaż został wykonany w optymalnym bezpiecznym miejscu pozwalającym na optymalne odczyty w pobliżu mojego miejsca zamieszkania.

Dalej oczywiście nie było tak kolorowo jak by się mogło wydawać, po roku od odpalenia ver 2. karta pamięci w Rpi odmówiła pracy ,a z powodu mojego lenistwa nie posiadałem kopii PiWS ver. 2 przeszła do historii. Całość trzeba było zacząć od nowa. Stacja kilka tygodni kwiczała , działa ale nie przekazywała danych do internetu. Wreszcie zdobyłem się na postawienie nowego Rasbiana oraz tym razem postawiłem na inne oprogramowanie do zbierania danych ze stacji. Postawiłem na oprogramowanie weewx i to było bardzo dobre rozwiązanie. Dzięku weewx strona wygląda tak jak wygląda,
Kolejnym etapem po uruchomieniu było podłaczenie nowego czujnka Smogu opartego o serię SDS, oraz nowej kamery.
Amatorska stacja pogodowa PiWS Jelenia Góra będzie jeszcze rozbudowana o czujnik wyładowań atmosferycznych który ma rejestrować wyładowania w obrębie 40 km.
Do napisania tej krótkiej historii PiWS wykożystałem teksty z mojego bloga na którym dociekliwi uzyskają więcej informacji technicznych oraz zdjęć oraz schematów:

Wpis o PiWS w wersji 1 z 2017/09/26
Wpis o PiWS w wersji 2 z dnia 2018/09/03 uzupełniany o dziennik zmian w konfiguracji i oprogramowaniu stacji