Kolejna integracja z Airly :)

User avatar
klew
Posts: 10938
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Wiem, że kilka opcji integracji z Airly jest już na forum podane, ale chciałbym pokazać przykład integracji przy pomocy supla-device dla Linuxa (RPI, etc.)
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
Nadszedł czas na test zapytania do Airly. Wszystkie wystąpienia tekstu "TWOJE_API_KEY" należy podmienić na klucz API, który pobraliśmy we wcześniejszym kroku.

Code: Select all

curl -X GET --header 'Accept: application/json' --header 'apikey: TWOJE_API_KEY' 'https://airapi.Airly.eu/v2/installations/8087'
W odpowiedzi powinniśmy otrzymać takiego json'a:

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"}}
Odpowiedź może też być inna (np. błąd z informacją, że ta instalacja jest już nieaktywna). Tak czy inaczej, jeśli dostaliśmy odpowiedź to znaczy że działa :).

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
Adres ten zawiera współrzędne geograficzne oraz ID. Ta ostatnia liczba z literką "i" to ID, które w tym przypadku wynosi 103186.

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'
Jeśli chcemy użyć uśrednionych pomiarów dla dowolnej lokalizacji, to możemy użyć np. map Google do określenia współrzędnych. Po kliknięciu prawym klawiszem myszy na punkcie na mapie, pojawi się menu kontekstowe i na górze będą współrzędne. Jak na nie klikniemy to się skopiują do schowka. Np. 51.11821328466591, 16.997078200208872.

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'
Mamy już wszystko co jest potrzebne, aby pobrać dane z Airly na swój lokalny komputer. W tym przykładzie dane będziemy zapisywać w katalogu domowym do folderu supla. W terminalu możemy go utworzyć np. tak:

Code: Select all

cd ~
mkdir supla
Następnie odpalamy komendę:

Code: Select all

crontab -e
Wybieramy nasz ulubiony edytor (oczyście VIM ;P ... jeśli nie znasz, to wybierz inny ;) ).
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
Następnie zapisujemy crona i zamykamy edytor. Od tego momentu, równo co 15 min (0, 15, 30, 45) zostanie uruchomiona komenda i dane będą zapisane do pliku ~/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"
W powyższej konfiguracji, uzupełniamy dane dla naszego konta Supli i poprawiamy
ś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.
User avatar
MadOnion78
Posts: 1066
Joined: Sun Nov 24, 2019 3:53 pm
Location: Głubczyce

Post

Pytanie laika, można do tego zaprzęgnąć RPi zero które aktualnie ogarnia odczyt z termometrów xiaomi?
3x SRW-01, 1x mSRW-01, 7x ROW-02, 2x SBW-02, 2x LIW-01, 1x SLW-02, 1x SLW-02, 1x MEW-01, 1x DIW-01, RNW-01 ;)
User avatar
klew
Posts: 10938
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

MadOnion78 wrote: Mon Dec 19, 2022 3:22 pm Pytanie laika, można do tego zaprzęgnąć RPi zero które aktualnie ogarnia odczyt z termometrów xiaomi?
Można.. Można też te termometry przepiąć.
User avatar
Duch__
Posts: 2070
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Ja to zrobiłem na procesorze ESP8266 który odczytuje mi też dane z czujników temperatury DS18b20 oraz z PV.
User avatar
klew
Posts: 10938
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Duch__ wrote: Sat Dec 24, 2022 7:01 pm Ja to zrobiłem na procesorze ESP8266 który odczytuje mi też dane z czujników temperatury DS18b20 oraz z PV.
Ja zatrudniłem starego mini laptopa.
Mam tam czytanie danych z licznika Taurona po amiplus (mBus), dwa liczniki wody (też odczyt po mBus), odczyt danych z falownika.
Teraz dorzuciłem airly. Niedługo dorzucę odczyt z kilkunastu termostatów Devi reg smart (mam to już zrobione na swoim pc, tylko muszę przenieść).
Ogólnie takie tematy integracyjne wydają mi się wygodniejsze na Linuxie.

