Pamiętaj, aby wypełnić formularz celem uzyskania X-Api-Key
Po 24h wykresy na https://metrics.airmonitor.pl powinny być widoczne. 24 godziny pozwolą na wyznaczenie średniej ruchomej celem wygładzenia wykresu z pomiarami.
Każdy klucz API ma przydzielony limit miesięcznych operacji w wysokości 20000. W przeliczeniu na godzinę daje to wartość 27,8 żądań. Stąd też ważne jest, aby używać jeden klucz na urządzenie. W odmiennym przypadku może dojść do ograniczenia przyjmowania metryk z powodu wysycenia limitów.
Dostępne jest również REST API do wysyłania pomiarów o adresie https://airmonitor.pl/prod/measurements
Dostęp do danych jest bezpłatny.
Aby uzyskać dostęp do API należy zarejestrować się poprzez formularz celem uzyskania klucza API
import requests
url = "https://airmonitor.pl/prod/measurements"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text.encode("utf8"))
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&humidity=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = (
"https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&temperature=true"
)
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&pressure=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&pm1=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&pm25=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&pm10=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&co2=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&hcho=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
import requests
url = "https://airmonitor.pl/prod/get_measurement?lat=50.031&long=19.566&tvoc=true"
payload = {}
headers = {"X-Api-Key": "KLUCZ API"}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Dodaj poniższy wpis do pliku configuration.yaml
sensor: !include sensors.yaml
Wyedytuj sensors podmieniając w nim lat(52.3911), long(16.8477) oraz klucz api (TWÓJ KLUCZ API)
Przeładuj konfigurację HA
[]
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pm25": 25,
"pm10": 10,
"sensor": "SDS021"
}
url = 'https://airmonitor.pl/prod/measurements'
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": "55.000",
"long": "15.000",
"pm25": 25,
"pm10": 10,
"sensor": "SDS021"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
pm25: 25,
pm10: 10,
sensor: "SDS021"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pm1": 1,
"pm25": 25,
"pm10": 10,
"sensor": "PMS7003"
}
url = ('https://airmonitor.pl/prod/measurements')
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": "55.000",
"long": "15.000",
"pm1": 1,
"pm25": 25,
"pm10": 10,
"sensor": "PMS7003"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
pm1: 1,
pm25: 25,
pm10: 10,
sensor: "PMS7003"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
Jak widać powyżej, jedyną różnicą między wersją dla sensorów SDS a PMS jest dodatkowa linia wysyłająca wartość pyłu zawieszonego PM1.
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pm1": 1,
"pm25": 25,
"pm10": 10,
"tvoc": 1,
"hcho": 2,
"co2": 400,
"temperature": 25,
"humidity": 60,
"sensor": "PTQS1005"
}
url = ('https://airmonitor.pl/prod/measurements')
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": str(55.000),
"long": str(15.000),
"pm1": 1,
"pm25": 25,
"pm10": 10,
"tvoc": 1,
"hcho": 2,
"co2": 400,
"temperature": 25,
"humidity": 60,
"sensor": "PTQS1005"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
pm1: 1,
pm25: 25,
pm10: 10,
tvoc: 1,
hcho: 2,
co2: 400,
temperature: 25,
humidity: 60,
sensor: "PTQS1005"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
Jak widać powyżej, jedyną różnicą między wersją dla sensorów SDS a PMS jest dodatkowa linia wysyłająca wartość pyłu zawieszonego PM1.
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pressure": 1000,
"temperature": 25,
"humidity": 55,
"sensor": "BME280"
}
url = 'https://airmonitor.pl/prod/measurements'
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": "55.000",
"long": "15.000",
"pressure": 1000.10,
"temperature": 25.2,
"humidity": 55,
"sensor": "BME280"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
pressure: 1000.10,
temperature: 25.2,
humidity: 55,
sensor: "BME280"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"pressure": 1000,
"temperature": 25,
"humidity": 55,
"gas_resistance": 10,
"sensor": "BME680"
}
url = 'https://airmonitor.pl/prod/measurements'
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": "55.000",
"long": "15.000",
"pressure": 1000.10,
"temperature": 25.2,
"gas_resistance": 10,
"humidity": 55,
"sensor": "BME680"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
pressure: 1000.10,
temperature: 25.2,
humidity: 55,
gas_resistance: 10,
sensor: "BME680"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
import json
import requests
data = {
"lat": str(55.000),
"long": str(15.000),
"co2": 400,
"tvoc": 0.1,
"sensor": "CCS811"
}
url = 'https://airmonitor.pl/prod/measurements'
resp = requests.post(url, timeout=10, data=json.dumps(data), headers={"X-Api-Key": X-Api-Key, "Content-Type": "application/json"})
resp.status_code
curl -X POST -H "Content-Type: application/json" -d '{
"lat": "55.000",
"long": "15.000",
"co2": 400.0,
"tvoc": 0.1,
"sensor": "CCS811"
}' https://airmonitor.pl/prod/measurements
const request = require('request');
let data = {
lat: "55.000",
long: "15.000",
co2: 400.0,
tvoc: 0.1,
sensor: "CCS811"
};
let options = {
uri: "https://airmonitor.pl/prod/measurements",
method: "POST",
json: data
};
request(options, (error, response) => {
if (error) {
return console.log(error);
}
if (response.statusCode === 200) {
// Success
}
});
NodeJS wymaga biblioteki request, instalacja - npm install --save request