Pomysł z filmu jest prosty: urządzenie, które jednym spojrzeniem mówi, czy można pojechać do pracy rowerem. Po lewej stronie ekranu jest mapa z radarem opadów, po prawej godzina, pogoda w wybranym miejscu i wykresy temperatury oraz opadów na najbliższe godziny i dni. Kliknięcie wykresu przełącza go na prędkość wiatru, a mapę przesuwa się dotykiem, więc pogodę można sprawdzić w dowolnym miejscu na świecie.

To lokalna strona internetowa, którą Raspberry Pi otwiera w przeglądarce na pełnym ekranie. Film opublikowała Core Electronics, australijska firma sprzedająca elektronikę dla majsterkowiczów. Za program odpowiada Eric Lewin: kod jest otwarty (licencja MIT) i znajduje się w repozytorium pi-weather-station na GitHubie. Strona projektu szacuje, że z gotową instrukcją całość zajmie około godziny, a pierwsze podejście trwało pół dnia.

Czego potrzeba

  • Raspberry Pi: w filmie Raspberry Pi 4 Model B z 2 GB pamięci, ale nada się też słabszy model;
  • oficjalny ekran dotykowy Raspberry Pi 7 cali (800 × 480 pikseli) i akrylowy stojak, taki jak w filmie;
  • karta microSD z systemem Raspberry Pi OS oraz zasilacz USB-C;
  • mysz i klawiatura do pierwszej konfiguracji;
  • internet przez Wi-Fi albo kabel Ethernet;
  • konta w kilku serwisach z mapami i danymi pogodowymi (opisane niżej).

Montaż ekranu opisuje osobny poradnik Core Electronics. W skrócie: Raspberry Pi mocuje się z tyłu ekranu, łączy z nim taśmą do złącza DSI, czyli gniazda przeznaczonego dla ekranów, a ekran zasila się dołączonymi przewodami z pinów GPIO (uniwersalnych wyprowadzeń płytki): 5 V i masy. Na końcu wystarczy włożyć kartę z systemem, podłączyć mysz, klawiaturę i zasilanie.

System na karcie

Strona projektu, aktualizowana w kwietniu 2022 roku, zaleca starszą wersję systemu o nazwie „Buster”, bo ówczesny nowy „Bullseye” nie współpracował jeszcze poprawnie z npm, czyli menedżerem pakietów, którym instaluje się program. Źródła nie mówią, czy projekt działa na dzisiejszych wersjach Raspberry Pi OS, a wersję „Buster” polecają wprost.

Instalacja programu

Polecenia wpisuje się w terminalu Raspberry Pi, każde zatwierdzając klawiszem Enter, a gdy system o to zapyta, także klawiszem Y:

cd Downloads/
git clone https://github.com/elewin/pi-weather-station
cd pi-weather-station
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt install nodejs
npm install
npm start

Pierwsze trzy linie wchodzą do katalogu Downloads, pobierają kod projektu z GitHuba (git clone robi jego kopię na dysku) i przechodzą do nowego katalogu. Kolejne dwie instalują Node.js, czyli środowisko do uruchamiania programów napisanych w JavaScripcie. npm install dociąga biblioteki potrzebne projektowi, a npm start uruchamia lokalny serwer. W filmie pobranie kodu trwa poniżej minuty, a instalacja Node.js poniżej dwóch.

Gdy w terminalu pojawi się komunikat, że program działa na porcie 8080, wszystko jest gotowe. Przeglądarka zwykle otwiera się sama, a jeśli nie, wystarczy wpisać adres localhost:8080 (localhost oznacza to samo urządzenie). Pełny ekran włącza się klawiszem F11.

Dwa zastrzeżenia do tych poleceń. Linia z curl pobiera skrypt ze strony NodeSource i od razu wykonuje go jako administrator, więc warto mieć pewność, że adres jest właściwy. Opis filmu przypomina, że strona mogłaby zostać podstawiona. Poza tym setup_10.x instaluje Node.js w wersji 10, której wsparcie zakończyło się 30 kwietnia 2021 roku, niecały miesiąc przed publikacją filmu. Plik README w repozytorium (opis projektu) mówi tylko, że potrzebny jest Node.js, bez numeru wersji, więc dziś trzeba dobrać wersję samodzielnie.

Klucze API