Wygodniej mi się tym zarządza z poziomu Linuxa, niż z ESP. Aktualizacja softu, zmiana konfiguracji - wszystko po SSH można ogarnąć.
User avatar
vajera
Posts: 1467
Joined: Wed Oct 31, 2018 7:58 am

Post

A ogarniał ktoś z was temat współpracy z Airly - w sensie montażu stacji?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
User avatar
QLQ
Posts: 2356
Joined: Sun Sep 03, 2017 9:13 am
Location: Koszalin

Post

a mi ku mojemu zdziewieniu zaczęło ściagać dane ze stacji GIOŚ bo Airly w Koszalinie się "powyłączały"
Ciągnie z tej stacji: https://powietrze.gios.gov.pl/pjp/curre ... /11336/3/0
.
Natomiast Airly jest w wer kolegi @Duch na esp
Clip_4.jpg
You do not have the required permissions to view the files attached to this post.
jak coś nie działa to włącz zasilanie.....
kris.gie
Posts: 403
Joined: Thu Apr 28, 2016 4:24 pm
Location: Katowice

Post

Chciałem zrobić sobie integrację z Airly poprzez supla-device. Okazało się, że w mojej okolicy nie ma ani jednej stacji Airly, więc napisałem do nich maila. Oto odpowiedź:
Dzień dobry,
Bardzo dziękujemy za zainteresowanie rozszerzeniem sieci Airly o kolejne urządzenia. Dzięki zaangażowaniu osób takich jak Ty, zanieczyszczenie powietrza przestaje być tematem tabu, a im więcej wiemy o smogu wokół nas - tym łatwiej jest nam skutecznie mu przeciwdziałać.
Jako Airly ograniczyliśmy możliwość sprzedaży pojedynczych urządzeń osobom prywatnym. Skupiamy się głównie na współpracy z lokalnymi samorządami oraz firmami, które są w stanie budować gęstą sieć sensorów. Jedynie w ten sposób jesteśmy w stanie dostarczać użytkownikom naszej mapy oraz aplikacji mobilnej, możliwie szeroki obraz tego, czym oddychamy oraz proponować skuteczne działania w kierunku poprawy jakości powietrza i w efekcie - poprawy jakości ich zdrowia i życia.
Aby umieścić sensory jakości powietrza w Twojej okolicy możesz:
- Zwrócić się do lokalnego samorządu z prośbą o zakup sensorów Airly ( pierwsze kroki skieruj do Wydziału Ochrony Środowiska lub Ekodoradcy)
- Zgłosić projekt budowy sieci sensorów w ramach budżetu obywatelskiego
- Zainteresować tematem firmy/przedsiębiorstwa z Twojego regionu, dla których wpływ podejmowanych działań na lokalną społeczność ma ogromne znaczenie
- Zainteresować tematem sąsiadów i zgłosić wniosek do właściciela/zarządcy budynku/osiedla w którym mieszkasz.
Jeśli masz wątpliwości, w jaki sposób do tego podejść i od czego zacząć - napisz do nas.
Twój wkład w działania na rzecz walki z zanieczyszczeniami powietrza naprawdę ma znaczenie! Monitoruj jakość powietrza na bieżąco dzięki mapie map.airly.org oraz naszej aplikacji mobilnej, którą możesz pobrać pod tym linkiem.
Ze świeżymi pozdrowieniami,
Wsparcie Klienta Airly
User avatar
myxhir
Posts: 414
Joined: Thu Jan 07, 2021 12:16 pm
Location: Skórzewo, Poznań

Post

