W tym wpisie
znajdź źródło, które odpowiadaprzeglądarka nie łączy się z dostawcąlimit godzinowy odporny na błędypomiary, czas i uczciwa obsługa awariiniewielkie dostępne oknorozszerzenie cache na 40 miastźródłaznajdź źródło, które odpowiada
Informacja o czujniku na stronie Paczkomatu to wskazówka, a nie dowód działania jego endpointu. Publiczne strony InPost wykonują AJAX POST pod adres o postaci /shipx-point-data/<id>/<locker>/air_index_level. Skrypt oczekuje pól air_index_level i tablicy air_sensors. Podczas budowy kilka wrocławskich endpointów, w tym WRO103M, zwracało „Air sensors are not available.”
Przydatną alternatywą okazała się publiczna mapa czujników InPost na portalu Wrocławia. Miasto informuje, że pozyskuje te odczyty dzięki współpracy z InPost. WRO252M przy Kasprowicza 1 miał aktualne dane temperatury, wilgotności, ciśnienia, PM2,5 i PM10. Dopasowałem adres i współrzędne do publicznego rekordu InPost, zamiast zgadywać na podstawie bliskości.
przeglądarka nie łączy się z dostawcą
Publiczna architektura składa się z czterech elementów: stałych publicznych źródeł danych, cyklicznego kolektora, zweryfikowanych plików JSON i okna w przeglądarce. Kolektor działa na serwerze. Przeglądarka odczytuje katalog miast i zapis wybranego miasta pod /api/environment/ na tej stronie. Pierwotny adres /api/environment.json zachowuje zgodność z wcześniejszym widgetem Wrocławia. Otwarcie chmurki nie uruchamia kolejnego zapytania do dostawcy. Nie ma osadzonej mapy, zewnętrznego skryptu, klucza API ani fontu od strony trzeciej.
Źródło jest stałe. Kolektor nie przyjmuje od użytkownika adresu URL, numeru Paczkomatu ani celu pobierania. Dzięki temu endpoint nie staje się otwartym proxy. Do publicznego pliku trafiają wyłącznie wybrana stacja, znane pomiary i znaczniki czasu; surowe odpowiedzi i diagnostyka pozostają poza nim.
limit godzinowy odporny na błędy
Prywatny znacznik zapisuje początek ostatniej próby przed rozpoczęciem komunikacji sieciowej. Blokada pliku uniemożliwia równoległe uruchomienia kolektora. Lokalne sprawdzenia harmonogramu nie kontaktują się z dostawcą, dopóki nie minie co najmniej 3600 sekund, również po timeoutach, błędnym JSON-ie czy restarcie. Pobieranie ma limit czasu i rozmiaru, bez automatycznych ponowień u źródła.
zablokuj kolektor jeśli teraz - ostatnia_próba < 3600: zakończ zapisz ostatnią_próbę przed komunikacją pobierz stałe publiczne źródło zweryfikuj stację i znane pola atomowo podmień publiczny zapis
Zapis do pliku tymczasowego i atomowa podmiana zapobiegają odczytaniu połowy dokumentu JSON. Czas kolejnego odświeżenia uwzględnia pięciominutową granicę harmonogramu. Odliczanie opiera się na czasie bezwzględnym, więc uśpiona karta nadąża po wznowieniu.
pomiary, czas i uczciwa obsługa awarii
Brak liczby oznacza null, nigdy zero. Wartości nieskończone i wykraczające poza szerokie zakresy fizyczne są odrzucane. Czas pomiaru pochodzi ze źródła, a czas sprawdzenia cache opisuje pobranie przez tę stronę. To celowo różne informacje. Pomiary starsze niż trzy godziny są oznaczane jako nieaktualne. Awaria źródła zachowuje ostatnie odczyty z widoczną informacją; pierwsza nieudana próba pokazuje brak danych.
Wrocławski Indeks Powietrza ma inną skalę niż kategorie InPost. Widget wyraźnie opisuje indeks miejski, zamiast mieszać te dwie skale. O₃ i NO₂ mają kreski, jeśli źródło ich nie podaje. To poglądowe odczyty lokalne, nie oficjalne pomiary referencyjne.
niewielkie dostępne okno
Chmurka jest przyciskiem z opisową etykietą. Natywny <dialog> obsługuje fokus i zamknięcie klawiszem Escape. Po zamknięciu fokus wraca do chmurki. Wartości są wstawiane przez textContent, bez HTML-a dostawcy. Etykiety działają w EN/PL, a okno dziedziczy wybrany motyw. Sekundowe odliczanie jest wizualne i nie generuje ciągłych komunikatów czytnika ekranu.
Mały link do Fundacji InPost prowadzi do oficjalnej strony. Fundacja wspiera pracowników i rodziny w trudnych sytuacjach oraz działania społeczne pracowników. To zwykły odnośnik, nie formularz wpłat ani informacja o patronacie nad widgetem.
rozszerzenie cache na 40 miast
Chmurka pozwala teraz wybrać jedno z 40 dużych polskich miast, w tym wszystkie stolice województw. Każde miasto ma jeden zweryfikowany Paczkomat; wartości są lokalnymi odczytami, a nie średnią dla miasta. Wrocław zachowuje opisane wyżej źródło miejskie. Pozostałe miasta korzystają z publicznego endpointu strony Paczkomatu InPost, znalezionego w adresie zapytania samej strony i sprawdzonego pod kątem rzeczywistych pomiarów pyłu.
Mały katalog /api/environment/cities.json zawiera obsługiwane miasta. Każde ma osobną trasę tylko do odczytu, np. /api/environment/warszawa.json. Pierwotny adres /api/environment.json pozostaje zgodny z wcześniejszym widgetem Wrocławia. Przeglądarka wybiera stały identyfikator z katalogu; nie może zlecić kolektorowi pobrania dowolnego URL-a. Wybór miasta zostaje w tej karcie, bez geolokalizacji i śledzenia.
Bezpośrednie odpowiedzi InPost zawierają dane czujników rozdzielone dwukropkami. Dla PM25:20.67:137.82 właściwy pomiar jest drugim polem; trzecie to procent, nie kolejne stężenie. Przetwarzaj wyłącznie znane nazwy, sprawdzaj skończoność i zakres liczb, a brakujące pomiary pozostaw jako null. Ten endpoint nie podaje czasu pomiaru. Widget mówi o tym wprost i pokazuje osobny czas pobrania; nie wymyśla daty pomiaru ani nie obiecuje, że świeże pobranie dowodzi świeżego pomiaru.
Kolektor zapisuje osobny limit godzinowy dla każdego źródła, bez automatycznych ponowień po błędach. Jedno sprawdzenie harmonogramu wykonuje najwyżej cztery kolejne zapytania, z przerwą dwóch sekund. Zapisany limit obejmuje najwyżej 40 prób dla wszystkich źródeł razem na każde pełne 3600 sekund. HTTP 429 wstrzymuje dostawcę na co najmniej sześć godzin i respektuje dłuższe Retry-After. HTTP 401/403 wyłącza pobieranie od dostawcy do ręcznej weryfikacji; timeouty i błędy serwera powodują wspólną przerwę godzinową. Lekki harmonogram sprawdza stan co pięć minut, co daje o 80% mniej lokalnych sprawdzeń; każde źródło nadal jest pobierane najwyżej raz na pełne 3600 sekund. Atomowe zapisy są serwowane jako pliki statyczne. Przeglądarka ładuje katalog dopiero po otwarciu chmurki, wykorzystuje wcześniej pobrane dane przy zmianie miasta i zatrzymuje odliczanie w ukrytej karcie.