AirQ sygnalizator smogu
AirQ – lokalny sygnalizator jakości powietrza oparty na ESP8266 i OLED
1. Cele projektu
Projekt AirQ umożliwia każdemu użytkownikowi stworzenie własnego, lokalnego urządzenia informującego o jakości powietrza – bez potrzeby posiadania własnej stacji pomiarowej.
Urządzenie (zwane flagmanem) pobiera dane z wybranych stacji pomiarowych należących do sieci Filipiak.cc, która integruje pomiary z różnych źródeł, m.in. GIOS i AQICN.
Kluczową zaletą systemu jest to, że użytkownik uruchamia własny serwer AirQ – nie ma jednej scentralizowanej instancji. Dzięki temu cały system działa prywatnie, niezależnie i może funkcjonować nawet w sieci lokalnej.
2. Architektura systemu
2.1. Flagman (ESP8266 + OLED)
To urządzenie końcowe, które:
- łączy się z siecią Wi-Fi,
- rejestruje się w lokalnym serwerze AirQ,
- pobiera dane w formacie JSON,
- wyświetla aktualny poziom zanieczyszczeń na ekranie OLED.
Dostępna jest również wersja bez OLED – sygnalizująca stan za pomocą diod LED.
2.2. Serwer AirQ (PHP + MySQL)
Użytkownik instaluje moduł serwera na własnej maszynie (np. Raspberry Pi, VPS, lokalny komputer z XAMPP).
Serwer:
- udostępnia JSON API,
- prowadzi bazę danych flagmanów i stacji,
- integruje się z siecią Filipiak.cc (lub innymi źródłami),
- zapewnia formularz webowy do przypisywania flagmanów do stacji.
3. Działanie systemu
Schemat działania:
- Użytkownik instaluje serwer AirQ i konfiguruje bazę danych.
- Wgrywa firmware na ESP8266 i konfiguruje połączenie Wi-Fi przez terminal UART.
- Flagman wykonuje rejestrację:
GET /?mod=airq&flagman=register→ otrzymuje unikalny identyfikator, np.3CII6AR0QU. - W formularzu webowym (
/?mod=airq) przypisuje ten identyfikator do wybranej stacji. - Flagman cyklicznie odpytuje:
GET /?mod=airq&flagman=3CII6AR0QU→ otrzymuje np.:{"aq":"2","time":1761737001} - ESP8266 wyświetla odpowiedni komunikat na OLED na podstawie wartości
aq.
Poziomy jakości powietrza (AQI)
aq |
Opis |
|---|---|
| 0 | Bardzo dobre |
| 1 | Dopuszczalne |
| 2 | Niezdrowe dla wrażliwych |
| 3 | Ostrzeżenie zdrowotne |
| 4 | Alarm |
| 5 | Zagrożenie życia |
4. Konfiguracja – krok po kroku
4.1. Serwer
- Skopiuj katalog
server/z repozytorium na serwer z PHP 8.x i MySQL. - Utwórz bazę danych i zaimportuj tabele:
AirQ_flagman,AirQ_station(database.sql) - Skonfiguruj dane logowania w pliku
config.php. - Otwórz w przeglądarce:
http://twój-serwer.pl/?mod=airq– zobaczysz formularz do przypisywania flagmanów.
4.2. Flagman (ESP8266)
- Zainstaluj w Arduino IDE biblioteki:
ESP8266WiFi,ESP8266HTTPClient,U8g2,ArduinoJson,EEPROM. - Wgraj kod z katalogu
firmware/. - Połącz się przez UART (115200 8N1) i wykonaj konfigurację:
s– skanuj sieci Wi-Fi,c– ustaw SSID i hasło,j– połącz z Wi-Fi,r– zarejestruj flagmana,o– sprawdź identyfikator.
- Przypisz identyfikator do stacji przez formularz webowy.
- Urządzenie samo zacznie wyświetlać dane.
http://api.filipiak.cc/), jednak po uruchomieniu własnej instancji zaleca się zmienić go na lokalny (np. http://192.168.1.100/).5. API – szczegóły komunikacji
Przykłady zapytań (dla domeny twoj-serwer.pl):
- Rejestracja:
GET /?mod=airq&flagman=register→{"name":"3CII6AR0QU"} - Pobranie danych:
GET /?mod=airq&flagman=3CII6AR0QU→{"aq":"1","time":1761737001} - Panel administracyjny:
GET /?mod=airq→ formularz HTML
Komunikacja odbywa się przez standardowe zapytania HTTP GET. Parametry są przekazywane jako część
adresu URL,
zgodnie z definicją standardu RFC 1738.
6. Prywatność i decentralizacja
Projekt nie wymaga żadnych usług zewnętrznych po uruchomieniu własnego serwera.
Dane mogą pochodzić z sieci Filipiak.cc, ale równie dobrze z lokalnych czujników (np. SDS011 + ESP32).
To podejście zapewnia:
- pełną kontrolę nad danymi,
- brak zależności od firm trzecich,
- możliwość działania w 100% w sieci lokalnej.
7. Gdzie znaleźć kod?
Cały projekt jest otwarty i dostępny na GitHubie:


