Aqi.eco - czyli Air Quality Info jako serwis

#1

Po zebraniu pozytywnego feedbacku dotyczącego Air Quality Info, kolejnym krokiem jest próba uruchomienia aplikacji jako usługi. @irukard wspominał taką możliwość w jednym z poprzednich tematów. Chciałbym dziś ogłosić powstanie takie usługi - Panie i Panowie, przedstawiam aqi.eco.

08

Po darmowej rejestracji, użytkownik otrzymuje adres w postaci NAZWA.aqi.eco, gdzie wyświetlona jest dobrze znana strona z informacjami nt. czystości powietrza. Przykładowa strona mojego czujnika to: https://smolna.aqi.eco. Do jednej strony można podłączyć dowolną ilość czujników.

Konfiguracja strony odbywa się przez specjalny panel administracyjny. W tej chwili umożliwia on konfigurację urządzeń, import danych archiwalnych z serwisu madavi oraz utworzenie hierarchii lokacji (co ma sens gdy mamy wiele czujników).

22

Zachęcam do rejestracji i ciekaw jestem Waszych opinii. W tej chwili chciałbym skupić się na stabilności i wydajności - ciekaw jestem jak serwis będzie się zachowywał po dodaniu wielu czujników. Projekt w dalszym ciągu jest rozwijany jako open-source: https://github.com/trekawek/air-quality-info

Dziękuję @irukard, który przekazał wiele cennych uwag - w dużej mierze pomagają one wyznaczać kierunki rozwoju aplikacji.

2 Likes
#2

Mam, używam, polecam! Czekam na możliwość wsparcia finansowego projektu.

#3

https://aqi.eco/support :slight_smile:

#4

O! :smiley:

Dobrym ludziom piniondzów nie żal :smiley:

#5

A jak myślisz - będzie wsparcie dla rozkładów ilościowych pyłu? Czujniki jak PMS5003, PMS7003 i nasz NPMS-5 sortują wedle rozmiaru. Przynajmniej w teorii. Bo robią to na podstawie tego jak silny impuls świetlny zaobserwowały. Więc czy duży rozmiar czy jasny kolor to jedno i to samo. Przydałyby się wykresy pokazujące “skład” pyłu tak aby można było to przeanalizować. Pytanie tylko po co? Co z tym można zrobić? Czy to jeszcze dane naukowe czy wróżenie z fusów? :slight_smile:

#6

Świetna robota! Dzięki! Mój czujnik już zarejestrowany http://www.czysta.aqi.eco

#7

Zarejestrowany, tylko bez www. z przodu :wink:

#8

No tak :sweat_smile:

#9

U mnie od godz. 22:54 jest coś nie tak. Pokazuje prawidłową godzinę ostatniej aktualizacji, dane są prawidłowe ale nie są pokazane na wykresie i cały czas index jest bardzo niski, pomimo że jest nawet ponad 50%. Czasem dane nie są aktualne, pomimo że godzina ostatniej aktualizacji jest prawidłowa. Patrzyłem na madavi.de i tam jest wszystko ok. Czujnik pracuje prawidłowo. W panelu administracyjnym aqi na liście JSONów też są wszystkie dane. Tak jakby nie były wysyłane na wykres.

#10

@mirasBB - testowałem wczoraj nowy sposób generowania wykresu, jak widać błędny. Przywróciłem poprzedni kod i wykres powinien wyglądać już OK. Co do informacji o indeksie (bardzo niski, niski, itd.) to progi można znaleźć na podlinkowanej stronie CAQI.

#11

Teraz jest ok :slight_smile:

#12

Dołożyłem do projektu swoje 2 grosiaki i trzymam za kciuki za jego powodzenie
Moje skromne uwagi:

  1. Dodał bym mapę z czujnikami i możliwość utworzenia własnej indywidualnej listy czujników z kilku domen - przykładowo mój adresik https://mosina.aqi.eco/ ( wkrótce będę tam przenosił ok 20 czujników ) ale chciał bym mieć na podglądzie czujnik od kolegi https://czysta.aqi.eco/ - coś jak dodawanie do listy czujników na kanarku - tylko wersja na PC
  2. adres z www. prowadzi do alertu “potencjalne zagrożenie bezpieczeństwa” - o tym zapewne wiesz
  3. Jaki jest +/- koszt serwera ( roczny )
  4. Przerwy w danych obraz zrobił bym poszatkowanym/paskowanym wypełnieniem, żeby było widać że była przerwa w danych a wykres nie był by totalnie pusty - nie robił bym wypełnienia 100%
1 Like
#13

Możliwość dodania do swojej “farmy” czujników znajomych to genialny pomysł.

1 Like
#14

I do swojej i zdefiniowanie swojej własnej listy z kilku domen, dlatego wg mnie ważna jest mapa, żeby nie było dziwactw - np w jednym małym mieście czujniki będą pod dwiema różnymi domenami a jakaś osoba będzie chciała oglądać tylko wybrane właśnie z tych domen.

#15

Dzięki za sugestie. Spróbuję podsumować i odpowiedzieć w punktach:

