Первый шаг — получить токен на странице платформы данных.
Если у вас есть собственный токен, вы можете использовать следующий скрипт для загрузки своих данных. После загрузки данных первой станции перейдите на сайт aqicn.org/data-feed/verification/, чтобы настроить станции и проверить загруженные данные.
Поддерживаемые программные платформы:
Мы предоставляем готовое к использованию программное обеспечение для этих трех платформ:
- Arduino. Если у вас есть процессор Arduino, используйте готовое к использованию программное обеспечение, доступное на github.com по адресу aqicn/gaia-a08-arduino.
- Python: используйте приведенный ниже фрагмент кода.
- Командная строка (CURL): используйте приведенный ниже фрагмент кода.
Если у вас нет станции мониторинга и вы хотели бы ее приобрести, посетите наши станции мониторинга качества воздуха GAIA.
Если вы предпочитаете станцию, сделанную своими руками, обратите внимание на 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}]\
}' Пример кода (Ардуино)
#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();
} 

