👨‍🚀 Darek, piewsza BETA wydana (UWAGA Wymagany Python3.9 - binarki LTS)

Dziękuję Wam wszystkim za uznanie, staram się pomagać jak tylko coś wiem lub wiem gdzie poszukać. Takiego też podejścia do forum oczekiwałbym od wszystkich i faktycznie wtedy będzie łatwiej.

P.S. Przesiadłem się na LTS i Darka - nie było lekko przy mojej ilości integracji instalacja paczek python’owych trwała “wieki”. Ale finalnie mogę się pochwalić, że obyło się bez pełnego restartu aplikacji, czyli mój licznik pełnych restartów aplikacji = 0.
P.S.2 Czy ktoś kto jest na LTS używa integracji InfluxDB? To jedyna integracja która mi nie wstała.

5 polubień

Mi też bez problemu udało się przejść na LTS po tym jak Darek popsuł AIS :wink: Trwało też wieki ale sukces jest :slight_smile:

Też mam na stanie 0 pełnych restartów AIS :slight_smile: nie licząc jednego na samym początku gdy popsułem wszystko logując się na root’a :wink:

2 polubienia

Kolejny Darek na BETA wydany

Zmiany:

1. Home Assistant Release 2021.2.2 - February 9

2. Home Assistant Release 2021.2.3 - February 11

3. Pamięć nie używana to pamięć zmarnowana - krok 1.

Tak jak wyjaśnialiśmy na początku wpisu system Linux/Android w przypadku gdy kończy mu się pamięć “nie cacka” się z programami tylko je kill-uje.

Dlatego jeżeli ktoś ma logowanie zdarzeń do pamięci i generuje dużo zdarzeń to może skończyć się pamięć i system zabije usługę która zajmuje pamięć.
Nie jest to nic nadzwyczajnego tak to działa wszędzie, tzn. w każdym systemie który nie pokazuje Blue Screen of Death :wink:

Oczywiście nam zależy na tym żeby taka sytuacja jak restart naszej aplikacji z powodu braku pamięci nie miała miejsca. Do tej pory ustawialiśmy naszej aplikacji priorytety w systemie, tak żeby była ostatnia do zabicia. W dokumentacji wyjaśniamy też, że w przypadku generowania większej ilości zdarzeń zalecamy zapis nie w pamięci ale na zewnętrznym dysku lub zdalnej bazie (oczywiście wiemy, że nie jest to proste i są z tym problemy - ten temat rozwiążemy w przyszłości).

Z drugiej strony wyznajemy zasadę (taką jak w systemie Linux/Android), że nie używane zasoby pamięci są zmarnowane i należało by wykorzystać maksymalnie całą dostępną pamięć. Pracujemy nad sprzętem który będzie miał sporo pamięci i aż się będzie prosił żeby do tej pamięci pisać więcej :writing_hand:

W tym kierunku teraz właśnie idziemy i dodaliśmy pierwsze zabezpieczenie przed restartowaniem serwisu Asystent domowy na bramce w przypadku małej ilości pamięci.
A dokładnie zaimplementowaliśmy metodę onTrimMemory z interfejsu Android ComponentCallbacks2

https://developer.android.com/reference/android/content/ComponentCallbacks2#onTrimMemory(int)

Gdy system operacyjny ustali, że jest to dobry moment, aby nasz proces usunął zbędne rzeczy z pamięci (bo nie jest w stanie utrzymać tyle procesów w tle, ile byśmy chcieli). To wyśle nam wiadomość → trim_memory z informacją o poziomie zajętości pamięci. Jeżeli poziom jest TRIM_MEMORY_RUNNING_CRITICAL to zalogujemy informacje w Asystent domowy i sprawimy czy użytkownik ma bazę w pamięci urządzenia. Jeżeli tak to wyczyścimy tą bazę i zwolnimy pamięć. Dzięki temu system będzie nadal działał bez restartu naszego serwisu.

To wszystko jest w tym kodzie:

W tej wersji zrobimy tylko krok 1. - czyszczenie bazy w pamięci.

