Własna stacja pogodowa — changelog

W związku z kilkoma błędami w wykonaniu które wyszły na jaw po publikacji ostatniego posta chciałbym zamieścić krótką erratę, jak i listę zmian które zaszły.

Od strony sprzętowej największą pomyłką okazało się zamknięcie czujnika w metalowej puszce — o ile w nocy spełnia swoje zadanie, choć jak zrozumiałem po dyskusjach z kilkoma osobami które mają trochę większe doświadczenie w temacie zupełnie niepotrzebnie, o tyle w momentach wystawienia na bezpośrednie działanie promieni słonecznych działa ona lepiej niż nie jedna szklarnia i przekłamuje pomiary o dobre kilkanaście stopni.

20 stopni podczas jednych z najzimniejszych dni tego roku? Poproszę.

20 stopni podczas jednych z najzimniejszych dni tego roku? Poproszę.

Drugim problemem okazało się przechowywanie czasów pomiarów w postaci zrozumiałej dla człowieka. O ile fajnie to działa przy importowaniu danych do arkusza kalkulacyjnego, o tyle obsługa po stronie skryptowej powodowała tylko niepotrzebne konwersje, a także problemy z interpolacją i renderowaniem danych przy próbkach z takim samym znacznikiem czasu spowodowanym na przykład resetem urządzenia. Aktualnie znaczniki przechowywane są w postaci tzw. UNIX timestamp, a konwertowane na postać zrozumiałą człowiekowi jedynie podczas renderowania wykresu. Z wad takiego rozwiązania warto wymienić to, że Arduino zapisuje czas lokalny, ponieważ jest to jedyny łatwo dostępny sposób z poziomu kompilatora — trzeba więc brać na to poprawkę przy operowaniu na znacznikach po stronie skryptu renderującego.

Sam skrypt renderujący doczekał się wielu zmian, poczynając od całkowitego pozbycia się interpolacji danych która w przypadku kilkuset tysięcy próbek zaczynała wymagać potwornych zasobów pamięci, po dodanie obsługi błędów oraz możliwość wpływu na różne aspekty pracy kodu parametrami. Przy okazji biblioteki NumPy oraz SciPy stały się zbędne, a kod jest zgodny z PEP 8 (z wyłączeniem E501).

W przyszłości planuję dodać w stacji przycisk przełaczający na zapis danych do pamięci RAM, aby umożliwić chwilowe wyjęcie karty pamięci bez konieczności wyłączania całości, a także dodać mały wyświetlacz pokazujący aktualną temperaturę.