kris.gie wrote: Wed Oct 18, 2023 12:29 pm Chciałem zrobić sobie integrację z Airly poprzez supla-device. Okazało się, że w mojej okolicy nie ma ani jednej stacji Airly, więc napisałem do nich maila. Oto odpowiedź:
Dzień dobry,
Bardzo dziękujemy za zainteresowanie rozszerzeniem sieci Airly o kolejne urządzenia. Dzięki zaangażowaniu osób takich jak Ty, zanieczyszczenie powietrza przestaje być tematem tabu, a im więcej wiemy o smogu wokół nas - tym łatwiej jest nam skutecznie mu przeciwdziałać.
Jako Airly ograniczyliśmy możliwość sprzedaży pojedynczych urządzeń osobom prywatnym. Skupiamy się głównie na współpracy z lokalnymi samorządami oraz firmami, które są w stanie budować gęstą sieć sensorów. Jedynie w ten sposób jesteśmy w stanie dostarczać użytkownikom naszej mapy oraz aplikacji mobilnej, możliwie szeroki obraz tego, czym oddychamy oraz proponować skuteczne działania w kierunku poprawy jakości powietrza i w efekcie - poprawy jakości ich zdrowia i życia.
Aby umieścić sensory jakości powietrza w Twojej okolicy możesz:
- Zwrócić się do lokalnego samorządu z prośbą o zakup sensorów Airly ( pierwsze kroki skieruj do Wydziału Ochrony Środowiska lub Ekodoradcy)
- Zgłosić projekt budowy sieci sensorów w ramach budżetu obywatelskiego
- Zainteresować tematem firmy/przedsiębiorstwa z Twojego regionu, dla których wpływ podejmowanych działań na lokalną społeczność ma ogromne znaczenie
- Zainteresować tematem sąsiadów i zgłosić wniosek do właściciela/zarządcy budynku/osiedla w którym mieszkasz.
Jeśli masz wątpliwości, w jaki sposób do tego podejść i od czego zacząć - napisz do nas.
Twój wkład w działania na rzecz walki z zanieczyszczeniami powietrza naprawdę ma znaczenie! Monitoruj jakość powietrza na bieżąco dzięki mapie map.airly.org oraz naszej aplikacji mobilnej, którą możesz pobrać pod tym linkiem.
Ze świeżymi pozdrowieniami,
Wsparcie Klienta Airly
trochę nie w temacie ale ja mam np zrobione to na tym przykładzie
https://github.com/fracz/supla-filesensors

mianowicie korzystam z mapy Syngeosa
https://panel.syngeos.pl/sensor/pm10?device=952

znajdujesz obok siebie w linku wyżej masz ID stacji na końcu
potem w cronie mam 4 linijki

#Odczyt Danych z Stacji
*/4 * * * * (SYNGEOS_DATA=$(curl -s 'https://api.syngeos.pl/api/public/data/device/1042') && echo $SYNGEOS_DATA | jq '.sensors[3] | select(.name=="pm2_5") | .data[0].threshold_level') > /home/pi/Weather/syngeos-air-pm25.txt
*/4 * * * * (SYNGEOS_DATA=$(curl -s 'https://api.syngeos.pl/api/public/data/device/1042') && echo $SYNGEOS_DATA | jq '.sensors[4] | select(.name=="pm10") | .data[0].threshold_level') > /home/pi/Weather/syngeos-air-pm10.txt
*/4 * * * * (SYNGEOS_DATA=$(curl -s 'https://api.syngeos.pl/api/public/data/device/1042') && echo $SYNGEOS_DATA | jq '.sensors[0] | select(.name=="temperature") | .data[0].value' && echo $SYNGEOS_DATA | jq '.sensors[1] | select(.name=="humidity") | .data[0].value') > /home/pi/Weather/syngeos-temp-humidity.txt
*/4 * * * * (SYNGEOS_DATA=$(curl -s 'https://api.syngeos.pl/api/public/data/device/1042') && echo $SYNGEOS_DATA | jq '.sensors[2] | select(.name=="air_pressure") | .data[0].value') > /home/pi/Weather/syngeos-pressure.txt

moze masz u siebie wiecej stacji syngeosa ;)
kris.gie
Posts: 403
Joined: Thu Apr 28, 2016 4:24 pm
Location: Katowice

Post

Dzięki, są aż dwie Syngeosa, jednak do każdej kilka kilometrów. Trochę słabo.

Return to “Projekty użytkowników”