:tipping_hand_woman: W przyszłości, być może zdecydujemy się na kolejny krok 2. (który widać w kodzie a który teraz nic jeszcze nie robi tylko loguje). Ten kolejny krok to zabijanie procesów z poziomu Asystenta domowego, które zużywają pamięć a które nie są naszymi procesami. Chodzi tu np. on Node-RED, serwery, usługi czy inne rzeczy które użytkownicy instalują na bramce i dziwią się, że coś im się serwis AIS restartuje z “niewyjaśnionych przyczyn”.
Zanim dojedzie do kroku 2. to oczywiście wyjaśnimy jak będzie działał ten mechanizm. Żeby była jasność - na tą chwilę my nic nie zabijamy (to system operacyjny zabija procesy jak mu brakuje pamięci), my staramy się zwolnić pamięć, tak żeby system nie zabił naszego procesu.

Jeszcze jedna uwaga dla osób które myślą, że na mocnym sprzęcie można robić wszystko i ich problemy spowodowane są za małymi zasobami.
Na mocniejszym sprzęcie na pewno da się robić więcej i szybciej ale jeżeli program robi “coś głupiego” to nie pomoże więcej procesora czy pamięci efekt będzie taki sam.
Czyli jeżeli jakiś program będzie zjadał pamięć to zawsze będzie jej za mało i zawsze będzie prowadziło to do tego samego - zabicie/restart procesu z powodu braku pamięci w systemie.

6 polubień

Cześć, taki dungs mi się pojawił w logach.

Logger: homeassistant.components.ais_updater
Source: components/ais_updater/init.py:612
Integration: AIS Updater (documentation, issues)
First occurred: 22:53:05 (2 occurrences)
Last logged: 22:54:13

Received invalid JSON from AIS dom Update

Mam to samo i przez gui nie działa sprawdzanie nowych wersji.

Cześć @Michal.S @Iron dalej tak macie?

Właśnie robimy testa instalacji na 2 bramkach (które są na kanale alfa) i jest OK

image

PS
zaraz wydamy najnowszego Darka na kanale BETA

U mnie wszystko jest aktualne ale linux się za 2 razem zrobił.

1 polubienie

Nowa aktualizacja na BETA

2 zmiany:

1. Łatwiejsze przywracanie ustawień z kopii zapasowej po pełnym restarcie

Szykujemy się do wymuszenia aktualizacji do LTS, ech ten Darek ;)… to będzie długo zapamiętana wersja.
Ale żeby osłodzić przejście na Darka i uprościć przywracanie ustawień z kopii po pełnym resecie aplikacji (to może być najszybsza droga do LTS), dodaliśmy łatwiejszy sposób na przywrócenie ustawień z kopii.

Teraz region do przywracania ustawień jest na pierwszym ekranie (nie trzeba się już logować żeby przywrócić ustawienia).

Po rozwinięciu można się zalogować i wybrać bramkę (staramy się pokazywać wszystkie komunikaty - żeby było wiadomo co się dzieje):

możemy rozwinąć kolejny region i zobaczyć pełnego loga z procesu przywracania konfiguracji z kopii

oczywiście wpisujemy hasło poprawnie, do skutku i dążymy do takiego efektu:

Istotne jest tu to, że my hasła które było użyte do szyfrowania kopii nie znamy. To Wy robiąc kopie szyfrujecie ją hasłem (które nigdy nie jest do nas przesyłane), taki jest sens tego szyfrowania inaczej mogli byśmy rozpakować wasze konfiguracje i zobaczyć hasła itd…
Czyli tylko użytkownik który zna hasło, może rozpakować swoją kopię podając hasło. My tu możemy pokazać tylko logi z procesu przywracania ustawień z kopii, żeby było wiadomo czy wszystko poszło OK.

2. Integracja SUPLA

Potwierdziliśmy z Przemkiem z SUPLA, że MQTT wchodzi u nich na produkcje, instalacja trwa od wczoraj.

Oficjalnie zaznaczamy wcześniejszą integrację jako przestarzałą i dostarczamy nową/oficjalną, która lada chwila powinna działać z produkcyjnymi serwerami SUPLA.

2 polubienia

U mnie jeszcze się nie pojawiła nowa wersja ?
image

