Bước đầu tiên là nhận mã thông báo từ trang nền tảng dữ liệu.
Sau khi có mã thông báo của riêng mình, bạn có thể sử dụng tập lệnh sau để tải dữ liệu của mình lên. Sau khi bạn tải lên dữ liệu trạm đầu tiên của mình, hãy truy cập aqicn.org/data-feed/verification/ để định cấu hình các trạm của bạn và xác minh dữ liệu đã tải lên.
Nền tảng phần mềm được hỗ trợ:
Chúng tôi cung cấp phần mềm sẵn sàng để sử dụng cho 3 nền tảng đó:
- Arduino: Nếu bạn có CPU Arduino, hãy sử dụng phần mềm sẵn sàng sử dụng có sẵn trên github.com tại aqicn/gaia-a08-arduino.
- Python: Sử dụng đoạn mã bên dưới
- Dòng lệnh (CURL): Sử dụng đoạn mã bên dưới
Nếu bạn không có trạm giám sát nào và muốn có một trạm, hãy kiểm tra các trạm giám sát Chất lượng Không khí GAIA của chúng tôi.
Nếu bạn thích trạm tự làm, hãy kiểm tra GAIA A08.
--
Mã mẫu (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)
Mã mẫu (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}]\
}'
Mã mẫu (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();
}