PiWS ver. 2 – amatorska stacja pogodowa
Pierwszy projekt stacji pogodowej o którym pisałem w tym miejscu zbierała podstawowe dane meteo 1291 dni czyli prawie 3,5 roku , będąc z powodu mojej przeprowadzki w dwóch miejscach. Na początku lipca podjąłem decyzję o wyłączeniu tego projektu, ale tylko aby rozpocząć jego rozbudowę.
Stacja w pierwszej kolejności dostała 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. To jedyne podobieństwo z poprzednią konstrukcją, reszta to w zasadzie nowa „technologia”.
Rdzenną formą , albo jak kto woli sercem całego zestawu pozostało RPi 2B , to właśnie do tego mikrokomputera podłączona jest ww. wymieniona kamera. Zasada jej działania pozostaje niezmienna , wyświetla zdjęcie na stronie głównej ( zdjęcie wykonuje za pomocą komendy raspstill z delay 15 min, po kolejnym wywołaniu skryptu z cron poprzednie zmienia nazwę i ląduje w archiwum snapów na serwerze hostingowym )
Reszta zbudowanego trzy lata temu mechanizmu wystawiania zdjęć na lokalny serwer www Raspberry oraz pobieganie na serwerze hostingowym za pomocą komendy wget nadal sprawdza się wyśmienicie , a że mówią aby nie zmieniać tego co dobre 🙂 to tak też zostało.
Dodatkiem który działa już teraz jest napis na snapie (wymaga jeszcze modyfikacji , ale skupiam się teraz nad innymi funkcjami. Klikając na miniaturę na stronie głównej zostanie przeniesieni do osobnej podstrony która przedstawia większe zdjęcie ( screen poniżej)
Pierwszą ważną zmianą są elementy pomiarowe , pogodynka nie pobiera już danych za pomocą podłączonych przez magistralę GPIO czujników typu DHT22 , do mikrokomputera poprzez złącze USB została podłączona stacja pogodowa CONRAD WS0101. 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ć 🙂
Dobra to może czas na bardziej techniczny opis tego całego ustrojstwa :
- Stacja pogodowa Conrad WS0101 – nie nazwałbym jej profesjonalnym instrumentem pomiarowym , ale posiada całkiem niezłe dane techniczne :
- 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
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.
2. Mikrokomputer Raspberry PI 2 B został zakupiony przy budowie poprzednicznki PiWS 2 . Pi 2B to maszyna 700 MHz oraz 512 mb ramu. Zainstalowałem na nim najnowsza wersję Raspbiana Streatch , z kompilacją jądra :
uname -a
Linux pogoda 4.14.50+ #1122 Tue Jun 19 12:21:21 BST 2018 armv6l GNU/Linux
Aby poprawnie podłączyć stację do PI potrzebowałem zainstalować MONO – oprogramowanie które w najprostszym tłumaczeniu pozwala na uruchomienie plików .exe w systemie linux. To dzięki MONO możemy uruchamiać aplikację CumuluxMX.exe dzięki której PI odbiera dane ze stacji. (Instalacja mono nastarcza często dość sporo problemów , z powodu tego że ostatnią działającą wersją z CumulusemMX jest wersja 1.9.4 a w nowych repozytoriach są tylko wyższe wersje, trzeba okłamać system aby korzystał ze starego repo , zmieniając wpisy w /etc/apt/source.list.
Podłączenie stacji odbyło się za pomocą kabla USB A-B ( w zestawie ) , po podłączeniu raspbian wykrywa stację a poprawnie zainstalowanie mono pozwala na odczyt danych. Zainstalowany na odpowiednim porcie mini serwer www (znajduje się w instalacji Cumulusa ) pozwala na konfigurację programu oraz wyświetlenie podstawowych danych pomiarowych. W zakładce settings można ustalić oraz skonfigurować wszystko ! Od daty i czasu do eksportów wyników do portali pogodowych lub własnego serwera.
Stacja za pomocą komputera RPi przekazuje do bazy danych mysql z częstotliwością 10 min.. Cześć stron które widzicie jako piws.ovh to automatycznie generowane pliki html , które z większym bądź mniejszym stopniu zostały zmodyfikowane, a inne napisane od podstaw.
3. Do mojego komputera Rpi podłączona jest już wyżej opisywana nowa kamera. Podłączona jest ona za pomocą predefiniowanego złącza. Zdjęcie wykonuje się co 4 minuty wywołując w cronie taki oto prosty skrypcik :
#!/bin/bash
rm /var/www/html/tmp/image.jpg
raspistill -o /var/www/html/tmp/image.jpg -w 850 -h 600
Nie trzeba tego prostego skryptu tłumaczyć 🙂 Następnie zdjęcie pobierane jest przez skrypt php na serwerze hostingowym (6) i umieszcza go na stronie www jako miniaturkę na stronie głównej , oraz na podstronie o nazwie to snap , gdzie prostym skryptem piszę na bieżącym zdjęciu aktualne wyniki ze stacji pomiarowej. Skrypt pobierający działa w interwale 5 min , a piszący dane działa „na żywo” .
4. Czujnik smogu podłączony jest do Rpi za pomocą przejściówki UART – USB – ale z tego co czytałem da się podłączyć czujnik też poprzez magistralę GPIO. Odczyt z czujnika odbywa się także za pomocą ustawionego zadania cron na komputerze Rpi , co 15 min. Skrypt pobierający dane oraz przeliczający je , został zaczerpnięty z jednej z amerykańskich stron oraz lekko przepisany. Skrypt jest napisany w Pythonie i z racji faktu iż pisałem oprogramowanie do obsługi stacji „na szybko” brak jest bezpośredniego eksportu danych do mysql 😛 Skrypt zapisuje dane w pliku .txt który pobierany jest za pomocą skryptu php na serwerze hostingowym i importowany do bazy danych.
5. Ostatnim dodanym elementem jest powerbank który chroni przed zatrzymaniem aparatury pomiarowej oraz Rpi , chwilę szukałem powerbanka który potrafi jedocześnie ładować i być ładowanym. Takowy znalazłem w ofercie firmy Good Ram , podobno powinien pracować ciągle ( bez czasu przełączenia ).
Stacja została powieszona na wysięgniku antenowym aby konstrukcja była stabilniejsza.
edit 2018/10/18 ver 2.1.1
Do strony została dodana zakładka hydro która z IMGW zaczerpuje informacje o stanie rzeki Bóbr w Jeleniej Górze
edit 2018/11/17 ver 2.1.2
Uruchomiłem testowo generowanie wykresów za pomocą bibliotek google charts API niestety nie do końca spełniają moje oczekiwania ( przykład znajdziecie tutaj -> http://piws.ovh/hwykres.php )
edit 2018/11/20 ver 2.1.3
Strona pogody posiada już swojego SSL , ale niestety wtedy nie działają moje iframe https://piws.ovh -> chwilowo bez wymuszania puki nie rozwiążę problemu.
edit 2018/12/04 ver 2.2
PiWS posiada już swój fanpage na platformie Facebook – znajdziecie tam automatycznie generowany 3 razy dziennie raport pogodowy. ( https://www.facebook.com/piwsjg/ )
edit 2018/12/17 ver 2.2.1
Potrzebujesz mieć pogodę i warunki smogowe zawsze pod ręką – teraz nie ma sprawy wykonałem bota który czeka na Ciebie na FB ( https://www.facebook.com/piwsjg ) oraz Messengerze ( szukaj go na messenger.com )
edit 2019/08/09
Stacja umarła niestety padło Rpi i z tego powodu oraz mojego braku profesjonalizmu trzeba zaczynać prawie od początku. Zmuszony byłem do wyłączenia wszystkich serwisów dodatkowych dotyczących PiWS do odwołania.
edit 2019/09/12 ver 3.0.1
Wszystko on nowa , wskrzeszone Rpi + nowa karta oraz zupełnie inne oprogramowanie. Cumulus pracujący za pomocą biblioteki mono nie był „lekki” dla tego poczciwego komputerka dlatego zdecydowałem się zrobić wszystko od nowa i postawiłem na oprogramowanie weewx które pracuję na Pythonie.
Stacja pracuje i zrzuca dane do pliku .db – czyli po polski nie potrafi jeszcze korzystać z mysql.
edit 2019/09/13 ver 3.0.2
Udało mi się zmusić oprogramowanie do budowania nieskomplikowanej strony www którą oczywiście znajdziecie pod adresem https://piws.ovh
edit 2019/09/17 ver 3.0.3
Strona została uzupełniona o pełne dane dot. słońca oraz księżyca , dodano linki z tymi informacjami.