Czy i jak uruchomiliście może Airly w OH3?
----------EDIT----------
Problem rozwiązany - w załączniku przesyłam gotowy konfig pod OH3 (things, items, sitemap) dla dwóch rodzajów czujników (całość jest w jednym konfigu - kopiujesz to co Ci jest potrzebne):
1. Airly - okrągłe punkty na mapie Airly
2. GIOŚ (główny inspektorat ochrony środowiska) - kwadratowe punkty na mapie Airly.
Wystarczy w pliku THINGS wstawić swoje API oraz ID stacji z jakiej chcemy odczyty.
W załączniku są zdjęcia jak to wygląda na telefonie.
@edass też mi nie działało
Zrobiłem przez OH3 UI, a później po plikach konfiguracyjnych, kluczowa była transformacja u mnie
Problem
- Było: JSONPATH($.current.values[?(@.name=='PM25')].value)
- Rozwiążanie: JSONPATH:$.current.values[?(@.name=='PM25')].value
Daje przykład na Thing zdefiniowanym w pliku
Thing http:url:airly "Airly: bridge" [ baseURL="http://192.168.2.146:8080/static/airly/airly-data.json", refresh=60] {
Channels:
Type number:pm25 "PM2.5" [ stateTransformation="JSONPATH:$.current.values[?(@.name=='PM25')].value" ]
Type string:desc "Desc" [ stateTransformation="JSONPATH:$.current.indexes[?(@.name=='AIRLY_CAQI')].description"]
}
Number airly_pm25_who "PM2.5 [%.1f %%]" <air_pm25> {channel="http:url:airly:pm25"}
String airly_quality_description "Opis [%s]" <air_caqi> {channel="http:url:airly:desc"}
Problem
- Było: JSONPATH($.current.values[?(@.name=='PM25')].value)
- Rozwiążanie: JSONPATH:$.current.values[?(@.name=='PM25')].value
Ok - widzę różnice ale nie rozumiem do końca definicji things - gdzie podajesz klucz api ? Adres http:// masz lokalny ? Najpierw pobierasz te dane czy jak?
W starej wersji bindingu adres był taki:
BTW
Nie wiem czy wiecie ale można sobie do OH wrzucić bezpośrednio taki widget bez api:
<!-- Airly Widget Begin -->
<script src="https://airly.org/map/airly.js" type="text/javascript"></script>
<iframe id="airly_1682790756" src="https://airly.org/map/widget.html#w=280&h=380&m=true&i=true&d=false&ah=true&aw=false&l=pl&us=metric&ut=celsius&lat=51.067439&lng=19.448694&id=53" style="width:280px; height:auto;border:none;"></iframe>
<!-- Airly Widget End -->
Tak jak sobie linux'owym cron ściągam dane, a później czytam lokalnie.
zamiast mojego url: http://192.168.2.146:8080/static/airly/airly-data.json
wprowadź swój: https://airapi.airly.eu/v2/measurements/installation?installationId=1234&apikey=aaaaaaaaaaaaaaaaaaaaaaaa
tylko ustaw odpowiedni interwał: 60 sekund to Ci zeżre dzienny limit dość szybko
Dzięki już udało mi się odczytać kilka wskaźników z airly. Jak skończę to podzielę się things i items ( wyciągam wszytko co się da).
Mam jeszcze pytanie - co daje "Twój" sposób pobierania danych z airly?
Kiedyś miałem problem, żeby dostawać odpowiedź z serwera airly w rodzimym języku i rozwiązałem sobie ten problem
- ściągając dane bezpośrednio na serwer OH a później
- serwer OH odczytuje lokalną wersję
Już rozumiem o co Ci chodzi - komunikaty zaciągają się po angielsku ( patrz zdjęcie).
Znalazłem w dokumentacji Airly c coś takiego ale nie mam pojęcia jak to zastosować - nie znam html 🙁 :
Język
Niektóre operacje API zwracają wartości opisowe, np. tekstowy opis aktualnej jakości powietrza. Teksty te zwracane są w odpowiednim języku wedle preferencji użytkownika.
Aby wybrać język API należy przesłać w zapytaniu nagłówek
Accept-Language
, z odpowiednią wartością.Aktualnie wspierany jest język angielski ("en" - domyślny) oraz polski ("pl").
w OH3 widziałem, że da się już wstrzyknąć te dodatkowe parametry - jutro będę już u siebie instalował "produkcyjnie" OH3 wiec podeślę Ci jak to zrobić
Ja robię migracje na żywo 😉 - nie jest źle . Większość urządzeń zadziałała bez problemu.
Przygotowałem wstępnie things, items i sitemap dla Airly z dwóch czujników tj. Airly (na mapie airly zaznaczone kółkiem oraz z GIOŚ zaznaczone na mapie airly kwadratem - dają dodatkowe pomiary NO2,O3,SO2,CO).
Wystarczy wpisać swoje API oraz ID punktu pomiarowego.
Całość bazuje na plikach @adriana z przykładu na stronie głównej.
@edass dzięki za przygotowany przykład z konwersjami json'a
Zobacz czy taki kawałek nie da Ci zwrotki w PL
Thing http:url:airly "Airly: bridge" [ baseURL="https://airapi.airly.eu/v2/measurements/installation?installationId=7796{Accept=application/json&Accept-Language:pl&apikey=TWOJE_API}", refresh=600]
U mnie sąsiedzi załadowali stare buty i opony do kopciuchów i trzysta % już ba zegarach
Fajnych masz "somsiaduf" 😉 . Moi założyli piec gazowy ale kopciucha sobie zostawili tak na wszelki wypadek . Raz na kilka dni odpalają go "dla przypomnienia" jak się pali...
Wracając do Airly - niestety ten link nie działa (podstawiłem swoje API) - to jest odpowiedź:
{"message":"UNAUTHORIZED"}
Nie znam sposobu na dodanie parametru headera "Accept-Language=pl" bezposrednio w adresie url ale sprobuje pomoc.
Na ten moment widze 2 opcje
1. Propozycja od @adrian czyli w pierwszej kolejnosci pobieramy dane na serwer curlem, nastepnie OH dostaje dane z lokalnego adresu.
2. Dodanie parametru headers w things, sprawdzone i poki co nie widze problemow:
Thing http:url:airly "Airly: bridge" [ baseURL="https://airapi.airly.eu/v2/measurements/installation?installationId=7796&apikey=TWOJE_API}", refresh=600, headers="Accept-Language=pl"]
Parametr opisany w dokumentacji -> https://www.openhab.org/addons/bindings/http/
@pav3ll w tym opisie, w przykładzie podawali parametry header'a w url - ale teraz widzę ze to chyba HTTP binding 1
Ja u siebie ściągam co 15 cron'em
curl -s -X GET --header 'Accept: application/json' --header 'Accept-Language: pl' --header 'apikey: MOJ_KEY' 'https://airapi.airly.eu/v2/measurements/installation?installationId=6166' -o /etc/openhab/html/airly/airly-data.json
http://192.168.2.146:8080/static/airly/airly-data.json
alternatywa można parametry header'a wprowadzić w definicji Thing przez UI
Nie znam sposobu na dodanie parametru headera "Accept-Language=pl" bezposrednio w adresie url ale sprobuje pomoc.
Na ten moment widze 2 opcje
1. Propozycja od @adrian czyli w pierwszej kolejnosci pobieramy dane na serwer curlem, nastepnie OH dostaje dane z lokalnego adresu.
2. Dodanie parametru headers w things, sprawdzone i poki co nie widze problemow:
Thing http:url:airly "Airly: bridge" [ baseURL="https://airapi.airly.eu/v2/measurements/installation?installationId=7796&apikey=TWOJE_API}", refresh=600, headers="Accept-Language=pl"]Parametr opisany w dokumentacji -> https://www.openhab.org/addons/bindings/http/
Dzięki DZIAŁA!
Thing http:url:airly "Airly: bridge" [ baseURL="https://airapi.airly.eu/v2/measurements/installation?installationId=XXX&apikey=TWOJE_API}", refresh=900, headers="Accept-Language=pl"]
@all
W pierwszym poście dodałem gotowe pliki konfiguracyjne - wystarczy wpisać API oraz ID stacji pomiarowej.
Miło by było jakby ktoś trochę uatrakcyjnił wygląd tej sitemapy i podzielił się z nami swoją twórczością.
Nad habpanelem zastanawiam się już ponad rok ale nie mam czasu się tym zająć - cienki jestem z programowania i musiałbym się wszystkiego uczyć... Wole zamiast tego dołożyć coś nowego "SMART" w domu.
W zasadzie nie widzę tutaj za wiele programowania, habpanel pobiera dane z konfiguracji items, things, scripts etc.
Kwestia wyklikania potrzebnych widgetów i dostosowania wyglądu do swoich potrzeb. Do grafany wystarczy podłączyć bazę influxdb i od razu możemy prezentować wyniki na wykresach. Konfiguracja jest dość intuicyjna, nie powinna sprawiać większych kłopotów. Załączam screeny jak to wygląda przykładowo u mnie, wydaję mi się, że nie najgorzej ale wiadomo, każdy ma swój gust ;] Oczywiście cały czas rozwijam/ulepszam swoje zabawki pod względem wydajności i estetyki. Na zdjęciach jest prezentowanie wyników z airly w grafanie oraz pilot do androidtv (box).
Super to u Ciebie wygląda . Muszę nad tym popracować ale w ostatnim tygodniu nie miałem nawet czasu włączyć kompa...
Jak sterujesz Android TV ? Mam mibox3 oraz Amazon fire tv stick i nie wiem jak się za nie zabrać ------ doczytałem w innym wątku.
przepraszam, że odkopuję wpis po latach ale mam problem z językiem pl w OH3
mianowicie mam tak :