Odczyt danych z kot...
 
Powiadomienia
Wyczyść wszystko

openHAB Odczyt danych z kotła CO lub integracja ST-505

33 Wpisów
4 Użytkownicy
1 Reactions
3,326 Wyświetleń
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac 

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
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac 

Tak bo obecnie musze logować sie na serwer QNAP ręcznie wyłączyć poczekać i włączyć.

 

 
Dodane : 23/01/2023 9:58 pm
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac 

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
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac 

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
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
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
(@kamikac)
Wpisów: 226
Pomocny
 

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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
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
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
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ć.

tech

Sama liczba parametrów którą zdecydowałem się wyświetlić w OH zmniejszyłem do podstawowych 😉

techOH
 
Dodane : 26/02/2023 10:20 am
Strona 2 / 2
Udostępnij: