Kocioł z sterownikiem INEXT - Parsowanie

Witam serdecznie w innym miejscu tego forum nauczyłem się parsować odpowiedzi z API i wyświetlać je w HA. Moja radość nie trwała zbyt długo gdyż okazało się iż funkcję zmieniają się kolejnością np. w wywołaniu 1 parametr mam w “payload.devices[0].last_state[4].value” a w kolejnym już w “payload.devices[0].last_state[49]”
Skontaktowałem się z dostawcą API czy tak sytuacja występuje i oto mam taką odpowiedź:

Pozycje w odpowiedzi mogą się zmieniać. Najlepiej filtrować po atrybucie “code” - jest on stały i przenoszony między wersjami sterowników

1234

Potrzebuję pomocy jak to ugryśc w NR i wyszukiwac pozycję wg. “code”

Mam chwilę i mogę się pobawić.
Załącz do testów przykładowy payload jako plik tekstowy.

Załączam

https://megawrzuta.pl/schowek/QrAcH

Pomysł jest taki, aby przejrzeć wszystkie elementy tablicy “payload.devices[0].last_state[].
Załączony przykład konwertuje do prostego json : {code : value, …itd.
Pisany na szybko, więc wymaga jeszcze trochę pracy.
flows (5).json (10,6 KB)

Przetestowałem formatowanie fajnie dodaje wartość po code w jaki sposób wyciągnąć teraz wartość która mnie interesuje np “__poziompaliwa:58” samą wartość liczbową ?

Trochę poprawiłem, bo lekko było nie tak.
Musisz dobrać indeksowanie w pętli bo wstawiłem na pałę, aby pozbyć się końcowych śmieci.
for (i=1; i<(count-10); i++){

flows (6).json (11,3 KB)
.

Przetestowałem i gdy struktura jest standardowa dane przechodzą , ale gdy w którymś wywołaniu się zmieni to wycina payload i nie ma wszystkich właściwości, czy nie będzie problemem to że payload jest taki długi ?
1


A tu struktura z której czyta prawidłowo

Payload odwrócony https://megawrzuta.pl/schowek/yMbvS

Prawdopodobnie wycina z powodu indeksowania? - spróbuj, z takimi wartościami:
for (i=0; i<(count-1); i++){

Tak teraz za każdym razem wyciąga mi informację które mnie interesują na końcu tylko pojawiają się jakieś śmieci.

4

Zmieniając tą wartość możesz się tego pozbyć - pod warunkiem, że zawszę będą na końcu.
Można też wprowadzić warunek - gdy code zawiera “harmonogram” to tego nie zapisujesz… ale to w ramach zadania domowego zostawiam Tobie :slight_smile:

Dziękuję bardzo za pomoc bez ciebie w życiu bym tego nie opanował