Program tylko wyświetla dane, które pobiera z zewnętrznych usług przez ich API (interfejs przeznaczony dla programów). Każda usługa wymaga konta i klucza API: długiego ciągu znaków, po którym serwis rozpoznaje, kto pyta. Według README potrzebne są klucze z dwóch serwisów: Mapbox (mapy) i Tomorrow.io (dane pogodowe i prognozy). Trzeci, LocationIQ, jest opcjonalny: zamienia współrzędne na nazwę miejsca, a bez niego panel pokazuje same współrzędne. W filmie konta założono we wszystkich trzech. Radar opadów pochodzi z RainViewer, a godziny wschodu i zachodu słońca z serwisu Sunrise-Sunset; oba działają bez klucza.

Konta zakłada się jak zwykle: adres e-mail, hasło i potwierdzenie przez e-mail. Gotowe klucze wkleja się w ustawieniach aplikacji, które otwiera ikona koła zębatego w prawym dolnym rogu. Pola nazywają się Maps API Key (Mapbox), Weather API Key (Tomorrow.io) i Geolocation API Key (LocationIQ). W tym samym oknie ustawia się jednostki (stopnie Fahrenheita lub Celsjusza, mile na godzinę lub metry na sekundę, cale lub milimetry, zegar 12- lub 24-godzinny) oraz własne współrzędne, od których mapa ma startować. Po zapisaniu trzeba chwilę poczekać: serwis nie zawsze od razu akceptuje nowy klucz, a film podaje około 15 minut.

README dodaje dwie uwagi. Po pierwsze, limity: każde przesunięcie mapy i wybranie nowego miejsca to osobne zapytanie do serwisu, a program odpytuje serwisy także okresowo w ciągu dnia, więc warto znać warunki planu u każdego dostawcy (strona projektu mówi o darmowych kontach). Po drugie, bezpieczeństwo: klucze zapisują się lokalnie w pliku settings.json jako zwykły tekst, a aplikacja jest domyślnie dostępna tylko z tego samego urządzenia. Można ją otworzyć dla całej sieci, ale wtedy każdy w niej odczyta klucze ze strony ustawień.

Ekran, kursor i restart

Domyślnie Raspberry Pi gasi ekran po 10 minutach bez ruchu myszy i klawiszy, co w panelu pogodowym przeszkadza. Wyłącza się to w menu: Preferences → Raspberry Pi Configuration → Display → Screen Blanking: Disabled, po czym trzeba zrestartować urządzenie. Na ekranie dotykowym zbędny jest też kursor myszy: w ustawieniach aplikacji wystarczy przełączyć Hide Mouse na On.

Aplikacja nie uruchamia się sama po włączeniu zasilania. Po każdym restarcie trzeba otworzyć terminal i wpisać:

cd Downloads/pi-weather-station
npm start

Strona projektu odsyła do komentarzy pod artykułem po sposoby na automatyczny start.

Co się zmieniło od czasu filmu

Film pochodzi z maja 2021 roku, a repozytorium było od tego czasu rozwijane. W lutym 2023 doszedł gotowy obraz Dockera (paczka do uruchamiania programu w kontenerze) dla architektur AMD64 i ARM. W czerwcu 2023 prognozę siedmiodniową zastąpiono pięciodniową z powodu nowych ograniczeń API, więc wykres wygląda dziś inaczej niż w nagraniu. W maju 2026 ukazały się wersje 3.0, 3.0.1 i 3.0.2: zgodność z aktualnym API Tomorrow.io oraz poprawki, między innymi kafelków mapy z radarem z RainViewer. Dlatego przed instalacją warto zajrzeć do README repozytorium, bo jest nowsze niż film i strona projektu.

Dwie prostsze alternatywy

Jeśli zakładanie kont i kluczy nie jest warte zachodu, film pokazuje dwie strony, które też nadają się na ekran Raspberry Pi i działają bez kluczy API. Windy otwarte na pełnym ekranie ma zupełnie inny wygląd i pokazuje mniej informacji, ale uruchamia się znacznie szybciej. Flightradar24 pokazuje na żywo samoloty i śmigłowce w powietrzu.

Artykuł powstał na podstawie filmu „Raspberry Pi Rain Radar & Weather Dashboard” z kanału Core Electronics oraz źródeł z jego opisu: strony projektu, repozytorium programu na GitHubie i poradnika o podłączaniu ekranu.