Closed mmarcines closed 1 year ago
Home Assistant: 2023.4.0 (ale dane nie wczytuja sie od dwoch dni - wiec problem pewnie tez istnial na 2023.3.3 - wczoraj zrobilem aktualizacje)
Blad z logu
Ten błąd pochodzi z niestandardowej integracji. Logger: custom_components.tauron_amiplus.coordinator Source: custom_components/tauron_amiplus/connector.py:193 Integration: Tauron AMIplus (documentation, issues) First occurred: 08:33:07 (2 occurrences) Last logged: 08:33:23
Unexpected error fetching tauron_amiplus data: 'allData'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 250, in _async_refresh
self.data = await self._async_update_data()
File "/config/custom_components/tauron_amiplus/coordinator.py", line 29, in _async_update_data
data = await self.hass.async_add_executor_job(self._update)
File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/tauron_amiplus/coordinator.py", line 40, in _update
return self.connector.get_raw_data()
File "/config/custom_components/tauron_amiplus/connector.py", line 103, in get_raw_data
data.consumption = self.get_data_set(generation=False)
File "/config/custom_components/tauron_amiplus/connector.py", line 115, in get_data_set
dataset.json_daily, dataset.daily_date = self.get_values_daily(generation)
File "/config/custom_components/tauron_amiplus/connector.py", line 193, in get_values_daily
while offset <= CONST_MAX_LOOKUP_RANGE and (data is None or len(data["data"]["allData"]) < 24):
KeyError: 'allData'
Hej, Potwierdzam, mam dokładnie ten sam błąd.
Hej, u mnie to samo :-/ Zauważyłem to po aktualizacji do 2023.4.0
U mnie jest to samo, a jeszcze nie robiłem aktualizacji do 2023.4.0, więc to nie ona jest przyczyną.
U mnie to samo przed i po aktualizacji 2023.4.0
wyglada ze cos po stronie taurona bo pobieranie skryptem w pythonie tez nie dziala od wczoraj
u mnie to samo
u mnie to samo
`Logger: custom_components.tauron_amiplus.coordinator Source: custom_components/tauron_amiplus/connector.py:193 Integration: Tauron AMIplus (documentation, issues) First occurred: 12:51:11 (6 occurrences) Last logged: 13:14:52 Unexpected error fetching tauron_amiplus data: 'allData'
Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 250, in _async_refresh self.data = await self._async_update_data() File "/config/custom_components/tauron_amiplus/coordinator.py", line 29, in _async_update_data data = await self.hass.async_add_executor_job(self._update) File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/config/custom_components/tauron_amiplus/coordinator.py", line 40, in _update return self.connector.get_raw_data() File "/config/custom_components/tauron_amiplus/connector.py", line 103, in get_raw_data data.consumption = self.get_data_set(generation=False) File "/config/custom_components/tauron_amiplus/connector.py", line 115, in get_data_set dataset.json_daily, dataset.daily_date = self.get_values_daily(generation) File "/config/custom_components/tauron_amiplus/connector.py", line 193, in get_values_daily while offset <= CONST_MAX_LOOKUP_RANGE and (data is None or len(data["data"]["allData"]) < 24): KeyError: 'allData'`
Tauron dość radykalnie zaktualizował swoją aplikację mobilną i prawdopodobnie wprowadził jakieś zmiany do API, które skutkują błędami integracji.
Wygląda na to, że z API zostało usunięte pole, które było używane przez tą integrację. Muszę zobaczyć, czy da się to prosto ogarnąć używając innych pól
Niestety sprawa wygląda gorzej, niż samo usunięcie pól z API - usunięto zwracanie danych godzinowych dla okresów dłuższych, niż 24h (co było w sumie pewnym nadużywaniem API z mojej strony).
Żeby to ogarnąć, muszę (znowu... 🙄) dość mocno przerobić pobieranie danych - pobierać je dzień po dniu, albo przejść na pobieranie i parsowanie pliku CSV (tutaj chyba trzeba będzie miesiąc po miesiącu).
Pomóc Ci wiele nie potrafię, ale trzymam kciuki mocno ;)
Dane CSV można pobierać w wybranym zakresie dat (nie musi być cały miesiąc). Może warto rozważyć "przerzucenie" tych danych do bazy danych i dopiero ich analiza. W HA jest sensor do obsługi baz danych.
Dane CSV można pobierać w wybranym zakresie dat (nie musi być cały miesiąc).
Tak, wiem, ale problem jest taki, że np. żeby obliczyć energię zbilansowaną musiałem pobrać dane godzinowe dla okresów dłuższych niż miesiąc.
Może warto rozważyć "przerzucenie" tych danych do bazy danych i dopiero ich analiza. W HA jest sensor do obsługi baz danych.
Nie sądzę, żeby to był dobry pomysł, bo jednak większość użytkowników nie zna SQLa. Poza tym samo przetwarzanie danych nie jest już problemem.
Warto poczekać ponieważ w aplikacji e-licznik jest informacja o kolejnych pracach serwisowych w dniach 16-19 kwiecień
@piecyk57 taaaaak, wolałbym nie musieć robić tego kolejny raz 😄
Nie wiem jak jest to rozwiązane techniczne. Ale może wersję podstawową (bez bilansowania) można zrobić bez pobierania danych godzinowych. A jak Tauron zakończy prace serwisowe, to wtedy wdrożyć dopiero pozostałe funkcjonalności.
Ja akurat bilansowanie raz na miesiąc koryguję zmieniając jedną wartość w HA. A wyliczam ją w przygotowanym excelu.
@andrzejkla mozesz podzielic sie dokładnym opisem, co i jak robisz?
Pobieram dane z elicznik po zakończonym miesiącu (pełny miesiąc) do xls. Następnie przenoszę do nowego arkusza tak by w jedne kolumnie mieć pobór a w drugiej oddanie (z tej samej godziny). Później obliczam w każdej godzinie zbilansowany pobór i oddanie Jeżeli pobór większy niż oddanie (z licznika) to pobór zbilansowany = pobór-oddanie, a oddanie zbilansowane = 0 Jeżeli oddanie większe niż pobór to pobór zbilansowany =0, a oddanie zbilansowane = oddanie - pobór Tak powstałe dane z całego miesiąca sumuję. Sumuję zarówno te dane z liczniki i te nowe dane po bilansowaniu.
Wyliczam różnicę między oddanym i oddanym zbilansowanym. O tą różnice zmieniam dane w HA. Mam jeden sensor jako korekta autokonsumpcji i go co miesiąc zmieniam.
Ja tam kibicuje @PiotrMachowski i cierpliwie czekam.
Po co sie logowac co miesiac i pobierac xls'y - skoro dzieki tej integracji "zapas" nawet po zbilansowaniu moze sie sam automatycznie obliczac.
@PiotrMachowski Z Twojej odpowiedzi domyślam się, że rzekomo nie da się pobrać danych cvs z okresu dłuższego niż miesiąc. Jeżeli tak, to rozumiem, że z tego powodu nie było to robione w ten sposób od początku?
Sprawdziłem więc w firefoksie, i oto wyniki (trochę się jednak zdziwiłem, że w odpowiedzi nie dostaję cvs — mimo że edytowałem taki właśnie request — tylko dostaję JSONa):
Wybieranie ręczne zakresu godzinowego poboru pozwala wybrać maksymalnie tyle (03.08.2021 - 05.01.2022, czyli 5 miesięcy — pewnie w dniach należy przeliczyć)
Teraz zapytania:
dane%5BsmartNr%5D=tutaj_nr_licznika&dane%5BchartDay%5D=12.04.2023&dane%5BcheckOZE%5D=on&dane%5BstartDay%5D=01.08.2021&dane%5BendDay%5D=13.04.2023&dane%5BtrybCSV%5D=godzin&dane%5BparamType%5D=csv
Powyższe zwróciło godzinowy zakres od 01.08.2021 do 01.01.2022 (dość osobliwe)
dane%5BsmartNr%5D=tutaj_nr_licznika&dane%5BchartDay%5D=12.04.2023&dane%5BcheckOZE%5D=on&dane%5BstartDay%5D=03.08.2021&dane%5BendDay%5D=13.01.2023&dane%5BtrybCSV%5D=godzin&dane%5BparamType%5D=csv
Powyższe zwróciło godzinowy zakres od 03.08.2021 do 03.01.2022 (dość osobliwe)
dane%5BsmartNr%5D=tutaj_nr_licznika&dane%5BchartDay%5D=12.04.2023&dane%5BcheckOZE%5D=on&dane%5BstartDay%5D=03.08.2021&dane%5BendDay%5D=30.01.2022&dane%5BtrybCSV%5D=godzin&dane%5BparamType%5D=csv
Powyższe zwróciło godzinowy zakres od 03.08.2021 do 30.01.2022 - czyli to o co pytamy.
Patrząc po dopowiedziach wygląda na to jakby był limit rozmiaru odpowiedzi nieco ponad 1MB:
{"EC":"0.817","Date":"2022-02-01","Hour":"10","Status":"0","Extra":"N","Zone":"1","ZoneName":"Ca\u0142a doba"},{"EC":"0.823","Date":"2022-02-01
Ponadto firefox pokazuje taki błąd:
Ograniczenie zakresu z GUI może wynikać np. z tego, że wyestymowali ile maksymalnie taka odpowiedź w danym zakresie może ważyć, i wyszło im, że te 5 miesięcy zapełnione danymi w maksymalnym zakresie (więcej niż zera, a mniej niż jakiś umowny max) będą ważyć mniej niż ten limit.
---edit
Co do pomysłu z bazą danych to popieram. Siłą rzeczy jakaś baza jest już podpięta do HA (influx czy coś), użytkownicy nie muszą przecież znać SQLa, użytkownik będzie tylko odpowiedzialny za podanie konfiguracji bazy.
Dane w bazie mają taką zaletę, że nie trzeba ich pobierać raz jeszcze, można je zarchiwizować, przywrócić, w inny sposób przetworzyć, a nawet uzupełnić ręcznie czy automatycznie jeżeli z jakiegoś powodu zajdzie taka potrzeba.
PS widać, że oni w tym API nie mogą się zdecydować czy używać polskiego, czy angielskiego :D
Co do pomysłu z bazą danych to popieram. Siłą rzeczy jakaś baza jest już podpięta do HA (influx czy coś), użytkownicy nie muszą przecież znać SQLa, użytkownik będzie tylko odpowiedzialny za podanie konfiguracji bazy.
Dane w bazie mają taką zaletę, że nie trzeba ich pobierać raz jeszcze, można je zarchiwizować, przywrócić, w inny sposób przetworzyć, a nawet uzupełnić ręcznie czy automatycznie jeżeli z jakiegoś powodu zajdzie taka potrzeba.
Dokładnie o to chodziło w mojej propozycji. Dodatkowo baza danych będzie bardziej "odporna " na zmiany w API licznika, wymagany jest tylko proces parsowania z excel do bazy, więc ewentualna zmiana API nie ma wpływu na dane historyczne.
W sytuacji jak kolega powyżej opisał, że można pobrać max. ok. 5m-cy, wszystkie dane w bazie można scalić (pobierając etapami), wyszukać brakujące recordy i je uzupełnić, etc. W zasadzie sam Excel posiada możliwość eksportu do DB.
To jest tylko luźna propozycja (taki brainstorm), Autor ma najlepszy obraz całości oraz doświadczenie z tym API. Pozdrawiam,
@travnick szczerze mówiąc, to po ostatniej zmianie jeszcze się nie wgryzałem z ręcznym edytowaniem requestów, tylko sprawdziłem, co jest możliwe przez GUI.
Swoją drogą, wygląda jakbyś miał cały czas starą wersję eLicznika, u mnie generowanie raportów wygląda trochę inaczej:
Ogólnie, to teraz bym chyba próbował unikać używania API w sposób, który nie jest możliwy do osiągnięcia przez interfejs, wtedy ograniczam rozróżnialność mojej integracji względem normalnego użytkowania strony.
@faraon66 Jeśli chodzi o pobieranie danych z bazy, to faktycznie potencjalnie mogłoby to ograniczyć zakres konieczny do pobrania z eLicznika, ale tak czy siak musiałbym najpierw pobrać dane z API (integracja na starcie pobiera rok wstecz). Dodatkowo użytkownicy mogą mieć dziury/błędy w swojej bazie danych, bądź np. istniejące dane mogą tylko częściowo pokrywać wybrany do pobrania zakres. Wykrywanie i obsługa takich przypadków byłyby problematyczne. Biorąc pod uwagę, że pobieranie danych z API i tak muszę mieć zrobione, to wolałbym nie dodawać dodatkowych funkcjonalności, które by były podatne na błędy.
A może zamiast Raportu użyć "Pobierz dane"?
Integracja przestała działać ponieważ Tauron prowadzi prace, które nadal trwają - na eLicznik jest info: "Od 16 do 19 kwietnia będziemy prowadzić prace serwisowe.".
Nie jest rozsądniej zajmować się sprawą przynajmniej po 19.04?
@faraon66 właśnie planuję użyć tej funkcji 👍 raporty się dłużej generują
@essenemari te prace akurat się jeszcze nie zaczęły ;) ale tak, chcę jeszcze trochę poczekać, żeby nie musieć 2x poprawiać integracji
@essenemari te prace akurat się jeszcze nie zaczęły ;) ale tak, chcę jeszcze trochę poczekać, żeby nie musieć 2x poprawiać integracji
ok. "te" prace, owszem, ale w Tauronie ogólnie dużo się dzieje w ostatnich tygodniach z punktu widzenia ich systemów (nowa apka i interfejs eLicznik itd.) Wiem, bo sporo do nich dzwoniłem, bo nie mogłem doczekać się zmiany prognoz...
Hej - wiadomo może kiedy będzie fix? :) Z góry dzięki za info
@sosnek1 Oczywiście, że wiadomo. Jak go zrobię 😉
@PiotrMachowski hej, może mogę pomóc? Jak masz jakiś plan, mogę pogrzebać w wolnej chwili. Bo chyba już po "pracach"?
@Saviq dzięki! Wydaje mi się, że ogarnę, postaram się na dniach wrzucić aktualizację
Odnośnie samych prac to chyba coś się jeszcze dzieje
Tyle ze to Mój Tauron. Na eLicznik nie ma takiej informacji
Na eLiczniku mam dziurę w danych od 14 kwietnia, 13:00 do 20 kwietnia 16:00 :/ trochę problematyczne takie coś do późniejszego naprawienia
Hm, u mnie pełna historia do wczoraj włącznie
Tez mam komplet informacji do wczoraj wlacznie.
Na eLiczniku mam dziurę w danych od 14 kwietnia, 13:00 do 20 kwietnia 16:00 :/ trochę problematyczne takie coś do późniejszego naprawienia
Te dane zostaną "doczytane" przez eLicznik. Nie wiem jaki u Ciebie jest model licznika, ale maja one "sporą" pamięć- u mnie dla przykładu ma pamięć 96dni dla cykli 15-to minutowych.
Te dane zostaną "doczytane" przez eLicznik. Nie wiem jaki u Ciebie jest model licznika, ale maja one "sporą" pamięć- u mnie dla przykładu ma pamięć 96dni dla cykli 15-to minutowych.
U mnie dziura za cały marzec i dwie kilkudniowe w kwietniu… nie wygląda mi, jakby się miały doczytać… Natomiast nie sądzę, żeby ta wtyczka powinna robić cokolwiek, żeby to "naprawiać"…
Natomiast nie sądzę, żeby ta wtyczka powinna robić cokolwiek, żeby to "naprawiać"…
W eLiczniku nic naprawiać nie będzie. Chodziło mi o przypadek, że np. dzisiaj by integracja zaciągnęła do HA dane z dziurą, a jutro by w eLiczniku pojawiły uzupełnione dane.
Dane na pewno się jeszcze "doczytają" - jakoś nas będą chcieli rozliczać, więc dane w e-liczniku muszą się pokrywać z tymi na fakturach. Warto jeszcze chwilę poczekać, aż skończą serwisować system i wtedy odpalić poprawioną wtyczkę.
Coś długo niema aktualizacji.
@KrzysiekLegnica nie ma problemu, zwrócę Ci kasę za zakup
@KrzysiekLegnica nie ma problemu, zwrócę Ci kasę za zakup
Miałem dokładnie to samo napisać moment temu - ale mnie ubiegłeś. Ciężko szukać lepszej definicji 'mieć tupet'....
Przy okazji serdeczne dzięki za Twoją DARMOWĄ pracę nad tą integracją i wyrazy szacunku za powściągliwość w słowie w kontakcie z elementem wywrotowym.
Ach ... ta Legnica.
przyłączam się i dopinguję (niewiele więcej mogę pomóc niestety); wielkie dzięki dla @PiotrMachowski !!! Ziemnice p/Legnicą
@PiotrMachowski bez problemu mogę wesprzeć Twoją pracę. Nie widzę też problemu z tym pytaniem. Wielu ludzi zapewne czeka na poprawkę i wielu z nas struje swoim domem korzystając z twojej integracji.
W sieci nie ty Pierwszy będziesz któremu należy się pomoc za wkładaną pracę więc jak coś śmiało pisz, jak to przyśpieszy to myślę ze nie tylko ja wyslę Ci datek na przysłowiową kawę
@KrzysiekLegnica z datkami czy bez zabrzmiało to trochę kiepsko i roszczeniowo.
@spitfire Nie miałem takiego zamiaru, doceniam wkład każdej osoby która poświęca swój czas na rozwój HA. Wiem też doskonale że czasami brakuje na wszystko czasu.
@KrzysiekLegnica nie chodzi o kasę, to było po prostu takie przypomnienie, że to nie jest komercyjne oprogramowanie z pełnym supportem 24/7 😉 Moje rozwiązania dla HA utrzymuję siedząc po nocach, a że ich się trochę namnożyło, to nie zawsze mam czas na natychmiastową naprawę problemów (które oczywiście lubią wychodzić w wielu integracjach jednocześnie).
Jeśłi chodzi o datki, to nie służą one jako forma zarobku (już dawno bym umarł z głodu 😄), tylko jako miły dodatek do czegoś, co i tak bym robił. Nie jest to coś koniecznego do życia, ale po prostu czasami bardziej motywuje do działania 🙂
@PiotrMachowski zdaje sobie sprawę. Wcześniej napisałeś że za kilka dni ogarniesz temat i zastanawiałem się czy u mnie coś jest nie tak. Ale dzięki za informację i już grzecznie czekam i dziękuję.
tl;dr: pobieranie danych mam zrobione, ale muszę je jeszcze zoptymalizować
Udało mi się wyciągnąć dane z aktualnej wersji systemu, ale niestety CSV nie zawiera danych koniecznych do działania integracji (brak danych o strefach), więc musiałem zrobić pobieranie danych godzinowych dla każdego dnia po kolei, co niestety dość mocno spowolniło działanie integracji (szczególnie, jeśli włączone są roczne zakresy danych). Mam już wstępną wersję, która pobiera je, ale chciałbym trochę zoptymalizować to podejście (żeby upewnić się, że te same dane nie są pobierane kilkukrotnie), spróbuję też dodać reużywanie danych pomiędzy odświeżeniami danych.
Discussed in https://github.com/PiotrMachowski/Home-Assistant-custom-components-Tauron-AMIplus/discussions/121