Koszty serwera

  • Roczna opłata za domenę aqi.eco, zarejestrowaną w OVH.pl wynosi 316.68 zł.
  • Miesięczna opłata za serwer w DigitalOcean (4 GB RAM, 2vCPU, 80 GB SDD, 4 TB transferu) to $20.

WWW z przodu
aqi.eco używa tak zwanych wildcard DNS (*.aqi.eco) aby jednym certyfikatem obsługiwać wszystkie poddomeny. Niestety, taki rodzaj certyfikatu pozwala na zastępnie gwiazdki jedynie pojedynczym segmentem (np. foo.aqi.eco, ale nie foo.bar.aqi.eco). W związku z tym, próba otwarcia strony z ekstra segmentem z przodu: www. kończy się błędem.

W przypadku http:// wprowadziłem automatyczne przekierowanie na wersję bez www, np.:
http://www.smolna.aqi.eco powinno przekierować na poprawny URL https://smolna.aqi.eco. Jednak w przypadku dostępu przez https:// niewiele jestem w stanie zrobić jeśli ktoś dodaje to www.

Podsumowując, takie adresy działają:

Ten nie zadziała:

Przerwy w danych
Dobry pomysł z tym paskowanym wypełnieniem. Spróbuję tak zrobić, o ile tylko chart.js (biblioteka używana przez nas do renderowania wykresów) to obsłuży.

Zaprzyjaźnione czujniki
Czyli oprócz dodania swojego czujnika, możemy też dodać cudzy, wprowadzając np. jego domenę i nazwę. Powinno być możliwe do zrealizowania.

Mapa
To jest jedna z funkcjonalności o którą prosiło kilka osób. Widziałbym to tak:

  • w ustawieniach czujnika można wpisać/wybrać wysokość i szerokość geograficzną
  • dodajemy nową zakładkę z mapą, gdzie wyświetlą się wszystkie czujniki dodane do menu “lokacji”, które mają wprowadzone dane GPS.
  • “zaprzyjaźnione” czujniki również pojawią się na mapie, o ile mają wprowadzone dane GPS.
1 Like
#16

@Tomek
Czy powstanie usługi aqi.eco oznacza, że serwer ‘standalone’ już nie będzie wspierany?
Czy ostatnie zmiany wprowadzają nowe wymagania php/fpm/nginx?
Otworzyłem issue: https://github.com/trekawek/air-quality-info/issues/18 ale nie wiem czy tam zaglądasz… Jeśli nie, to nie ma sprawy - będę sam kombinował.

#17

Jeszcze dwa pomysły - stacje meteo na jakiejś podstawie ( chyba ciśnienie i wilgotność ) pokazują tendencję zmian pogody, może i u nas warto by było to wprowadzić ?
Inwersja = smog jesienią/zimą - te dane też by były dla nas bardzo cenne do przewidywania ryzyka największego smogu, tylko tutaj dane trzeba by wyciągnąć chyba z jakiegoś serwisu

#18

@romek - tak, wersja standalone nie jest już wspierana. Głównym powodem dla którego powstała wersja SaaS była próba ułatwienia końcowym użytkownikom korzystanie z serwisu. Wiąże się to jednak ze wzrostem złożoności samej aplikacji, brakiem automatycznych i udokumentowanych narzędzi do migracji danych dla osób które zdecydowały się postawić własny “klon” aqi.eco, itd.

Dzięki takiemu podejściu jestem w stanie dość szybko wprowadzać nowe funkcje - jeśli potrzebuję dodać nową kolumnę do bazy danych lub wykorzystać nową bibliotekę, mogę to po prostu zrobić, bez potrzeby martwienia się o użytkowników, którzy uruchomili apkę na własnych serwerach (i mogą np. nie mieć dostępu do danej funkcji).

Dlatego zachęcam wszystkich użytkowników do przejścia na aqi.eco. Kod aplikacji jest (i będzie) w dalszym ciągu dostępny na githubie, ale w tej chwili jest on skierowany głównie do osób ciekawych jak to działa i programistów którzy chcieliby wysłać swoje propozycje poprawek.

#19

Od wczoraj od około 14:00 moje dane nie są przesyłane na stronę. Czy to jakiś ogólny problem? W panelu administracyjnym mam ostatnie dane z 13:51.

#20

@mirasBB - wygląda na to, że używasz beta firmware z Luftdaten. Wczoraj pojawiła się nowa wersja tego firmware’u i czujnik automatycznie się zaktualizował. Niestety nowy firmware zawiera błąd - https nie jest wspierany poprawnie dla “custom API”, którego używa aqi.eco.

Utworzyłem issue w githubie Luftdaten. Miejmy nadzieję, że błąd zostanie naprawiony i nie trafi do oficjalnego wydania: https://github.com/opendata-stuttgart/sensors-software/pull/413

W międzyczasie, dodałem możliwość wysyłania danych aktualizacji po http. Aby przywrócić działanie popsutego czujnika, należy wprowadzić port 80 w jego konfiguracji (zamiast 443, jak do tej pory).

1 Like