Skip to content

Releases: procaktomasz/LibrusSynergiaHA

Konta bez dostępu, oceny opisowe z nowego schematu i naprawa dublowania ocen

Choose a tag to compare

@procaktomasz procaktomasz released this 21 Oct 11:18

Wydanie v3.0.4 porządkuje obsługę kont bez pełnego dostępu do dziennika, dodaje oceny opisowe z nowego schematu Librusa i usuwa dublowanie ocen punktowych.

⚠️ Wymagana jest biblioteka librus-apix >= 1.6.0 – Home Assistant zainstaluje ją automatycznie po aktualizacji integracji.

👶 1. Konta bez dostępu do dziennika (Issue #48)

  • Konta, dla których Librus pokazuje stronę „Brak dostępu” (np. konta przedszkolne), nie powodują już ponownego logowania przy każdym odświeżeniu.
  • Niedostępne moduły są pomijane przez dobę, z jednym ostrzeżeniem w logu na moduł, a dostępne – np. wiadomości – pobierane dalej.
  • Przy dodawaniu konta, które nie ma dostępu ani do dziennika, ani do wiadomości, kreator wyświetla odpowiedni komunikat.

📝 2. Oceny opisowe w nowym schemacie Librusa (Issue #50)

  • Obsługa ocen opisowych z obszarami oceniania („Bieżące oceny opisowe”), które Librus doczytuje z API.
  • Oceny pojawiają się przy przedmiotach, a obszar oceniania jest ich kategorią. Nowe przedmioty pojawią się jako encje po ponownym uruchomieniu integracji.

🧮 3. Naprawa dublowania ocen punktowych (Issue #49)

  • Biblioteka librus-apix odczytuje teraz także oceny z sekcji „Oceny punktowe”, przez co każda taka ocena pojawiała się dwukrotnie (np. 100, 99, 100, 99).
  • Integracja rozpoznaje tę samą ocenę (przedmiot, data, wartość) i zostawia jeden wpis – wersję punktową ze skalą i procentem, dzięki czemu średnia dla ocen w innej skali (np. 0–20) liczy się poprawnie.
  • Dane poprawią się przy pierwszym odświeżeniu po aktualizacji.

🎯 4. Dokładniejsza fuzja terminarza z planem lekcji

  • Sprawdzian z przedmiotu, którego uczeń nie ma na danej lekcji (np. sprawdzian innej grupy), nie tworzy już w planie dodatkowej lekcji o tym samym numerze.
  • Zakres lekcji (np. „3-4”) w terminarzu nie jest nadpisywany przy korekcie numeru lekcji.
  • Ponowne scalenie planu z pamięci podręcznej nie dubluje wpisów i usuwa zdarzenia skasowane z terminarza.

Stan on dla trwających lekcji w kalendarzach i precyzyjne dopasowanie sprawdzianów

Choose a tag to compare

@procaktomasz procaktomasz released this 20 Oct 18:40

Wydanie v3.0.3 rozwiązuje problem stanu encji kalendarzy podczas trwania zajęć oraz wprowadza inteligentne dopasowanie sprawdzianów do właściwych przedmiotów w planie lekcji.

📅 1. Prawidłowy stan „on” w kalendarzach podczas trwania lekcji (PR #47)

  • Poprawiono logikę wyznaczania bieżącego wydarzenia (event) w obu encjach kalendarzy (plan_lekcji_kalendarz oraz terminarz_kalendarz).
  • Dotychczasowy warunek uwzględniał wyłącznie wydarzenia przyszłe, przez co w trakcie trwania lekcji lub sprawdzianu encja w Home Assistant miała stale stan off.
  • Teraz encje kalendarza prawidłowo przyjmują stan on przez cały czas trwania zajęć, a po ich zakończeniu wskazują najbliższą kolejną lekcję.
  • Rozszerzono także pobieranie zakresu dat (async_get_events) – kalendarz poprawnie uwzględnia wydarzenia rozpoczęte przed początkiem widoku, jeśli na niego zachodzą.
  • Podziękowania dla @morbiasz za wdrożenie PR #47 oraz dla @PePeLLee za precyzyjne zgłoszenie w Issue #46!

🎯 2. Odporność na pomyłki w numerze lekcji przy sprawdzianach

  • Rozwiązano problem błędnego przypisywania sprawdzianów w planie lekcji, gdy nauczyciel w Librusie omyłkowo wskaże nieprawidłowy numer lekcji (np. wpisze lekcję nr 2, na której klasa ma historię, zamiast lekcji nr 4 z matematyką).
  • Zdarzenia sprawdzianów i kartkówek mają teraz bezwzględny priorytet dopasowania po nazwie przedmiotu i nazwisku nauczyciela – sprawdzian nigdy nie trafi na inny przedmiot, jeśli właściwa lekcja odbywa się w danym dniu.
  • Zastępstwa nadal zachowują wysoki priorytet numeru lekcji, prawidłowo nadpisując pierwotny przedmiot w planie.

⏱️ 3. Spójność godzin i numerów lekcji na dashboardzie

  • Gdy integracja skoryguje przypisanie sprawdzianu do właściwej lekcji w planie, atrybuty encji terminarz (numer_lekcji oraz godzina) są automatycznie aktualizowane.
  • Dzięki temu karty dashboardu („Odliczanie do sprawdzianu”, „Nadchodzące”) oraz kalendarz sprawdzianów od razu pokazują właściwą lekcję i przedział godzinowy bez potrzeby jakichkolwiek modyfikacji konfiguracji dashboardu.

v3.0.2 - Izolacja kont uczniów, stabilność encji przy awariach i odświeżanie po aktualizacji

Choose a tag to compare

@procaktomasz procaktomasz released this 18 Oct 06:56

Wydanie v3.0.2 to aktualizacja skupiona na stabilności wielu kont w jednym systemie oraz odporności encji na chwilowe niedostępności portalu Librus.

👶 1. Niezależne sesje dla wielu uczniów (PR #45)

  • Rozwiązano problem współdzielenia ciasteczek i tokenów OAuth w bibliotece bazowej librus-apix 1.5.3.
  • Każde konto posiada teraz w pełni niezależny słoik ciasteczek i token autoryzacji.
  • Eliminuje to sytuację, w której u rodziców z dwójką lub więcej dzieci uwagi, frekwencja czy zajęcia dodatkowe jednego dziecka pokazywały się na sensorach drugiego (ogromne podziękowania dla @morbiasz za precyzyjną diagnozę i kod!).

🛡️ 2. Encje zawsze dostępne podczas awarii logowania

  • Gdy portal Librus ma przerwę techniczną lub logowanie chwilowo zawiedzie, koordynator zachowuje ostatnio pobrane dane.
  • Encje na dashboardach nie zmieniają stanu na unavailable (niedostępny), dzięki czemu karty i automatyzacje działają stabilnie w oparciu o ostatni znany stan.
  • Ostrzeżenie w dzienniku zdarzeń pojawia się tylko raz na awarię – brak zalewania logów Home Assistanta powtarzającymi się komunikatami.

⚡ 3. Natychmiastowe odświeżenie danych po aktualizacji

  • Pamięć podręczna zapisuje informację o wersji integracji, która utworzyła stan.
  • Po aktualizacji integracji (np. z v3.0.1 do v3.0.2) dane pobierane są od razu po restarcie, co gwarantuje natychmiastowe zastosowanie poprawek bez oczekiwania na upływ cyklu odpytywania.

Dzięki dla całej społeczności oraz dla @morbiasz za czujność i świetne zgłoszenie!

v3.0.1 - Sensor zachowania, ochrona przed blokadą konta i optymalizacja bazy danych

Choose a tag to compare

@procaktomasz procaktomasz released this 14 Oct 18:41

Wydanie v3.0.1 skupia się na obsłudze zachowania punktowego, eliminacji błędów w planie lekcji oraz gruntownej optymalizacji stabilności, logowania i bazy danych.

🌟 1. Nowy sensor ocen i punktów z zachowania (Issue #40)

  • Dodałem nową encję sensor.librus_[uczen]_zachowanie.
  • Odczytuje ona punkty startowe, sumy punktów dla semestru 1 i 2, oceny przewidywane i roczne oraz pełną listę wpisów punktowych wraz z kategorią, nauczycielem, datą i komentarzem.

🐛 2. Poprawka planu lekcji i terminarza (Issue #42)

  • Naprawiono błąd fuzji planu lekcji – zdarzenia z odległych tygodni nie trafiają już do lekcji z bieżącego tygodnia (dzięki @morbiasz).

⚙️ 3. Konfigurowalny interwał odpytywania (PR #44)

  • W opcjach integracji można teraz precyzyjnie ustawić częstotliwość odpytywania Librusa: osobno w godzinach szkolnych (dni robocze 7:00–16:00) oraz w pozostałym czasie i weekendy (dzięki @morbiasz).

🛡️ 4. Ochrona konta przed blokadą (Exponential Backoff)

  • Wprowadziłem inteligentną blokadę ponownych prób logowania (od 5 minut do maksymalnie 2 godzin) w przypadku błędnego hasła lub awarii portalu Librus.
  • Koordynator wykonuje dokładnie jedno logowanie na cykl – brak lawiny zapytań i ryzyka zablokowania konta przez serwery Librusa.
  • Wyeliminowano dublowanie zapytań HTTP przy błędach sieciowych innych niż wygasły token.

⚡ 5. Błyskawiczny start i oszczędzanie kart pamięci (SD)

  • Rozdzielono plik cache na dane i metadane ze znacznikiem czasu pobrania. Przy restarcie Home Assistanta świeże dane są prezentowane natychmiast bez obciążania Librusa.
  • Pełny stan integracji jest zapisywany na dysk wyłącznie wtedy, gdy dane ze szkoły uległy rzeczywistej zmianie, co drastycznie ogranicza zużycie kart pamięci i dysków SSD.

🧹 6. Czyste logi i eliminacja ostrzeżeń Home Assistanta

  • Wdrożono _unrecorded_attributes dla dużych list w sensorach – zapobiega to zapychaniu bazy danych (SQLite/MariaDB) i całkowicie likwiduje ostrzeżenia o przekroczeniu limitu 16 KB. Atrybuty pozostają w 100% dostępne dla kart Lovelace i szablonów.
  • Zdarzenia wysyłane są przez async_fire, a strefa czasowa w kalendarzu inicjalizowana jest statycznie, co eliminuje ostrzeżenia o blokowaniu pętli zdarzeń.
  • Błędy sieciowe w logach są teraz zwięzłe i jednolinijkowe – pełny stos wywołań (traceback) pojawia się wyłącznie przy włączonym trybie DEBUG.

Ogromne podziękowania dla @morbiasz, @sgurgul oraz @znanywawa za zgłoszenia, zrzuty danych i nadesłane poprawki!

v3.0.0 - Asystent AI, Kreator Dashboardu i Optymalizacje

Choose a tag to compare

@procaktomasz procaktomasz released this 13 Oct 19:36

🎓 Wydanie v3.0.0 – Asystent AI, Kreator Dashboardu i Optymalizacje

Publikuję nową wersję integracji v3.0.0. To największa dotychczasowa aktualizacja integracji, w której skupiłem się na inteligentnych podsumowaniach AI, stworzeniu wygodnego generatora kart w przeglądarce oraz gruntownej optymalizacji stabilności i szybkości działania.


🤖 Asystent AI i Inteligentne Podsumowania

  • Podsumowania tygodnia i dnia: Automatyczne raporty postępów oraz zwięzłe streszczenia wiadomości (osobne profile dla rodzica i ucznia).
  • Parametryczne prompty: Możliwość definiowania własnych zakresów dni (np. {oceny:14}, {sprawdziany:7}, {nieobecnosci:14}).
  • Analiza terminarza: Asystent uwzględnia nadchodzące sprawdziany i prace klasowe.
  • Przyjazne powiadomieniom: Krótki stan sensora (do 250 znaków na telefon) i pełny raport Markdown w atrybutach.

🌐 Kreator Dashboardu Online

Uruchomiłem oficjalny generator paneli Lovelace w przeglądarce – pozwala w kilka chwil wyklikać i skopiować gotowy kod kart bez konieczności uruchamiania jakichkolwiek skryptów:
👉 procaktomasz.github.io/LibrusSynergiaHA

⚡ Szybkość, Stabilność i Baza Danych

  • Pula połączeń HTTP (Keep-Alive): Znacznie szybszy start i odpytywanie Librusa dzięki ponownemu wykorzystaniu sesji TCP/TLS.
  • Mniej zapytań do API: Wyeliminowałem dublowane odpytywanie ocen i zrealizowanych lekcji.
  • Baza danych (Recorder): Dodałem zalecenia wykluczeń dużych encji z historii przed błędem limitu 32 KB.
  • Poprawka ocen (Issue #39): Wykluczyłem wadliwą wersję soupsieve 3.0 blokującą parsowanie ocen w Home Assistant.

📅 Plan Lekcji i Zadania

  • Precyzyjny plan lekcji: Naprawiłem algorytm dopasowywania zastępstw i sprawdzianów (koniec ze sztucznymi wpisami ??:??).
  • Dni wolne: Integracja poprawnie czyści lekcje w dni wolne od szkoły.
  • Lista To-Do i grywalizacja: Automatyczna lista zadań "Przygotowanie do lekcji" oraz sensor binarny odrobionych lekcji.

📬 Wiadomości, Uwagi i Zdarzenia

  • Nowa usługa get_message do pobierania pełnej treści wiadomości (ze wsparciem dla wielu uczniów i trwałym cache).
  • Dedykowany sensor uwag szkolnych (pozytywne, negatywne, neutralne).
  • Zdarzenia szyny Home Assistanta ułatwiające budowanie własnych automatyzacji.

Dziękuję wszystkim testerom i społeczności za zgłoszenia oraz ogromną pomoc w rozwoju tego wydania!

v2.3.1 Hotfix

Choose a tag to compare

@procaktomasz procaktomasz released this 08 Oct 09:16

Fixes #37: SyntaxError in sensor.py

v2.3.0

Choose a tag to compare

@procaktomasz procaktomasz released this 08 Oct 06:56

Ogromne podziękowania dla społeczności (w szczególności dla @morbiasz) za pomoc w rozwoju integracji! Ta wersja wprowadza długo wyczekiwane poprawki oraz nowe funkcje:

  • Nowość: Oceny Punktowe (0-100) - Integracja radzi sobie wreszcie z poprawnym odczytywaniem i wyświetlaniem ocen wyrażonych w punktach/procentach (Rozwiązuje Issue #22).
  • Nowość: Sensor Uwag - Dodano nowy sensor zbierający uwagi ucznia.
  • Nowość: Gotowy Dashboard - W folderze examples udostępniono gotowe rozwiązanie panelu "Szkoła" do skopiowania na pulpit HA.
  • Nowość: Zdarzenia w HA z powiadomieniami dla nowych nieobecności i spóźnień.
  • Nowość: Pola "opis" w ocenach oraz "rodzaj" w terminarzu.
  • Poprawka Wiadomości: Zlikwidowano sztywny limit 5 wiadomości. Od teraz sensor poprawnie wczytuje ilość zadeklarowaną przez użytkownika (nawet do 25 wiadomości) oraz rozwiązano problem duplikujących się elementów (Rozwiązuje Issue #28).
  • Poprawka Planu Lekcji: Zablokowano wyświetlanie błędnych tzw. sztucznych lekcji z pustymi terminami.
  • Poprawki w architekturze testów środowiskowych.

v2.2.8

Choose a tag to compare

@procaktomasz procaktomasz released this 07 Oct 07:44
  • Dodano procentowy wskaźnik frekwencji oraz nową kartę zrealizowanych lekcji (PR #27)
  • Dodano suwak w opcjach pozwalający na pobieranie większej liczby wiadomości z dziennika (Issue #28)
  • Poprawiono błąd, przez który wydarzenia w kalendarzu były całodniowe, zamiast przypisywać się do dokładnych godzin lekcyjnych (Issue #17)

Wydanie v2.2.7: Poprawki Terminarza i komentarzy do ocen

Choose a tag to compare

@procaktomasz procaktomasz released this 05 Oct 17:28

🚀 Wydanie v2.2.7

Co nowego?

  • Komentarze do ocen: Przywrócono poprawne wczytywanie komentarzy dodanych do ocen. Błąd wynikał ze zmiany struktury danych po stronie biblioteki zależnej, na co przygotowany został dedykowany fallback. (Zgłoszenie #26, PR #25 z podziękowaniami dla @Lucaspog).
  • Terminarz (Sprawdziany i kartkówki): Załatano błąd parsera związany z bardzo długimi, wielolinijkowymi wpisami. Teraz cały zakres materiału dodany przez nauczyciela elegancko łączy się w jeden spójny blok tekstu ze znakami nowej linii (\n). (Zgłoszenie #24).

💡 Ważna wskazówka dla użytkowników kart Markdown (Terminarz):
Z racji wdrożenia obsługi pełnego, wielolinijkowego tekstu, upewnij się, że w swoich kartach Terminarza typu Markdown używasz filtru replace, aby tabela się nie "rozsypała". Plik README został zaktualizowany o ten wpis.
Zamiast {{ z.szczegoly.Opis }} należy użyć:
{{ z.szczegoly.Opis | replace('\n', '<br>') }}

Wydanie v2.2.6: Oceny literowe, punktowe oraz naprawa kalendarza

Choose a tag to compare

@procaktomasz procaktomasz released this 05 Oct 10:39

🚀 Wydanie v2.2.6

Co nowego?

  • Oceny z klas 1-3 (literowe): Integracja prawidłowo odczytuje oceny A, B, C, D (oraz ich wersje z plusami i minusami), przypisując im odpowiednie wartości przy wyliczaniu średniej (A=5.0, B=4.0, C=2.0, D=1.0). (Zgłoszenie #23)
  • Oceny punktowe i procentowe (0-100): Naprawiono problem z gubieniem przez sensory ocen w przypadku nietypowego systemu oceniania 0-100% lub z dopiskami "p" / "pkt". (Zgłoszenie #22)
  • Plan lekcji / Kalendarz: Poprawiono logikę wykrywania odwołanych lekcji oraz zastępstw. Usunięto również błąd, który wysypywał proces renderowania kalendarza dla wydarzeń odbywających się w nieustalonych godzinach (np. dodatkowa poprawa sprawdzianu po lekcjach) oznaczając je teraz automatycznie jako wydarzenia całodniowe. (Zgłoszenie #17)
  • Dokumentacja: Do pliku README dodano nowy, w 100% dynamiczny przykład przepięknej karty wyświetlającej tabele ze wszystkimi ocenami (podział na przedmioty, średnia) dostosowującej się z automatu do liczby dzieci na koncie Librusa.

Dziękuję wszystkim zgłaszającym za pomoc i cenne uwagi!