Osobiście uważam, że każdy powinien mieć w domu jeden taki mini-serwer i wszelkie integracje powinny być robione z poziomu tego serwera

Poniżej dość szczegółowy tutorial.
Dane z Airly w Supli
Należy założyć konto w Airly i pobrać klucz API, za pomocą którego będziemy pobierać dane z Airly.
Serwis Airly pozwala za darmo na 100 zapytań dziennie do API, a więc odświeżanie danych będziemy mieć co 15 min.
Dane będą pobierane w formacie json a następnie odczytywane przez supla-device dla Linuxa.
Co będzie potrzebne?
- komputer z zainstalowanym systemem Linux.
- aplikacja supla-device dla Linuxa (należy skompilować program zgodnie z intrukcjami https://github.com/SUPLA/supla-device/t ... ples/linux )
- trochę czasu

Zaczynamy od założenia konta:
1. Założenie konta w Airly: https://developer.airly.org/pl/register
2. Po rejestracji otrzymamy maila z linkiem do potwierdzenia adresu.
3. Po kliknięciu w link, zostaniemy przekierowani na stronę z naszym prywatnym kluczem API.
Następnie sprawdzamy, czy klucz działa poprawnie. W tym celu instalujemy aplikację curl na Linuxie. Na systemach Debian/Ubuntu itp. robimy to poleceniem:
Code: Select all
sudo apt install curl
Code: Select all
curl -X GET --header 'Accept: application/json' --header 'apikey: TWOJE_API_KEY' 'https://airapi.Airly.eu/v2/installations/8087'
Code: Select all
{"id":8077,"location":{"latitude":50.062006,"longitude":19.940984},"locationId":8077,"address":{"country":"Polska","city":"Kraków","street":"Mikołajska","number":null,"displayAddress1":"Kraków","displayAddress2":"Mikołajska"},"elevation":220.38,"airly":true,"sponsor":{"id":489,"name":"Chatham Financial","description":"Airly Sensor's sponsor","logo":"https://cdn.airly.eu/logo/ChathamFinancial_1570109001008_473803190.jpg","link":"https://crossweb.pl/job/chatham-financial/ ","displayName":"Chatham Financial"}}

Jeśli w odpowiedzi otrzymaliśmy: {"message":"UNAUTHORIZED"} - to znaczy, że użyliśmy nieprawidłowego klucza API.
Przy testowaniu różnych poleceń, pamiętaj o limicie 100 zapytań dziennie. Każde polecenie tutaj wykonane zużywa nam 1 zapytanie z limitu.
Dane z Airly można pobierać na kilka sposobów. Pełną dokumentację można znaleźć tutaj https://developer.airly.org/pl. Np. można pobrać dane pomiarowe z konkretnej stacji pomiarowej albo pobrać uśrednione dane dla konkretnych współrzędnych, które biorą pod uwagę kilka okolicznych stacji.
Id stacji najbliżej stacji pomiarowej można pobrać z mapy. Wystarczy wejść na: https://airly.org/map/pl , następnie znaleźć stację najbliżej siebie i kliknąć na nią. Adres w przegląrdce powinien się zmienić na podobny do:
Code: Select all
https://airly.org/map/pl/#51.09364,16.977073,i103186
Przykładowe zapytanie o dane pomiarowe ze stacji 103186
Code: Select all
curl -X GET --header 'Accept: application/json' --header 'apikey: TWOJE_API_KEY' 'https://airapi.airly.eu/v2/measurements/installation?installationId=103186'
Przykładowe zapytanie na bazie współrzędnych:
Code: Select all
curl -X GET --header 'Accept: application/json' --header 'apikey: TWOJE_API_KEY' 'https://airapi.airly.eu/v2/measurements/point?lat=51.11821328466591&lng=16.99707820020887'
Code: Select all
cd ~
mkdir supla
Code: Select all
crontab -e

Na końcu pliku dodajemy (tutaj wariant ze współrzędnymi):
Code: Select all
*/15 * * * * curl -X GET --header 'Accept: application/json' --header 'apikey: TWOJE_API_KEY' 'https://airapi.airly.eu/v2/measurements/point?lat=51.11821328466591&lng=16.99707820020887' > ~/supla/airly.json
Na tym kończymy konifurację związaną z pobieraniem danych.
Teraz ustawimy supla-device tak, aby te dane pobierał i przekazywał na nasze konto. Na chwilę obecną Supla nie ma "kanału pomiarowego ogólnego przeznaczenia", więc wszystkie dane będziemy przekazywać jako temperatura.
W przykładach dla Linuxa jest dodany plik konfiguracyjny do czytania airly.json.
Przykładowy plik wygląda tak:
Code: Select all
# Example supla-device config file for Linux device
# https://github.com/SUPLA/supla-device
name: Airly integration
log_level: debug
state_files_path: "/var/local/supla-device/airly"
security_level: 2
supla:
server: svr123.supla.org
mail: mail@user.com
channels:
- type: ThermHygroMeterParsed
name: airly_temp_and_humi
source:
type: File
# Please provide path to your airly.json file
file: "/home/user/supla/airly.json"
expiration_time_sec: 1200
parser:
type: Json
name: p1
temperature: "/current/values/5/value"
humidity: "/current/values/4/value"
- type: PressureParsed
name: airly_pressure
parser:
use: p1
pressure: "/current/values/3/value"
# Supla doesn't provide generic measurement channel yet, so we use thermometer
# as a workaround
- type: ThermometerParsed
name: airly_pm1
parser:
use: p1
temperature: "/current/values/0/value"
- type: ThermometerParsed
name: airly_pm25
parser:
use: p1
temperature: "/current/values/1/value"
- type: ThermometerParsed
name: airly_pm10
parser:
use: p1
temperature: "/current/values/2/value"
ścieżki plików `state_file_path` oraz ścieżkę do pliku airly.json.
Powyższa kofniguracja da nam dane pomiarowe:
- aktualna temperatura i wilgotność
- ciśnienie atmosferyczne
- PM1, PM2.5, PM10 - w formie kanałów temperatury.