Po miesiącu od ostatniej aktualizacji wypuszczam wersję 0.2.0 pluginu homebridge-airly2. To największa aktualizacja od lat, skupiona na bezpieczeństwie, jakości kodu i stabilności.
Co nowego w v0.2.0?
Bezpieczeństwo i walidacja
Poprzednia wersja ufała danym z konfiguracji bez ich weryfikacji. Teraz wszystkie parametry są dokładnie sprawdzane:
Walidacja współrzędnych geograficznych:
// Szerokość: -90 do 90
// Długość: -180 do 180
if (latitude < -90 || latitude > 90) {
throw new Error('Invalid latitude');
}
Walidacja maxDistance:
- Wartości <= 0 lub nieprawidłowe → domyślnie 3 km
- Wartości > 50 km → automatycznie ograniczone do 50 km z ostrzeżeniem w logu
Bezpieczne budowanie URL:
// Przed (podatne na injection):
const url = `...?lat=${latitude}&lng=${longitude}`;
// Teraz (bezpieczne):
const params = new URLSearchParams({
lat: String(latitude),
lng: String(longitude)
});
Timeout HTTP: Dodany 30-sekundowy timeout dla żądań do API Airly. Zapobiega “wiszącym” połączeniom, które mogły blokować Homebridge.
Nowe funkcje
Konfigurowalny interwał odświeżania:
Airly pozwala na 100 zapytań dziennie. Domyślny interwał 15 minut (~96 zapytań/dzień) respektuje ten limit, ale teraz możesz go dostosować:
{
"refreshinterval": 30
}
Unikalny numer seryjny:
Każda instancja pluginu generuje teraz unikalny numer seryjny na podstawie współrzędnych. Ułatwia to identyfikację wielu czujników w HomeKit:
AIR2-A1B2C3D4
Logowanie błędów:
Błędy pollingu są teraz logowane (w trybie debug), co ułatwia diagnozowanie problemów z połączeniem.
Testy jednostkowe
To dla mnie najważniejsza zmiana. Plugin ma teraz 53 testy jednostkowe z pokryciem kodu na poziomie 88%.
npm test
PASS ./index.test.js
✓ transformAQI (6 tests)
✓ validateCoordinates (7 tests)
✓ validateMaxDistance (4 tests)
✓ normalizeMeasurement (5 tests)
✓ getSensorValue (4 tests)
...
Tests: 53 passed
Testy używają Jest i mockują zarówno Homebridge API, jak i moduł https. Dzięki temu mogę bezpiecznie wprowadzać zmiany bez ryzyka regresji.
Dokumentacja
- CHANGELOG.md - pełna historia zmian
- TESTS.md - instrukcja testowania lokalnego krok po kroku
- README.md - zaktualizowana dokumentacja z sekcją Development
Dlaczego te zmiany?
Plugin homebridge-airly2 jest używany przez użytkowników na całym świecie. Jako jedyny maintainer czuję odpowiedzialność za:
- Stabilność - plugin musi działać niezawodnie 24/7
- Bezpieczeństwo - kod działa w sieci domowej, blisko IoT
- Jakość - testy pozwalają na bezpieczny rozwój
Jak zaktualizować?
npm update -g homebridge-airly2
Lub przez Homebridge Config UI X → Plugins → Update.
Kompatybilność
Wersja 0.2.0 wymaga:
- Homebridge 1.6+ lub 2.0-beta+
- Node.js 20.7+
Konfiguracja pozostaje wstecznie kompatybilna.
Co dalej?
Planuję:
- Obsługę powiadomień o przekroczeniu progów zanieczyszczeń
- Lepszą integrację z automatyzacjami HomeKit
- Może wsparcie dla innych API jakości powietrza
Kod źródłowy: github.com/ximot/homebridge-airly2
Masz pytania lub sugestie? Otwórz issue na GitHubie lub napisz do mnie!