Aqi.eco - czyli Air Quality Info jako serwis

#37

@Tomek Cześć;
poniżej przykładowe zestawienie bez specjalnego szukania. Wydaje mi się, że “kalkulator” średnich działa poprawnie, problemem mogą być dane wejściowe czyli chwilówki. Ale to w ocenie zostawiam już Tobie (może się czepiam i jestem przewrażliwiony - więc wybacz)

standalone 1h:
4.54.00 - 31.74 oraz 36.68
23.48.00 - 23.87 oraz 27.8

aqi 1h:
4.54.00 - 33 oraz 36.95
23.48.00 - 24.39 oraz 28.3

na zestawieniu 24 różnice są jeszcze mniejsze a może to wynikać z faktu, że dane chwilowe - pomimo wspólnego źródła są różne

standalone chwilowe:
7.12.00 - 21.1 oraz 28.02
2.27.00 - 28.02 oraz 35.6

aqi chwilowe:
7.12.00 - 21.77 oraz 29.45
2.27.00 - 29.32 oraz 40.67

z temperaturą, wilgotnością i ciśnieniem też pojawiają się różnice ale również nie wielkie.
Można to raczej potraktować jako ciekawostkę ale na chłopski rozum biorąc różnić w wartościach chwilowych nie powinno być.

id:4691914

mam jeszcze jedno pytanie jako opcja rozszerzenia funkcjonalności aqi.eco:
czy jesteś w stanie dorobić coś w rodzaju pogodynki? aby np na podstawie temp, wilgotności i/lub ciśnienia określić ryzyko opadu czy to graficznie czy jakoś na wykresie lub wystąpienie mgły? Myślę, że to by mogło być całkiem przydatnym zwłaszcza przy dalszym rozwoju projektu, który z czasem można doposażyć w miernik UV czy co lub nox?

#38

@WojtekO, skupmy się na początek na tych różnicach chwilowych. W CSV mamy następujące dane:

Czas UTC									PM10	PM2.5
2019/06/12 00:22:05							34.10	28.05
2019/06/12 00:24:39							40.67	29.32
2019/06/12 00:27:16							35.60	28.02
2019/06/12 00:29:50							31.25	28.02
2019/06/12 00:32:25							30.65	27.50

Czas w CSV to UTC, stąd przesunięcie -2 godziny. Na podstawie tych danych widać, że w wersji standalone o godzinie 00:27:00 zapisał się rekord z 00:27:16 w pliku CSV, natomiast w wersji SaaS rekord z 00:24:39.

Skąd ta różnica? Na potrzeby wykresu muszę niejako “agregować” te dane, dopasowując je do najbliższego, 3-minutowego interwału. Po wprowadzeniu SaaS rzeczywiście dokonałem pewnej zmiany - dane “alignowane” są nie do poprzedniego, lecz do następnego interwału.

Z tej zmiany mogą wynikać drobne różnice w wyliczanych średnich i 3-minutowe przesunięcie na wykresie danych chwilowych.

1 Like
#39

@Tomek dziękuję. Właśnie o takie wyjaśnienie mi chodziło. Dziękuję.

#40

Czy jak czujnik jest w stanie Brak danych to mogłoby kółko obszaru znikać z mapy? Niech marker będzie tam gdzie był, tylko niech nie kreśli wielkiego czarnego koła bo ludzie zawału dostaną :slight_smile:

#41

@irukard - zrobione. W przyszłym tygodniu zajmę się też konfiguracją promienia tych kółek.

1 Like
#42

Te kółka to dobrze żeby miały gradient kołowy z przezroczystością. Im bliżej obwodu tym bardziej przezroczyste. Ale to przyjdzie z czasem. Jak znajdę chwilę w weekend to wypróbuję to i owo w CSS.

#43

Samo API v3 Google’a nie wspiera przezroczystości podstawowych kształtów, z tego co sprawdziłem. Zapewne trzeba użyć canvasu z HTML5.

#44

Czy na stronie głównej projektu pojawi się zakładka mapa a na niej wszystkie czujniki i jakieś ogólne statystyki w stylu: ile jest czujników czy coś takiego?

#45

To pytanie już się pojawiało. Być może gdy zacznie się sezon smogowy i zostanie zarejestrowanych więcej czujników, rozważę taką ogólną mapkę. W tej chwili mamy 10 aktywnych czujników, więc mapa wyglądałaby na nieco pustą.