A w Logach
Logger: homeassistant.components.ais_updater
Source: components/ais_updater/init.py:612
Integration: AIS Updater (documentation, issues)
First occurred: 14:07:17 (2 occurrences)
Last logged: 14:07:46

Received invalid JSON from AIS dom Update

tak cały czas “Wersja. Otrzmyano nieprawidłową odpowiedz z usługi AIS dom”

U mnie podobny komunikat z tym, że na wersji 2021.2.3b4 i nie doinstalowała się nowsza
wersja androida.
wersja logger

@begginer @Michal.S @Cezary.K
:+1:

dzięki za info, widzę na podstawie zrzutu gdzie jest błąd

image

żeby poszło wpiszczcie coś takiego w konsoli:

echo "21.02.03" > /data/data/pl.sviete.dom/files/home/AIS/.ais_apt

a potem normalna aktualizacja,

PS
my już poprawiamy to po stronie naszego serwisu do aktualizacji, żeby nie robił takich podwojonych numerów …

cat /data/data/pl.sviete.dom/files/home/AIS/.ais_apt
21.02.03 21.02.03

Potwierdzam że poszło :slight_smile:
Dostępna jest aktualizacja. Wersja Darek beta. Aktualizacja może potrwać 20 minut. Poczekaj.

1 polubienie

Kolejna BETA wydana

image

Nie ma już nowych rzeczy tylko drobne poprawki.

1. poprawiliśmy problem z podwajaniem numeru wersji Linux

gdyby ktoś nadal nie mógł zaktualizować i miał coś takiego jak na obrazku poniżej
image

to trzeba w konsoli wpisać komendę

echo "21.02.03" > /data/data/pl.sviete.dom/files/home/AIS/.ais_apt

następnie wrócić do aplikacji i aktualizacja będzie już OK
W kolejnej wersji dodaliśmy zabezpieczenie przed taką sytuacją.

2. Dodaliśmy komunikat o konieczności aktualizacji do LTS

image

to się pojawi każdemu kto będzie próbował aktualizować bramkę nie mając Pythona w wersji 3.9

3. Integracja z SUPLA MQTT

Aktualizacja serwerów SUPLA jeszcze trwa, ale jeżeli Twój serwer został już zaktualizowany to powinna już działać integracja z produkcyjnymi serwerami SUPLA.

Robimy to tak:

  1. Integracja

  2. Zatwierdzenie przejścia do logowania w SUPLA

  3. Doda się automatycznie MQTT most i sensor pokazujący jego status

  4. Możemy dodać do interfejsu użytkownika informacje o statusie połączenia

Widać tam ilość otrzymanych od SUPL-a wiadomości, te pierwsze wiadomości to komunikaty które opisują urządzenia - MQTT discovery.
Na podstawie tych komunikatów w systemie dodadzą się urządzenia MQTT SUPLA.
Przełączniki i czujniki z SUPLA Cloud pojawią się w integracji MQTT:

2 polubienia

@jolka sprawdźcie proszę co się stało z serwerem ftp. Nie mogę się połączyć lokalnie, a klient ftp pokazuje, że bramka jest offline. Sprawdziłem już wszystko, router, zaporę sieciową na Windows i oprogramowaniu antywirusowym bez powodzenia.
image
image

zobacz bez portu

ftp://[ip-bramki]

u nas działa

gdyby ktoś miał jakieś problem z SUPL-a to dajcie znać,

opiszcie jaką wersję macie i co jest w sensorze sensor.supla_connection_status

Też nie działa…Coś się porobiło choć nic nie zmieniałem…będę musiał zrobić reset…logi pokazują próbę połączenia, ale do połączenia nie dochodzi…
image
image

sprawdziliśmy na kilku bramkach - działa OK
zarówno bez portu (na standardowym 21) i na 1024
image

inna sprawa, że to z Linux-a robimy, był kiedyś jakiś problem z Windows i zostało to dokładnie opisane w dokumentacji - upewnij się, że robisz tak jak w opisie:

@jolka Robię wszystko zgodnie z opisem
image
image

Już zgłupiałem…łączyłem się tysiące razy bez problemu, a teraz nie mogę…dziwne, że w logach widać próbę połączenia, ale mimo to się nie łączy…