Home Assistant nie potrzebuje jednej, obejmującej cały dom liczby określającej współbieżność; każda automatyzacja wymaga takiego poziomu nakładania się uruchomień, który odpowiada częstotliwości wyzwalania i czasowi trwania akcji, bez naruszania kolejności.
Dziesięć pomieszczeń i dwieście encji nie oznacza dziesięciu ani dwustu równoległych uruchomień automatyzacji. Istotna jest wartość dla danego przepływu pracy: jak często może się uruchamiać, jak długo jedno uruchomienie pozostaje aktywne, czy nowsze uruchomienia zastępują wcześniejsze oraz ile równoległej pracy może obsłużyć urządzenie lub usługa docelowa. Zacznij od jednego uruchomienia, gdy kolejność ma znaczenie, a współbieżność zwiększaj tylko wtedy, gdy rzeczywiście nakładające się zadania są niezależne i wrażliwe na terminy.
Oszacuj wymagany poziom nakładania się uruchomień na podstawie częstotliwości wyzwalania i czasu trwania
Pierwsze oszacowanie planistyczne to iloczyn częstotliwości napływu zdarzeń i średniego czasu aktywności. Jeśli automatyzacja uruchamia się raz na dziesięć sekund i zwykle kończy działanie w ciągu sekundy, typowe zapotrzebowanie na nakładanie się uruchomień jest znacznie mniejsze niż jeden. Jeśli jednak serie zdarzeń generują pięć wyzwaleń na sekundę, a każde uruchomienie czeka przez dwie sekundy, jednoczesne zapotrzebowanie może wzrosnąć nawet do około dziesięciu, chyba że przepływ pracy scala, restartuje lub kolejkue te zdarzenia.
Omówienie trybów automatyzacji Home Assistant pokazuje, dlaczego współbieżność jest wyborem dotyczącym zachowania, a nie wzorem opartym na liczbie urządzeń. Tryby pojedynczy, restart, kolejkowanie i równoległy udzielają różnych odpowiedzi na pytanie: „co powinno się stać, gdy nadejdzie kolejne wyzwolenie, zanim to uruchomienie się zakończy?”
Używaj tego wzoru wyłącznie do oszacowania obciążenia, a nie jako rekomendacji ustawienia. Skokowy napływ zdarzeń, długie oczekiwanie, potwierdzenia urządzeń i limity czasu po błędach mogą sprawić, że najwolniejsze uruchomienia będą trwały znacznie dłużej niż średnia. Zapisuj także czas trwania dla dziewięćdziesiątego piątego percentyla lub najgorszy typowy czas, ponieważ współbieżność jest zajmowana przez uruchomienia pozostające aktywne najdłużej.
Kolejność i idempotentność wyznaczają bardziej restrykcyjny limit niż procesor
Niektóre działania obejmujące cały dom są logicznie niebezpieczne przy wykonywaniu równoległym, nawet gdy serwer ma dużo wolnych zasobów procesora. Zautomatyzowane rolety, zamki drzwi, regulacja głośności multimediów, zawory nawadniania i skrypty stanowe mogą otrzymać sprzeczne polecenia, jeśli kilka niezależnych uruchomień będzie się nakładać. W takich przypadkach kolejkowanie lub restart może być poprawniejszy niż wykonywanie równoległe.
Praktyczne wyjaśnienie automatyzacji Home Assistant opisuje łańcuch wyzwalacz–warunek–akcja jako deterministyczny model sterowania. Współbieżność powinna zachowywać ten determinizm, a nie maksymalizować liczbę kopii, które host może technicznie zaplanować.
Zastanów się, czy dwa uruchomienia mogą wykonać się w dowolnej kolejności i nadal doprowadzić do tego samego bezpiecznego rezultatu. Jeśli nie, nie zwiększaj równoległości w celu usunięcia opóźnień; skróć czas działania, scal dane wejściowe albo wprowadź serializację po stronie urządzenia docelowego. Większa współbieżność nie zwiększa przepustowości, gdy urządzenie docelowe samo przyjmuje jednocześnie tylko jedno istotne polecenie.
Usługi downstream wyznaczają użyteczny limit
Nawet niezależne uruchomienia ostatecznie korzystają ze skończonych zasobów: koordynatora Zigbee, brokera MQTT, API dostawcy, usługi powiadomień, bazy danych, kanału Wi‑Fi lub urządzenia fizycznego. Niezależna analiza współbieżności Home Assistant wskazuje, że instancje automatyzacji są zadaniami, a akcje usług mogą być wstrzymywane podczas zewnętrznych operacji wejścia-wyjścia, więc planowanie większej liczby uruchomień nie sprawi, że system downstream będzie przetwarzać je szybciej. Dodatkowe uruchomienia mogą jedynie powodować ponowienia, kolejkowanie, ograniczenia częstotliwości lub dłuższy czas ukończenia.
ZimaSpace opisuje tę samą granicę w artykule o skalowaniu pracowników sterowanym zdarzeniami: głębokość kolejki może uzasadniać zwiększenie liczby pracowników tylko do momentu, gdy ścieżka downstream stanie się zasobem ograniczającym. Współbieżność automatyzacji Home Assistant powinna zatrzymać się na takiej samej granicy usługi.
W przypadku serii lokalnych poleceń oświetlenia zmierz, ile jednoczesnych wywołań usług koordynator może obsłużyć bez opóźnionych potwierdzeń lub ponowień. W przypadku powiadomień przestrzegaj limitów częstotliwości dostawcy. W przypadku działań w chmurze uwzględnij zachowanie limitów czasu. Prawidłowe maksimum to najmniejszy limit narzucony przez poprawność działania, wydajność downstream i wymagany czas odpowiedzi — nie największa liczba uruchomień, jaką procesor potrafi zainicjować.
Używaj progów zamiast uniwersalnej liczby
Pozostaw współbieżność na poziomie jednego uruchomienia w przypadku przepływów pracy, w których nowsze wyzwolenie zastępuje wcześniejszą intencję lub trzeba zachować kolejność. Użyj krótkiej kolejki, gdy każde zdarzenie musi ostatecznie zostać wykonane, ale cel działa szeregowo. Uruchomienia równoległe stosuj wyłącznie do niezależnych i idempotentnych działań, których usługa downstream ma potwierdzony zapas wydajności. Zwiększaj limit najwyżej o jeden krok, obserwując wiek najstarszego uruchomienia i opóźnienie ukończenia.
Przypadek z forum Home Assistant dotyczący spowalniania systemu przez integracje chmurowe pokazuje, dlaczego długie oczekiwanie na zewnętrzne usługi może zwiększać liczbę aktywnych zadań. To wyraźne ostrzeżenie, by nie dobierać maksimum wyłącznie na podstawie działania przy sprawnym połączeniu z internetem, gdy ta sama automatyzacja zawiera wywołania wychodzące do internetu.
Praktyczna zasada zatrzymania jest następująca: brak utraconych wymaganych zdarzeń, brak kolejki starszej niż termin akceptowalny dla domowników, brak naruszeń kolejności po stronie celu oraz brak rosnącego zaległego obciążenia podczas najgorszej typowej serii zdarzeń. Jeśli te warunki są spełnione, większa współbieżność nie przyniesie użytkownikowi żadnej korzyści. Jeśli nie są, najpierw skróć wolny etap lub oddziel niezależne zadania; maksimum zwiększaj tylko wtedy, gdy pozostałe nakładanie się uruchomień jest rzeczywiście bezpieczne.
Przeprowadź test serii zdarzeń przed zmianą limitu
Utwórz reprezentatywną serię zdarzeń zamiast syntetycznej nieskończonej pętli. Zapisz liczbę wyzwoleń, aktywne uruchomienia, uruchomienia w kolejce, wiek najstarszego uruchomienia, czas trwania akcji, potwierdzenia urządzenia, obciążenie procesora, opóźnienie pętli zdarzeń, jeśli jest dostępne, oraz błędy integracji docelowej. Powtórz test z jednym wyższym i jednym niższym ustawieniem współbieżności, zachowując tę samą serię danych wejściowych.
Niedawny artykuł o architekturze local-first podkreśla, że niezawodność Home Assistant zależy od utrzymywania ograniczonych krytycznych ścieżek sterowania, zamiast dodawania złożoności wszędzie. Współbieżność jest jedną z takich granic: powinna absorbować typowe nakładanie się uruchomień, nie zamieniając pojedynczej lawiny zdarzeń w konflikt obciążający cały dom.
Wybierz najniższe ustawienie, które kończy wymagane zadania w wyznaczonym terminie i przetrwa serię zdarzeń bez rosnącej kolejki. W zależności od przepływu pracy może to być jedno uruchomienie, krótka kolejka lub niewielka liczba uruchomień równoległych. Powtórz test po dodaniu wywołań chmurowych, długich opóźnień lub nowych czujników o wysokiej częstotliwości, ponieważ zmiany te wpływają na czas trwania i częstotliwość napływu, nawet gdy liczba urządzeń pozostaje taka sama.
FAQ
Czy domyślny limit 10 to zalecany poziom współbieżności dla każdej automatyzacji?
Nie. Domyślny limit jest mechanizmem bezpieczeństwa, a nie rekomendacją dotyczącą doboru rozmiaru. Wiele automatyzacji działa poprawnie przy jednym uruchomieniu, podczas gdy inne wymagają mniejszej lub większej, ograniczonej kolejki — zależnie od obciążenia i systemu downstream.
Czy tryb równoległy przyspiesza Home Assistant?
Tylko wtedy, gdy uruchomienia są niezależne, a wąskie gardło może przetwarzać je jednocześnie. Jeśli cel działa szeregowo, ma ograniczenia częstotliwości lub wymaga zachowania kolejności, tryb równoległy może zwiększyć oczekiwanie i liczbę błędów zamiast skrócić czas odpowiedzi.
Czy każde pomieszczenie powinno mieć własną automatyzację, aby zmniejszyć współbieżność?
Niekoniecznie. Podział logiki może ułatwić zarządzanie, ale może też utworzyć więcej niezależnych nadawców sterujących tym samym urządzeniem lub pomocnikiem. Struktura powinna wynikać z granic sterowania i wymagań dotyczących kolejności, a nie z dążenia do maksymalizacji liczby automatyzacji.
Centrum Technologii i Sztucznej Inteligencji
Więcej do przeczytania

Dlaczego architektura Home Assistant zmienia się, gdy serwer domowy obsługuje więcej usług?
Więcej usług zmienia architekturę Home Assistanta, gdy dodają współdzielony stan, kolejki, urządzenia, cykle aktualizacji lub domeny awarii — a nie tylko więcej kontenerów.

Jak mierzyć wydajność Home Assistant, nie myląc pamięci podręcznej z możliwościami sprzętu
Ciepły wynik potwierdza ponowne wykorzystanie, a nie wydajność. Zmierz zimny start, ciepły stan ustalony, powtarzające się obciążenie, opóźnienie ogona oraz pierwszy zasób, który osiąga...

Dlaczego Home Assistant może działać mniej responsywnie na niektórych klientach?
Różni klienci mogą działać wolniej nawet przy tym samym rdzeniu, ponieważ wydajność renderowania, stan pamięci podręcznej, trasa i koszt aktualizacji na żywo występują poza...