#46

Do końca wakacji przeniose swoje 15szt do Ciebie
Czas pomyśleć co zrobić, żeby serwis spopularyzować

1 Like
#47

czy uda Ci się udostępnić API do serwisu ? wysyłam teraz dane do aqi.eco. Chciałbym móc je odebrać np. jsonem aby wyświetlić sobie te wartości w Home Assistant ?

#48

Dane nt. ostatniego odczytu są dostępne pod adresem:

https://DOMENA.aqi.eco/CZUJNIK/data.json

Przykładowe dane z https://smolna.aqi.eco/13b/data.json:

{
last_update: 1564081429,
pm25: "4.03",
pm10: "8.00",
temperature: "30.17",
pressure: "1009.95",
humidity: "33.60",
heater_temperature: "37.93",
heater_humidity: "24.46"
}
#49

super, a mógłbyś dodać do tego indeks jakości powietrza ? bo rodzinie nic nie mówią liczby :slight_smile:

#50

Rozbudowałem API, aby oprócz danych chwilowych zwracało też średnie z ostatniej godziny i 24 godzin. Dla tych dwóch średnich wyliczany jest teraz indeks, tak jak na głównej stronie. Język indeksu można kontrolować używając nagłówka HTTP Accept-Language:

curl -H 'Accept-Language: pl' https://smolna.aqi.eco/13b/data.json
{
    "last_data": {
        "last_update": 1564176497,
        "pm25": 4.17,
        "pm10": 8.9,
        "temperature": 24.09,
        "pressure": 1006.3,
        "humidity": 43.29,
        "heater_temperature": 32.6,
        "heater_humidity": 30.35
    },
    "average_1h": {
        "pm25": 4.58,
        "pm10": 8.91,
        "temperature": 24.51,
        "pressure": 1006.36,
        "humidity": 41.51,
        "heater_temperature": 32.83,
        "heater_humidity": 29.23,
        "index": "Bardzo niski"
    },
    "average_24h": {
        "pm25": 2.7,
        "pm10": 5.85,
        "temperature": 26.22,
        "pressure": 1008.45,
        "humidity": 39.82,
        "heater_temperature": 33.91,
        "heater_humidity": 27.95,
        "index": "Bardzo niski"
    }
}
1 Like
#51

Tomku a jakaś możliwość importu wykresu na inną stronę ?przewidujesz taką możliwość ?

#52

Jeśli mam podpięte dht22 i bme280 to czy da sie ustawić aby dane z konkretnego czujnika były na stronie głównej? aktualnie wyswietla mi dane temp cisnienia i wilgotności z bme280 a czy da sie zmienić aby temp wyświetlana była z dht22?

#53

Do tego służy opcja “Mapowania pól JSON” w ustawieniach czujnika. Można tam wybrać nazwę pola które przychodzi w JSONie z czujnika i rodzaj pola w bazie danych.

Przykładowo, wydaje mi się, że wartości z DHT22 nazywają się po prostu:

  • temperature
  • humidity

Natomiast te z BME280 to:

  • BME280_temperature
  • BME280_humidity
  • BME280_pressure

Domyślnie BME280 jest traktowany jako czujnik świeżego powietrza, a DHT22 jako czujnik powietrza ogrzanego przez grzałkę. Aby to zmienić, możemy dodać następujące mapowanie:

  • Pole JSON: temperature - aby odczytać wartość z DHT22
  • Pole bazy danych: również temperature - aby zapisać to jako temperaturę powietrza, a nie temperaturę powietrza w grzałce heater_temperature, jak to jest domyślnie.

Po dodaniu takiego mapowania temperature -> temperature, temperatura z DHT22 powinna wyświetlać się na głównej.

#54

opisy są takie jak mówisz odnośnie dht22 ale coś to nie działa, teraz jak ustawiłem w ten sposób nie ma danych dotyczących tem i wilgotności…2 3

#55

Rzeczywiście, wygląda to na buga. Sprawdzę czym jest spowodowany.

Update:
Błąd został naprawiony. @sq9gol - konfiguracja taka jak na Twoim screenie powinna już działać prawidłowo.

1 Like
#56

Nie działa mi mapa, sprawdzone na 2 przeglądarkach