Перший крок — отримати маркер зі сторінки платформи даних .
Отримавши власний маркер, ви можете використовувати наступний сценарій для завантаження даних. Після того, як ви завантажите свої перші дані станції, перейдіть на aqicn.org/data-feed/verification/, щоб налаштувати свої станції та перевірити завантажені дані.
Підтримувані програмні платформи:
Ми надаємо готове до використання програмне забезпечення для цих 3 платформ:
- Arduino : якщо у вас є процесор Arduino, використовуйте готове до використання програмне забезпечення, доступне на github.com за адресою aqicn/gaia-a08-arduino .
- Python: використовуйте наведений нижче фрагмент коду
- Командний рядок (CURL): використовуйте наведений нижче фрагмент коду
Якщо у вас немає жодної станції моніторингу, але ви хочете її отримати, перевірте наші станції моніторингу якості повітря GAIA .
Якщо ви віддаєте перевагу станції DIY, перевірте GAIA A08 .
Режим роботи
Під час завантаження даних бажано обчислювати середнє значення даних за останню хвилину (що зазвичай становить близько 60 зразків на забруднювач) та надсилати усереднені дані на наш сервер щохвилини.
Якщо ви не впевнені, як завантажити дані, або якщо ви хочете використовувати власний скрипт, просто надішліть нам повідомлення за допомогою форми нижче, і ми зробимо все можливе, щоб допомогти вам.
--
Приклад коду (python)
import requests
# Sensor parameter
sensorReadings = [
{'specie':'pm25', 'value': 393.3},
{'specie':'pm10', 'value': 109.3}
]
# Station parameter
station = {
'id': "station-001",
'location': {
'latitude': 28.7501,
'longitude': 77.1177
}
}
# User parameter - get yours from https://aqicn.org/data-platform/token/
userToken = "dummy-token-for-test-purpose-only"
# Then Upload the data
params = {'station':station,'readings':sensorReadings,'token':userToken}
request = requests.post( url = "https://aqicn.org/sensor/upload/", json = params)
#print(request.text)
data = request.json()
if data["status"]!="ok":
print("Something went wrong: %s" % data)
else:
print("Data successfully posted: %s"%data)
Зразок коду (curl)
curl -X POST https://aqicn.org/sensor/upload -H 'Content-Type: application/json' --data '{\
"token": "dummy-token-for-test-purpose-only",\
"station": { "id": "station-001" },\
"readings": [{"specie":"pm2.5", "value": 393.3}]\
}' Приклад коду (arduino)
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#define LATITUDE 28.7501
#define LONGITUDE 77.1177
void upload(float pm25_concentration, float pm10_concentration, const char * token)
{
static char stationID[32];
uint64_t efuseMac = ESP.getEfuseMac();
uint16_t chip = (uint16_t)(efuseMac >> 32);
snprintf(stationID, 32, "station-%x", chip);
doc["token"] = token;
doc["station"]["id"] = stationID;
doc["station"]["location"]["latitude"] = LATITUDE;
doc["station"]["location"]["longitude"] = LONGITUDE;
doc["readings"][0]["specie"] = "pm25";
doc["readings"][0]["value"] = pm25_concentration;
doc["readings"][0]["unit"] = "µg/m3";
doc["readings"][1]["specie"] = "pm10";
doc["readings"][1]["value"] = pm10_concentration;
doc["readings"][1]["unit"] = "µg/m3";
static char json_body[1024];
serializeJson(doc, json_body);
HTTPClient http;
http.begin("https://aqicn.org/sensor/upload");
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(json_body);
if (httpResponseCode > 0)
{
String response = http.getString();
Serial.println(httpResponseCode);
Serial.println(response);
}
else
{
Serial.print("Error on sending POST: ");
Serial.println(httpResponseCode);
}
http.end();
} 

