AirlyEu API

Mieszkam w Krakowie, mieście z fatalną jakością powietrza. Dlatego tematy poprawy i pomiaru jakości powietrza są mi bliskie.  Jakiś czas temu pozyskałem klucz API od airly.eu i w końcu znalazłem czas, aby przygotować bibliotekę dla ‘Arduino IDE’ umożliwiającą korzystanie z zasobów wspomnianego projektu Airly.

Pierwsze podejście do tematu pozyskania danych o jakości powietrza miałem w poprzednim projekcie weatherz-internetowa-stacja-pogodowa-oraz-jakosc-powietrza Tam źródłem danych był GIOŚ ze znacznie dokładniejszą metodologia pomiarów, niemniej znacznie mniejszą ilością czujników (stacji pomiarowych). Dla przykładu, w Krakowie GIOŚ ma w tej chwili 8 stacji pomiarowych, Airly koło 100. Punktem wyjścia dla danych GIOŚ była lista identyfikatorów stacji pomiarowych. W przypadku Airly jest to lokalizacja użytkownika. Za pomocą biblioteki odczytuję najbliższą aktywna stację, a następnie jej parametry czyli:

  1. PM2,5
  2. PM10
  3. INDEKS JAKOŚCI POWIETRZA
  4. ADRES LOKALIZACJI STACJI POMIAROWEJ
  5. ODLEGŁOŚĆ UŻYTKOWNIKA OD STACJI POMIAROWEJ
  6. TEMPERATURĘ
  7. CIŚNIENIE POWIETRZA
  8. WILGOTNOŚĆ

Aby skorzystać z API Airly, należy pozyskać darmowy klucz API 

/*******************************************************************
Przykład użycia biblioteki AirlyApi

This library provide access to specific air parameters, especially air pollution PM (PM - Particulate Matters) from arily.eu
Blog autora https://theveel.com/?p=370

API documentation / dokumentacja API https://developer.airly.eu/docs

W wersji darmowej dostępu do API użytkownik zobowiązuje się do wykorzystywania API wyłącznie w celach niekomercyjnych.
Limit zapytań wynosi 1000 zapytań na dzień oraz 50 zapytań na minutę.

On a free plan, API consumer is required to use API only in non-commercial uses.
API is limited to 1000 requests per day and 50 requests per minute.
 *******************************************************************/

#include <AirlyApi.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

//------- Replace the following! ------
char ssid[] = "";       // your network SSID (name)
char password[] = "";  // your network key
#define API_KEY ""  // your Airly.eu API Token https://developer.airly.eu/

WiFiClientSecure client;
AirlyApi api(API_KEY, client);

//Inputs
//user location latitude, longitude
String lat = "50.0572748";
String lon = "19.907631";
String maxDistance = "2000";

void setup() {

  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  IPAddress ip = WiFi.localIP();
  Serial.println(ip);

  checkNearestSonsor();
}

void checkNearestSonsor() {
  Serial.println("\n1.Getting sensor lat " + lat + " lon " + lon);
           api.getNearestSonsor(lat,lon,maxDistance);    
    int id=api.getLocationId().toInt();

if(id>0)
    //get temperature, humidity and preassure
    {
    checkSonsor(id);
    Serial.println("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
    Serial.println("Lokalizacja "+api.getRoute()+" "+api.getStreetNumber()+". "+api.getDistance()+"m. stąd.");
    Serial.println("Indeks jakości powietrza: "+ api.getAirQualityIndex());
    Serial.print("PM2,5: "+api.getPM25()+"µg "+toPercent(api.getPM25().toInt(),25));
    Serial.println("  PM10: "+api.getPM10()+"µg "+toPercent(api.getPM10().toInt(),50));
    Serial.println("Temperatura: "+api.getTemperature()+"°C, ciśnienie: "+api.getPressure()+"hPa, wilgotność: "+api.getHumidity()+"%");
    
    }else{
    Serial.println("\n$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
    Serial.println("$$$$$$$$$$  A P I   E R R O R  $$$$$$$$$$");}    
    Serial.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");

}

void checkSonsor(int id) {
    api.getSensorValues(id); //(id)
}

String toPercent(int val, float base) {
  int i = (val / base) * 100;
  return (String)i + "%";
}

void loop() {

}

Wynik w konsoli IDE

Pobierz z Githuba

Subscribe
Notify of
guest
3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] biblioteka dla ESP8266, umożliwiająca pobieranie danych o jakości powietrza. W poprzedniej dostawcą danych był serwis airly.eu. W obecnej jest to Główny Inspektorat Ochrony […]

konrad
konrad
1 year ago

witam
Jak widze miewielkie zaiteresowanie tym projektem a szkoda, jest bardzo cenny.
Mam jedno pytanie projekt powstał ponad rok temu, a w API AIRLY nastąpiły niewielkie zmiany.
Czy obecnie tymi samymi bibliotekami uzyskujesz odczyty, czy zmieniłeś w bibliotekach zapytania?