Repository navigation
Releases: procaktomasz/LibrusSynergiaHA
Release list
Konta bez dostępu, oceny opisowe z nowego schematu i naprawa dublowania ocen
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 bibliotekalibrus-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-apixodczytuje 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
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_kalendarzorazterminarz_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
onprzez 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_lekcjiorazgodzina) 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
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
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_attributesdla 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
🎓 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.0blokują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_messagedo 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
Fixes #37: SyntaxError in sensor.py
v2.3.0
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
- 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
🚀 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
🚀 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!