Powiadomienia
Wyczyść wszystko
OpenHAB
33
Wpisów
4
Użytkownicy
1
Reactions
3,326
Wyświetleń
Spoko spoko, żaden kot nie ucierpi. No jak widzisz do zrobienia zapytania potrzebujesz token i user_id, a Ty mi to podałeś 😉
Poniżej skrypt, w którym musisz sobie tylko rozszyć parametry na itemy wg wzoru. Na samej górze masz parametry konfiguracyjne czyli nazwa użytkownika, hasło i nazwa modułu (u Ciebie było to 505).
rule "Emodul data" when Time cron "0 0/1 * * * ?" // co 5 minut then // Dane dostępowe do konta emodul.pl val String username = "user" val String password = "pass" val module_name = "505" // Zaloguj się do konta emodul.pl val String login_url = "https://emodul.eu/api/v1/authentication" val String login_data = '{"username": "' + username + '" ,"password": "' + password + '"}' val String login_response = sendHttpPostRequest(login_url, "application/json", login_data) logInfo("Emodul", "Response: {}", login_response) if (login_response === null) { logWarn("Emodul","Empty HTTP response!") return; } val access_token = transform("JSONPATH", "$.token", login_response) logInfo("Emodul","Access token: {}", access_token) if (access_token == "NULL") { logWarn("Emodul","Login failed!") return; } val user_id = transform("JSONPATH", "$.user_id", login_response) logInfo("Emodul","User ID: {}", user_id) // Pobierz dane z emodul.pl GET https://emodul.eu/api/v1/users/{user_id}/modules var String data_url = "https://emodul.eu/api/v1/users/" + user_id + "/modules" //var String data_url = "https://emodul.pl/api/data" var String data_response = sendHttpGetRequest(data_url, newHashMap("Authorization" -> "Bearer " + access_token), 5000) logInfo("Emodul","Data response: {}", data_response) val String module_udid = transform("JSONPATH", "$.[?(@.name=='" + module_name + "')].udid", data_response) logInfo("Emodul","module_udid: {}", module_udid) if (module_udid == "NULL") { logWarn("Emodul","Module {} not found! Rule exits", module_name ) return; } data_url = "https://emodul.eu/api/v1/users/" + user_id + "/modules/" + module_udid data_response = sendHttpGetRequest(data_url, newHashMap("Authorization" -> "Bearer " + access_token), 5000) logInfo("Emodul","Data response: {}", data_response) // Publikuj dane w openHAB3 logInfo("Emodul", "Wynik JSONPATH id=4062: {}", transform("JSONPATH", "$.tiles[?(@.id=='4062')].params.openingPercentage", data_response)) ProcOtwZawItem.postUpdate(transform("JSONPATH", "$.tiles[?(@.id=='4062')].params.openingPercentage", data_response)) end
Dodane : 23/01/2023 9:26 pm
Autor tematu
po restarcie zarzuciło mi konsole JSONem.
Jest możliwość zrobienia przycisku/reguły restart do OH?
Dzięki bardzo, w weekend powinienem wrócić do domu to się biorę za to. Przez TeamV to nie zabawa 😉
Dodane : 23/01/2023 9:30 pm
Może zarzucić konsolę JSONem, bo masz w logu cały wynik zapytania o moduł. Zakomentarzuj tę linijkę i po problemie. Jak już wszystko ruszy to wywal z rule wszystko, co ma logInfo.
Chodzi Ci o restart OH z reguły?
Dodane : 23/01/2023 9:34 pm
Autor tematu
Dodane : 23/01/2023 9:58 pm
Na QNAPie to nie wiem, pewnie jakimś skryptem można to ogarnąć. Miałem na samym początku OpenHABa na QNAPie, ale szybko się z tego wyleczyłem.
Dodane : 23/01/2023 10:26 pm
Autor tematu
Dlaczego wyleczyłeś? Miałeś jako kontener czy apkę?
U mnie z kontenerem były problemy a jako apka działa 98% no gdyby nie moje grzebanie to 100% bez problemu
Dodane : 23/01/2023 10:37 pm
Miałem podstawowego QNAPa i strasznie muliło (a kontenerów w ogóle nie obsługiwał). Restartowac trzeba było z GUI, niezbyt wygodne, jak się grzebie.
Teraz mam RPi4 z dyskiem SSD. Tam mam weewxa, trochę własnych skryptów i aktualizacje częściej niż na QNAPie (tam było zawsze z pół roku do tyłu).
Dodane : 23/01/2023 10:41 pm
Autor tematu
Ja sie zbieram żeby na Pi2 zrobić na czarną godzinę ale jakoś brak motywacji.
Nie mogę wydobyć stąd danych
}, "widget2":{ "txtId":1041, "value":666, "unit":7, "type":9, "params":[ 0, 0, 0, 0, 0 ] } } },
Mam albo Null albo że nie potrafi wydobyć danych ;/
Dodane : 23/01/2023 10:48 pm
Wg czego chcesz wybierać zestaw (po którym kluczu filtrować) i którą daną chcesz wyciągnąć?
Testowałeś wyrażenie JSONPath na tej stronie, co Ci wysłałem na początku? Jak tam nie działa, to i w skrypcie nie będzie.
Dodane : 23/01/2023 11:46 pm
Autor tematu
ok wiem co źle zrobiłem.
Zapytanie po prostu w kilku miejscach będzie dłuższe żeby wydobyć to co potrzebuję
Dodane : 24/01/2023 5:56 am
Super, że sobie poradzieś.
Jak skończysz, to wrzuć gotowy skrypt na forum (pamietaj, żeby usunąć login i hasło), może komuś się przyda.
Dodane : 29/01/2023 1:17 pm
Autor tematu
Jeszcze fazy testów i brak czasu żeby dokończyć jeszcze 2 wpisy o pracy/wygaśnięciu i jeszcze powiadomienia z alarmami
Dodane : 12/02/2023 8:16 am
Autor tematu
Czas mija a postępów brak.
Odczyt działa bezawaryjnie wyświetlanie w OH też.
Pobranie informacji o tym że piec pracuje lub alarmu że wygasł nie udało mi się wydobyć.
Nie widzę tego w JSON. Wygaśnięcie jest jako wyskakujące okno więc nawet nie wiem jak go pobrać i gdzie oczekiwać.
Sama liczba parametrów którą zdecydowałem się wyświetlić w OH zmniejszyłem do podstawowych 😉
Dodane : 26/02/2023 10:20 am
Strona 2 / 2
Poprzednia