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