Jeśli chcesz posiadać informacje o jakości powietrza w Twojej okolicy, ale nie masz jeszcze odpowiednich czujników lub chcesz porównywać dane z własnych czujników z tymi dostępnymi w Internecie, to ten tutorial może Ci pomóc.
Dane o jakości powietrza będą odczytywane z popularnego w Polsce serwisu Airly.
Odczytywane będą:
- Index jakości powietrza: CAQI
- Poziom zanieczyszczenia powietrza
- Opis poziomu zanieczyszczenia powietrza
- Poziom pyłków zawieszonych PM1, PM2.5, PM10
- Poziom zanieczyszczenia w skali opracowanej przez Międzynarodową Organizację Zdrowia (WHO)
- Temperaturę, Ciśnienie, Wilgotność
W Airly mamy 3 możliwości odczytów danych
- odczyt z najbliższego czujnika znajdującego się w pobliżu naszej lokalizacji
- odczyt uśredniony z kilku czujników w okolicy na podstawie naszej odległości
- odczyt danych z konkretnego czujnika
W tym opisie przedstawię jak odczytać dane z konkretnego czujnika.
Co będziemy robić?
- Zakładamy konto w serwisie Airly, aby otrzymać unikalny klucz, który umożliwia odczyt danych
- Określamy naszą lokalizację: szerokość i długość geograficzną
- Wyszukujemy najbliższy dla naszej lokalizacji czujnik Airly
- Instalujemy i konfigurujemy w openHab odpowiednie dodatki
- Dodajemy elementy (Items) w openHab
- Dodajemy plik z transformacjami
- Konfigurujemy SiteMap’ę
Na koniec otrzymamy takie coś:
No to zaczynamy
Zakładamy konto w serwisie Airly, aby otrzymać unikalny klucz, który umożliwia odczyt danych
- Wchodzimy na stronę Airly i rejestrujemy własne konto
- Po zarejestrowaniu konta oraz zalogowaniu się do serwisu klucz API jest już dla nas dostępny. Znajduje się on po prawej stronie w żółtej ramce. Klucz pokaże się, gdy klikniemy ten wyświetlony tekst
- Klucz będzie wykorzystywany w dalszej części. Będę go nazywał AIRLY_API_KEY
Określamy naszą lokalizację: szerokość i długość geograficzna
- Korzystamy np. z serwisu https://www.wspolrzedne-gps.pl/
- Wprowadzamy adres w formacie: ulica nr domu, kod pocztowy, miejscowość, kraj
- Po wciśnięciu przycisku Uzyskaj współrzędne GPS adres zostanie odszukany, a współrzędne geograficzne zostaną pokazane na mapie. Możemy przesunąć punkt na mapie, aby jeszcze doprecyzować nasz adres, jeśli będzie taka potrzeba
- Zapisujemy współrzędne do wykorzystania w kolejnych krokach
- LAT – jako szerokość geograficzna,
- LNG – długość geograficzna
Wyszukujemy najbliższy dla naszej lokalizacji czujnik Airly
- Mając już AIRLY_API_KEY, LAT, LNG jesteśmy w stanie wyszukać najbliższy czujnik Airly
- Konstruujemy adres URL, który wkleimy do przeglądarki
Format URL jest następujący:
https://airapi.airly.eu/v2/installations/nearest?lat=LAT&lng=LNG&maxDistanceKM=10&maxResults=3&apikey=AIRLY_API_KEY
- W LAT, LNG, AIRLY_API_KEY wpisujemy odpowiednio nasze uzyskane wczesniej szerokość / długość geograficzną oraz klucz Airly
- Czerwone możemy w zależności od potrzeb zmodyfikować
- DistanceKM – maksymalna odległość czujników od naszej lokalizacji w kilometrach – tutaj 10
- maxResult – ile czujników ma odszukać w ramach naszej lokalizacji i odległości – tutaj 3 czujniki
- Po spreparowaniu adresu URL wklejamy go do przeglądarki
- Powinniśmy uzyskać listę wszystkich dostępnych czujników w ramach naszej lokalizacji oraz wprowadzonej odległości
- W niebieskiej ramce opisany jest każdy z czujników. To co musimy zrobić to wybrać jeden z nich patrząc po adresach.
- Po wybraniu jednego z nich zapisujemy jego id – dalej bedę używał SENSOR_ID
Instalujemy i konfigurujemy w openHab odpowiednie dodatki
- W openHab instalujemy Binding: HTTP Binding i Transformacje: JSONPath oraz MAP Transformation
- Ja wykorzystuję do tego PaperUI
- Instalacja: HTTP Binding
- Instalacja JSONPath oraz MAP Transformation
- Konfigurujemy teraz HTTP Binding
- Przygotowujemy URL, format
https://airapi.airly.eu/v2/measurements/installation?installationId=SENSOR_ID&apikey=AIRLY_API_KEY
- Żeby sprawdzić, czy zrobiliśmy adres poprawnie, wklejamy go do przeglądarki. Jeśli jest OK powinniśmy otrzymać coś takiego
- Konstruujemy dwa parametry, które wpiszemy do konfiguracji HTTP Binding
airly.url=https://airapi.airly.eu/v2/measurements/installation?installationId=SENSOR_ID&apikey=AIRLY_API_KEY airly.updateInterval=120000
airly.updateInterval określa jak często mają być odczytywane dane z czujnika. Wartość jest w milisekundach czyli 120000 – oznacza 2min. Chesz raz na 5min wpisz: 300000
Z sewisu Airly można
- (za free) odczytać maksymalnie 100 razy dziennie dane z czujników – więc odczyty co 15min będą zupełnie okay.
- odczyty to średnia wartość z ostatniej godziny.
Parametry: airly.url, airly.updateInterval wpisujemy do pliku konfiguracyjnego http.cfg znajdującego się w katalogu
/etc/openhab2/services
lub z wykorzystaniem PaperUI
- wchodzimy w konfigurację HTTP Binding
- uruchamiamy konfigurację w trybie eksperta
- dodajmy parametry konfiguracyjne
- dodajemy 2 parametry airly.url oraz airly.updateInterval i zapisujemy wciskając przycisk Save
Dodajemy elementy (Items) w openHab
- Dodajemy plik airly.items w katalogu /etc/openhab2/items
- W pliku mamy
Group:Number:AVG average_outside_pm Number airly_quality_index "Index [%.0f]" <air_caqi> {http="<[airly:120000:JSONPATH($.current.indexes[?(@.name=='AIRLY_CAQI')].value)]"} String airly_quality_description "Opis [%s]" <air_caqi> {http="<[airly:120000:JSONPATH($.current.indexes[?(@.name=='AIRLY_CAQI')].description)]"} String airly_quality_level "Jakośc powietrza [MAP(airly.map):%s]" <air_caqi> {http="<[airly:120000:JSONPATH($.current.indexes[?(@.name=='AIRLY_CAQI')].level)]"} String airly_quality_level_raw "Jakośc powietrza [%s]" <air_caqi> {http="<[airly:120000:JSONPATH($.current.indexes[?(@.name=='AIRLY_CAQI')].level)]"} Number airly_pm1 "PM1 [%.2f µg/m3]" (average_outside_pm) {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='PM1')].value)]"} Number airly_pm25 "PM2.5 [%.2f µg/m3]" <air_pm25> (average_outside_pm) {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='PM25')].value)]"} Number airly_pm10 "PM10 [%.2f µg/m3]" <air_pm10> (average_outside_pm) {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='PM10')].value)]"} Number airly_pressure "Ciśnienie [%.0f hPa]" <my_pressure> {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='PRESSURE')].value)]"} Number airly_humidity "Wilgotnośc [%.2f %%]" <humidity> {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='HUMIDITY')].value)]"} Number airly_temperature "Temperatura [%.2f °C]" <temperature> {http="<[airly:120000:JSONPATH($.current.values[?(@.name=='TEMPERATURE')].value)]"} Number airly_pm25_who "PM2.5 [%.0f %%]" <air_pm25> {http="<[airly:120000:JSONPATH($.current.standards[?(@.pollutant=='PM25')].percent)]"} Number airly_pm10_who "PM10 [%.0f %%]" <air_pm10> {http="<[airly:120000:JSONPATH($.current.standards[?(@.pollutant=='PM10')].percent)]"} Number chart_airly_avarage_outside_pm "" <my_period> Number chart_airly_pm1 "" <my_period> Number chart_airly_pm25 "" <my_period> Number chart_airly_pm10 "" <my_period>
Dodajemy plik z transformacjami
- w katalogu /etc/opnahb2/transform dodajemy plik o nazwie airly.map z następującą treścią:
VERY_LOW=Doskonała LOW=Dobra MEDIUM=Umiarkowana HIGH=Dostateczna VERY_HIGH=Zła EXTREME=Bardzo zła -=Brak danych
Konfigurujemy SiteMap’ę
- W istniejącym pliku SiteMap dodajemy (lub dodajemy nowy)
Frame label="CAQI" { Text item=airly_quality_index valuecolor=[>=150="#800080",>=125="#990000",>=100="#E40000",>=75="#E48100",>=50="#FFD912",>=25="#B0DD10",>=0="#58B109"] Text item=airly_quality_description valuecolor=[airly_quality_index>=150="#800080",airly_quality_index>=125="#990000",airly_quality_index>=100="#E40000",airly_quality_index>=75="#E48100",airly_quality_index>=50="#FFD912",airly_quality_index>=25="#B0DD10",airly_quality_index>=0="#58B109"] Text item=airly_quality_level valuecolor=[airly_quality_index>=150="#800080",airly_quality_index>=125="#990000",airly_quality_index>=100="#E40000",airly_quality_index>=75="#E48100",airly_quality_index>=50="#FFD912",airly_quality_index>=25="#B0DD10",airly_quality_index>=0="#58B109"] } Frame label="Normy WHO" { Text item=airly_pm25_who Text item=airly_pm10_who } Frame label="Pyłki" { Text item=airly_pm1 valuecolor=[>150="#800080",>110="#990000",>80="#E40000",>50="#E48100",>25="#FFD912",>10="#B0DD10",>=0="#58B109"] { Switch item=chart_airly_pm1 mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"] Chart item=airly_pm1 period=h refresh=60000 visibility=[chart_airly_pm1==0] service="influxdb" Chart item=airly_pm1 period=4h refresh=60000 visibility=[chart_airly_pm1==1] service="influxdb" Chart item=airly_pm1 period=8h refresh=60000 visibility=[chart_airly_pm1==2] service="influxdb" Chart item=airly_pm1 period=D refresh=60000 visibility=[chart_airly_pm1==3] service="influxdb" Chart item=airly_pm1 period=3D refresh=3600000 visibility=[chart_airly_pm1==4] service="influxdb" Chart item=airly_pm1 period=W refresh=3600000 visibility=[chart_airly_pm1==5] service="influxdb" Chart item=airly_pm1 period=M refresh=3600000 visibility=[chart_airly_pm1==6] service="influxdb" Chart item=airly_pm1 period=4M refresh=3600000 visibility=[chart_airly_pm1==7] service="influxdb" Chart item=airly_pm1 period=Y refresh=3600000 visibility=[chart_airly_pm1==8] service="influxdb" } Text item=airly_pm25 valuecolor=[>200="#800080",>150="#990000",>110="#E40000",>55="#E48100",>30="#FFD912",>15="#B0DD10",>=0="#58B109"] { Switch item=chart_airly_pm25 mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"] Chart item=airly_pm25 period=h refresh=60000 visibility=[chart_airly_pm25==0] service="influxdb" Chart item=airly_pm25 period=4h refresh=60000 visibility=[chart_airly_pm25==1] service="influxdb" Chart item=airly_pm25 period=8h refresh=60000 visibility=[chart_airly_pm25==2] service="influxdb" Chart item=airly_pm25 period=D refresh=60000 visibility=[chart_airly_pm25==3] service="influxdb" Chart item=airly_pm25 period=3D refresh=3600000 visibility=[chart_airly_pm25==4] service="influxdb" Chart item=airly_pm25 period=W refresh=3600000 visibility=[chart_airly_pm25==5] service="influxdb" Chart item=airly_pm25 period=M refresh=3600000 visibility=[chart_airly_pm25==6] service="influxdb" Chart item=airly_pm25 period=4M refresh=3600000 visibility=[chart_airly_pm25==7] service="influxdb" Chart item=airly_pm25 period=Y refresh=3600000 visibility=[chart_airly_pm25==8] service="influxdb" } Text item=airly_pm10 valuecolor=[>350="#800080",>280="#990000",>180="#E40000",>90="#E48100",>50="#FFD912",>25="#B0DD10",>=0="#58B109"] { Switch item=chart_airly_pm10 mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"] Chart item=airly_pm10 period=h refresh=60000 visibility=[chart_airly_pm10==0] service="influxdb" Chart item=airly_pm10 period=4h refresh=60000 visibility=[chart_airly_pm10==1] service="influxdb" Chart item=airly_pm10 period=8h refresh=60000 visibility=[chart_airly_pm10==2] service="influxdb" Chart item=airly_pm10 period=D refresh=60000 visibility=[chart_airly_pm10==3] service="influxdb" Chart item=airly_pm10 period=3D refresh=3600000 visibility=[chart_airly_pm10==4] service="influxdb" Chart item=airly_pm10 period=W refresh=3600000 visibility=[chart_airly_pm10==5] service="influxdb" Chart item=airly_pm10 period=M refresh=3600000 visibility=[chart_airly_pm10==6] service="influxdb" Chart item=airly_pm10 period=4M refresh=3600000 visibility=[chart_airly_pm10==7] service="influxdb" Chart item=airly_pm10 period=Y refresh=3600000 visibility=[chart_airly_pm10==8] service="influxdb" } Switch item=chart_airly_avarage_outside_pm mappings=[0="1H",1="4H",2="8H",3="1D",4="3D",5="1T",6="1M",7="4M",8="1R"] Chart item=average_outside_pm period=h refresh=60000 visibility=[chart_airly_avarage_outside_pm==0] service="influxdb" Chart item=average_outside_pm period=4h refresh=60000 visibility=[chart_airly_avarage_outside_pm==1] service="influxdb" Chart item=average_outside_pm period=8h refresh=60000 visibility=[chart_airly_avarage_outside_pm==2] service="influxdb" Chart item=average_outside_pm period=D refresh=60000 visibility=[chart_airly_avarage_outside_pm==3] service="influxdb" Chart item=average_outside_pm period=3D refresh=3600000 visibility=[chart_airly_avarage_outside_pm==4] service="influxdb" Chart item=average_outside_pm period=W refresh=3600000 visibility=[chart_airly_avarage_outside_pm==5] service="influxdb" Chart item=average_outside_pm period=M refresh=3600000 visibility=[chart_airly_avarage_outside_pm==6] service="influxdb" Chart item=average_outside_pm period=4M refresh=3600000 visibility=[chart_airly_avarage_outside_pm==7] service="influxdb" Chart item=average_outside_pm period=Y refresh=3600000 visibility=[chart_airly_avarage_outside_pm==8] service="influxdb" } Frame label="Warunki atmosferyczne" { Text item=airly_pressure Text item=airly_humidity valuecolor=[>80="navy",>60="blue",>40="green",>20="olive",<=20="red"] Text item=airly_temperature valuecolor=[>35="red",>31="maroon",>27="orange",>20="green",>12="teal",>7="olive",>0="navy",<=0="blue"] }
I to powinno być już wszystko.
Jeśli coś będzie niejasne do dajcie znać – dopiszę, poprawię.
Tutaj do ściągnięcia są pliki openHab – dla leniwych 😉
Uwaga: w instrukcji nie opisuję, jak zapisywać dane do bazy danych w OH2 na potrzeby rysowania wykresów. Jest wiele różnych mechanizmów. Zapraszam na Forum Smart’ny Dom jeśli nie będziesz wiedzieć jak.
Zainspirowałeś mnie @adrian , musze to ogarnąć w Domoticzu 🙂
Wyświetlam dane w OH z Airly już od zeszłego roku. Trochę w inny sposób, bo przez skrypty PHP. Teraz mając swój czujnik pyłków porównuję dane z Airly(450m do czujnika) i bardzo ładnie się to pokrywa. W sumie dlaczego miało by to się nie pokrywać, skoro w Airly używają tak samo chińskich sensorów jak ja. Nie patrzę na te cyferki ze strachem w oczach czy telefonem w ręce. Daje to ogólny zarys tego czym oddychamy i czy opłaca się w danym momencie wietrzyć dom, żeby potem wszystko nie śmierdziało.
W aplikacji działa ok, a jak to pokazać w PaperUI?
@DAM04Na kompie pokazuje się to w BasicUI. @allJak przetłumaczyć resztę komunikatów pobieranych z Airly np. Well… It’s been better ?Dodanie ich tłumaczenia do airly.map nie załatwia sprawy 🙁
No mi się pokazuje tylko na apce w telefonie, gdzie mogę wybrać Sitemaps
http://adres-ip:8080/basicui/app?sitemap=nazwaSiteMap
a jak to pokazać w PaperUI?
PaperUI pokazuje Things (rzeczy) – ten opis – jak podłączyć Airly do openHab nie wykorzystuje Things, więc w PaperUI nie zobaczysz. Zobaczysz w każdym wykorzystującym siteMap ClassicUI, BasicUI itp
Świetny tutorial, prawie mam, ale brakuje mi ikon w załaczniku tak u mnie wygląda, proszę nakierować mnie co mam zrobić 🙂
Screenshot_20190226-211433_openHAB.jpg
Jak wrócę do Polszy to udostępnienie swoje ikonki do ściągnięcia i wgrania do OH2
@lacky
https://www.smartnydom.pl/download/paczka-ikon-do-openhab/
Dziękuję 🙂 Mam tak samo Jestem jak już w innym temacie pisałem bardzo początkujący. Muszę teraz popracować nad wykresami.
@adriandziękuję za ten wątek.a dałbyś radę zrobić coś podobnego i zintegrować openhab z serwisem https://burze.dzis.net/ ? tam też jest API dla podobnych celów.pozdrowienia
Od razu daję znać, że nie dam radę. Mam trochę priorytetów w AFE Firmware i tutaj się skupiami nockami.
@adrian – ok. proszę o parę informacji:
mam krzaczki zamiast polskich znaków – gdzie to ustawić?gdzie wgrać ikonki?gdzie OH2 przechowuje natywne konfiguracje, tzn stworzone poprzez Paper UI?hey openHab ma bardzo dobrą wg mnie dokumentacja.
Ja całą wiedzę zdobywam z tego miejsca i nic więcej nie potrzebuje
Natywna konfiguracja: https://www.openhab.org/docs/administration/jsondb.html
@adriandzięki. jasne – czytam i się uczę :)nie mam wykresów, no i te przyciski godzinowe wyglądają jak wyglądają – pomożesz co mam ustawić? airly_openhab.png
a zbierasz dane z tego czujnika do bazy danych?
Z przyciskami będzie gorzej
@adrian dziękuję. prawie wszystko gra – mam wykresy. dzięki Twojemu przykładowi z monitoringiem zanieczyszczenia powietrza ogarnąłem jakoś podstawy OpenHaba i wiele się nauczyłem.pytanie mam jedno na ten moment – czy Ty na wykresach masz aktualną godzinę? jak mam 2 godziny wstecz mimo, że ustawiłem w PaperUI właściwą strefę czasową, sam serwer też wskazuje aktualną godzinę… co mam zrobić?
Mam aktualną godzinę – nie miałem takeigo problemu. Sprawdziłbym właśnie czasy w linuxie, strefy czasowe itp. może ktoś miał ten problem
Nie, to nie to: serwer ma prawidłowy czas i strefę, PaperUI też a OpenHab wyświetla prawidłowy czas. Wygląda na to, że Chart wyświetla zawsze czas w strefie UTC; to musi być jakiś bug w implementacji OH na Qnap’a. Czy moduł Chart ma jakiś natywny plik czy skrypt gdzie można pogrzebać?
zobacz to – nie ten problem ale podobny
https://community.openhab.org/t/solved-timezone-now-always-refers-to-utc/3721/5
@adrianDzięki – działa!
openhab_chart_ok.png
@adrianmam pytanie:jak przeprowadzić drobną operację arytmetyczną na wartości otrzymanej z Number?dokładnie chodzi mi, iż ciśnienie otrzymane z airly to ciśnienie względem morza. w mojej miejscowości jest około 28 hpa niższe i chciałbym to gdzieś przeliczyć. dzięki z góry 🙂
Jeśli ktoś chciałby żeby opisy były w języku polskim to na końcu airly.url wystarczy dodać: {Accept-Language=pl}.Czyli coś takiego: airly.url= https://airapi.airly.eu/v2/measurements/installation?installationId=SENSOR_ID&apikey=AIRLY_API_KEY{Accept-Language=pl}Nie trzeba wyszukiwać ID sensora w taki pokrętny sposób. Wystarczy na mapie na stronie Airly kliknąć w wybrany sensor, a ID pojawi się w pasku adresu na samym końcu, to ta liczba bezpośrednio po literce 'i’.Dodatkowo zabrakło w tym przykładzie takich czynników jak gazy NO2, O3, SO2 i CO.
hey, dzięki za wyszukiwanie ID sensora z mapy.
Przykład jest z 2018 i czytał wszystko co wtedy JSON zwracał. Analogicznie można dodać brakujące wartości i wszystkie nowe, które zostaną dodane w przyszłości
pzdr. a
Cześć. Na początku chciałbym dodać, że rozpoczynam dopiero swoją przygodę z openHAB. Chciałbym wykonać opisany tu świetnie projekt, lecz niestety na samym początku napotkałem na problem. Mianowicie w „Bindings" nie dostrzegam „HTTP Binding". Mam świadomość, że to trywialnie pytanie lecz proszę o pomoc. Z góry dzięki.
P.S. Chciałbym też zapytać czy jest szansa liczyć na bardziej prywatny kontakt do autora projektu i pomoc, ponieważ na podstawie openHAB’a chciałbym wykonać pracę dyplomową. Oczywiście jeśli będzie taka potrzeba jestem w stanie wynagrodzić pomoc.
Pozdrawiam.
Oczywiście podobnie sprawa się ma z JSONPath oraz MAP Transformation.
włącz w OH -> PaperUI -> Configuration -> System -> Include legacy 1.x …
Robiłem, nic nie pomaga.
wyslij jakis screenshot co tam masz na ekranie
Ogólnie to nie wiem jakie screeny masz na myśli. Include legacy 1.x … jest w pozycji allow, a HTTP Bindings nadal nie widać.
@adrian
Zrzut-ekranu-2019-11-1-o-22.31.15.png
Ogólnie to nie wiem jakie screeny masz na myśli. Include legacy 1.x … jest w pozycji allow, a HTTP Bindings nadal nie widać.
Zrzut-ekranu-2019-11-1-o-22.31.44.png
co to za wersja OH?
2.4.0
wersja Simple, Standard, Expert?
https://www.openhab.org/docs/tutorial/1sttimesetup.html
w Addons powinieneś widzieć takie tab’y
ja używam expert
@adrianNiestety nie mam pojęcia jak to sprawdzić. Ale wątpię bym przy instalacji wybierał wersje „Expert", więc zostaje Simple i Standard.
Zrzut-ekranu-2019-11-1-o-23.15.33.png
wedytuj może /etc/openhab2/addons.cfg (o ile pamiętam )
package = expert
usun # jesli byl przez package
zrób restart OH po tym
Wielkie dzięki. Podejrzewam, że będę pytałem dalej, ale to już może nie dzisiaj. Jak ogarnę opisane powyżej pobieranie danych pewnie pozwolę sobie założyć jakiś temat dotyczący całego projektu. Pozdrawiam.
Ok, więc teraz mam następującą sytuację: (załącznik)Pytanie 1. Rozumiem, że w tym miejscu w polu „numbers" lub też „string" powinienem otrzymywać poprawny pomiar/opis zgodny z linkiem dot. id sensora i api key? (mój link: https://airapi.airly.eu/v2/measurements/installation?installationId=7561&apikey=BlQMWRf18j1Y53ArNb2wN7RzsRYXXW3j ) Jeśli dobrze rozumiem to oznacza, że coś nie gra. Pytanie co?Pytanie 2. Skąd np. przy itemie temperatura czy ciśnienie pojawiła się stosowana grafika?Pytanie 3. Jeśli dobrze rozumuję itemy np. airly_pm10_who mają porównywać i pokazywać procentowy pomiar z sensora do norm who. Moje pytanie gdzie są zadeklarowane te normy who, do których się to ma odwoływać?Z góry dziękuję za odpowiedź na moje męczące pytania 🙂
Zrzut-ekranu-2019-11-2-o-00.47.42.png
Ad1. Raczej powinny się pokazać – nie wiem czy dobrze rozumie, co, gdzie i jak
Ad2, Trzeba je sobie zrobić i wgrać do /etc/openhab2/icon/classic
Ad3 WHO – World Health Organisation – Światowa Organizacja Zdrowia – poszukaj gdzieś w net
@adrian1. Mogę zatem prosić o jakieś rady gdzie szukać błędu sprawiającego, iż te wartości jak na załączonym screenie się nie wyświetlają?2. Ja się domyślam, że ikony trzeba sobie pobrać i wgrać. Sęk w tym, że tego nie robiłem więc nie za bardzo rozumiem czemu dla temperatury występuje właśnie ikona.3. Wiem, co to są normy WHO. Nie rozumiem trochę tego, jak są one porównywane z wartościami z airly, tzn. skąd program wie, że np. norma WHO dla PM2.5 to załóżmy 10?
@maniejszyn
Ad1. błędy są w /var/log/opebhab2/*.log
Ad2. tak trzeba sobie zrobić, samemu skądś pobrać. Załączyłem do poprzedniego posta moje ikony. OH2 ma trochę ikon standardowych np. dlatego widzisz temperaturę. Załączyłem w poprzednim poście link do ikon standardowych też + instrukcję co i jak
Ad3. Nie wiem co masz na myśli przez „program" – Airly?. WHO jako jedna z wielu ustala normy i wg tych norm się przelicza. NIe pamiętam czy to godzinowe średnie, dobowe itd. Pierwszy lepszy jaki wygooglałemw w 10sek . Pewnie znajdziesz na stronie Airly też więcej.
Proszę załóż inny temat na podstawowe pyt. dot. OH, żeby nie zaśmiecać tego – dzięki
wychodzę – nie będzie mnie do momentu aż się ściemni, pzdr
dzięki za instrukcję po chwili walki się udało jednak airly zmieniło chyba regulamin :/
Użytkownik zobowiązuje się do nieprzekraczania maksymalnej liczby zapytań serwera Airly API wynoszącej 100 zapytań/dzień i. Pozostała do wykorzystania liczba zapytań widoczna jest dla Użytkownika w nagłówku (x-ratelimit-remaining-minute lub x-ratelimit-remaining-day) odpowiedzi serwera. 8. W razie przekroczenia liczby zapytań Token Użytkownika zostanie tymczasowo zawieszony do momentu wyzerowania się licznika Airly API (odświeżanego raz na dobę, zawsze o tej samej porze), Użytkownik zostanie zaś poinformowany kodem odpowiedzi Serwera o łamaniu zasad korzystania z Airly API.
więc odczyt max 100 razy na dzień co daje max co 15 minut
dzięki @goofas – dawno nie zaglądałem do tego serwisu. Poprawiłem już opis.
3maj się
to ja dziękuję za opis 😉 wyszło w praniu po tym jak odczyty przestały się aktualizować wszedłem w link i doczytałem dlaczego :d
Ponizej przyklad bindowania w Airly za pomoca HTTP bind w OpenHab3
cat airly.things
Bridge http:url:airly „HTTP Airly” [ baseURL=”https://airapi.airly.eu/v2/measurements/installation?installationId=1234&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”, refresh=”30″, timeout=”3000″ ]
{
Channels:
Type number : SS_AR_Airly_PM1 „SS_AR_Airly_PM1″ [ stateTransformation=”JSONPATH:$.current.values[?(@.name==’PM1′)].value” ]
Type number : SS_AR_Airly_PM10 „SS_AR_Airly_PM10″ [ stateTransformation=”JSONPATH:$.current.values[?(@.name==’PM10′)].value” ]
Type number : SS_AR_Airly_PM25 „SS_AR_Airly_PM25″ [ stateTransformation=”JSONPATH:$.current.values[?(@.name==’PM25′)].value” ]
Type string : SS_AR_Airly_Quality_Description „SS_AR_Airly_Quality_Description” [ stateTransformation=”JSONPATH:$.current.indexes[?(@.name==’AIRLY_CAQI’)].description” ]
Type string : SS_AR_Airly_Quality_Level „SS_AR_Airly_Quality_Level” [ stateTransformation=”JSONPATH:$.current.indexes[?(@.name==’AIRLY_CAQI’)].level” ]
}
cat airly.items
Number SS_AR_Airly_PM1 „SS_AR_Airly_PM1″ { channel=”http:url:airly:SS_AR_Airly_PM1” }
Number SS_AR_Airly_PM10 „SS_AR_Airly_PM10″ { channel=”http:url:airly:SS_AR_Airly_PM10” }
Number SS_AR_Airly_PM25 „SS_AR_Airly_PM25″ { channel=”http:url:airly:SS_AR_Airly_PM25” }
String SS_AR_Airly_Quality_Description „SS_AR_Airly_Quality_Description” { channel=”http:url:airly:SS_AR_Airly_Quality_Description” }
String SS_AR_Airly_Quality_Level „SS_AR_Airly_Quality_Level” { channel=”http:url:airly:SS_AR_Airly_Quality_Level” }
Pozdr, Slawek