Supla Airly Connect - odczyt jakości powietrza

User avatar
Duch__
Posts: 2031
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Witam.

Dzisiaj udostępniam kod źródłowy umożliwiający połączenie serwera Supla z Airly, pobranie aktualnych wyników pomiarów i wyświetlenie ich w aplikacji oraz za pomocą sześciu diod WS2812B.

Zasada działania:

Przy pierwszym uruchomieniu urządzenie łączy się z Suplą, wykonuje rejestrację. Następnie następuje połączenie z serwerem Airly i szukanie najbliższego naszej lokalizacji czujnika. Z tego czujnika pobierane są dane odnośnie fizycznego montażu czujnika (MIASTO, ADRES, NUMER). Dane te zapisywane są w pamięci EEPROM modułu, po czym następuje restart układu. Po ponownym uruchomieniu dane adresowe zapisywane są w CLOUD:
adres.png
Sprawdzanie adresu czujnika odbywa się co 100 odczytów wyników pomiarów.

Po tym następuje cykliczne odpytywanie najbliższego nam czujnika o aktualne warunki pogodowe. Częstotliwość odpytywania ograniczona została do 180 sekund, gdyż API Airly zezwala na 1000 odpytań w ciągu doby. I tak pomiary są dokonywane w rzeczywistości co 5 min. Jeśli z jakiś powodów nasz najbliższy czujnik zniknie (np. awaria), moduł NODEMCU wyszuka nowy czujnik, pobierze jego adres, dokona resetu i aktualizacji nazwy w CLOUD, a następnie będzie kontynuował odpytywanie.

Prezentacja wyników pomiarów:

W aplikacji:
app.jpg
Widocznie na screenie ikony można pobrać z tego wątku: viewtopic.php?p=59351#p59351

Dodatkowo aktualny wynik CAQI prezentowany jest za pomocą 6 szt. diod WS2812b.
Jeśli index jakości powietrza CAQI ma wartość:
do 25 -> 6 diod na zielono (Bardzo dobra jakość powietrza);
od 26 do 49 -> 5 diod na jasnozielono;
od 50 do 75 -> 4 diody na żółto;
od 76 do 85 -> 3 diody na pomarańczowo;
od 86 do 100 -> 2 diody na czerwono;
powyżej 100 -> 1 dioda na fioletowo (Bardzo zła jakość powietrza).

Sposób podłączenia diod WS2812b:
podlaczenie.png
Program wymaga najnowszej dostępnej biblioteki SUPLA.
You do not have the required permissions to view the files attached to this post.
Last edited by Duch__ on Sat Jan 25, 2020 3:20 pm, edited 1 time in total.
User avatar
Duch__
Posts: 2031
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

W załączniku program:
SUPLA AIRLY.zip
Zapraszam do testowania :)
You do not have the required permissions to view the files attached to this post.
User avatar
Robert Błaszczak
Posts: 4458
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra

Post

Rewelacyjny pomysł z wykorzystaniem LED WS2812B.

Gratulacje.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
Duch__
Posts: 2031
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Docelowo układ ma być zamontowany u moich rodziców, którzy korzystają z tego samego czujnika AIRLY co ja i robione to było pod nich - łatwy i czytelny odczyt jakości powietrza. Ja będe korzystał przez apkę :lol:
User avatar
MadOnion78
Posts: 1066
Joined: Sun Nov 24, 2019 3:53 pm
Location: Głubczyce

Post

Chętnie bym potestował ale to poza moimi kompetencjami i umiejętnościami :(
Nie mniej jednak gratuluje pomysłu i jego wdrożenia :)

Dziś akurat byłem w Op. Mogłem podjechać pogratulować 😉
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
byniom
Posts: 676
Joined: Sat Jan 07, 2017 1:17 pm

Post

Przy kompilacji taki błąd mi wyskoczył exit status 1
'DynamicJsonDocument' was not declared in this scope
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

Gratulacje i podziękowania za udostępnienie kodu, spróbuję to zaadoptować do mojego Arduino Mega, co by się układ tak nie nudził i coś robił dodatkowo :)

Pozdrawiam
Andrzej
elmaya
Posts: 1484
Joined: Wed Jun 27, 2018 5:48 pm
Location: El Saucejo - Sevilla

Post

byniom wrote: Sat Jan 25, 2020 4:20 pm Przy kompilacji taki błąd mi wyskoczył exit status 1
'DynamicJsonDocument' was not declared in this scope
Co ci to sugeruje?

Code: Select all

#include <ArduinoJson.h>  //Benonit Blanchot 6.14.0
User avatar
byniom
Posts: 676
Joined: Sat Jan 07, 2017 1:17 pm

Post

Już doinstalowałem :) , dzięki elmaya :) . Jeszcze jedno pytanie , czy tutaj mam cos wpisać ? String apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //https://developer.airly.eu/api
andrew01
Posts: 162
Joined: Fri May 24, 2019 6:49 am

Post

Duch__ wrote: Sat Jan 25, 2020 3:18 pm dokona resetu i aktualizacji nazwy w CLOUD
A gdyby tak w CLOUD dostępny był kanał tekstowy, wyświetlający krótki tekst to by można było uniknąć restartów.

Return to “Projekty użytkowników”