Kurs Home Assistant od Zera

Pozycja 0-100% w Shelly i boneIO: Calibration, drift, resynchronization i zachowanie po restarcie

Pozycja 0-100% w Shelly i boneIO: Calibration, drift, resynchronization i zachowanie po restarcie

Porównaj pozycję w Shelly i boneIO. Rozpoznaj dryf, wykonaj bezpieczną resynchronizację i sprawdź zachowanie po zaniku zasilania.

Home Assistant LAB · Dom w praktyce · Rolety zewnętrzne · Lekcja 17

Position 0-100% w Shelly i boneIO: Calibration, drift, resynchronization i zachowanie po restarcie

Shelly i boneIO inaczej wyznaczają pozycję, ale w obu przypadkach procent może z czasem odpłynąć. Uczę się rozpoznać dryf, wykonać pełny przejazd referencyjny i ocenić stan po restarcie. Automatyzacja nie powinna wymagać laboratoryjnej dokładności tam, gdzie wystarczy bezpieczny przedział.

Dlaczego ten etap jest ważny

Dwa systemy mogą pokazywać ten sam suwak 0-100%, ale liczyć pozycję inaczej. Rozumienie open-loop, reference move i time based cover jest konieczne, zanim pozycja stanie się wejściem do automatyki słonecznej.

W pełnej lekcji zrobisz to krok po kroku

Najpierw ustalamy wspólną skalę

Nazwy fully closed i fully open zostawiamy po angielsku, bo właśnie tak występują w dokumentacji technicznej. W treści kursu zawsze dopowiadamy po polsku, co użytkownik ma zobaczyć fizycznie.

Shelly: Reference Move naprawia drift

Rozwiązanie producenta jest proste: wykonaj pełne Open albo Close aż do fizycznego punktu końcowego. Po dojściu do fully open lub fully closed Shelly odzyskuje znany reference point i ponownie może poprawnie śledzić pozycję.

boneIO: Time Based Cover ma zawsze assumed position

W standardowej konfiguracji boneIO używamy ESPHome Time Based Cover. Oficjalna dokumentacja ESPHome mówi wprost: ten komponent nie ma position feedback. Aktualna pozycja jest przybliżana na podstawie czasu, przez jaki roleta poruszała się w danym kierunku.

Dlaczego nie dodajemy has_built_in_endstop: true

ESPHome ma również opcję has_built_in_endstop, ale świadomie jej tutaj nie włączamy. Zmienia ona zachowanie Time Based Cover tak, że po zakończeniu pełnego duration nie wykonuje stop_action. Nasz obecny projekt boneIO został sprawdzony z normalnym stop_action wyłączającym oba przekaźniki.

Co się dzieje po node reboot boneIO

ESPHome dokumentuje, że stan Time Based Cover może zostać przywrócony po node reboot. Komponent próbuje odtworzyć zapisany state. To wygodne, ale nadal nie oznacza, że po restarcie urządzenie fizycznie odczytuje położenie pancerza. Jeżeli restart nastąpił, gdy wszystko stało i nikt nie ruszał rolety poza boneIO, odtworzona Position zwykle pozostaje użyteczna. Jeżeli zasilanie zniknęło podczas ruchu albo mechanika została zmieniona w sposób, którego komponent nie zna, wykonujemy Resynchronization do końca zakresu przed poleganiem na 25%, 50% czy 75%.

Nie poprawiamy open_duration po jednym niedokładnym 50%

Jeśli pozycja po wielu ruchach częściowych jest przesunięta, najpierw wykonujemy Resynchronization. open_duration i close_duration zmieniamy dopiero wtedy, gdy po pełnym reference move kolejne testy nadal pokazują systematyczny błąd czasu.

Documentation used for this lesson

Stan weryfikacji dokumentacji: 10 sierpnia 2026. English technical names pozostawiono zgodnie z dokumentacją producentów. Instrukcje wykonawcze i objaśnienia są po polsku.

Pełna wersja zawiera
  • Shelly Calibration kontra ESPHome Time Based Cover
  • Drift po partial moves
  • Reference move i resynchronization po restarcie
  • Najpierw ustalamy wspólną skalę
  • Shelly: Calibration daje Position Control
  • Shelly nie ma enkodera pozycji
  • Shelly: dlaczego pojawia się drift
  • Shelly: Reference Move naprawia drift
  • Shelly po zaniku zasilania: Calibration może zostać, Position może zniknąć
  • Kiedy Shelly naprawdę wymaga Recalibration
  • boneIO: Time Based Cover ma zawsze assumed position
  • Co dokładnie robi open_duration i close_duration
  • boneIO również może mieć drift
  • Dodajemy manual_control: true do boneIO
  • Dlaczego nie dodajemy has_built_in_endstop: true
  • Włączamy manual_control kolejno dla R01-R08
Jak pracujemy w pełnej wersji

Nie przeskakujemy od teorii prosto do gotowego efektu. Zaczynamy od Shelly Calibration kontra ESPHome Time Based Cover, następnie porządkujemy Drift po partial moves i dopiero później przechodzimy do Reference move i resynchronization po restarcie. W praktycznym systemie rolet kolejność ma znaczenie: błąd z początku konfiguracji może wyglądać jak problem Home Assistant dopiero kilka etapów później. Dlatego materiał pokazuje nie tylko co ustawić, ale również po czym rozpoznać poprawny rezultat i kiedy zatrzymać się przed następnym krokiem.

Pełna lekcja łączy wykonanie z diagnostyką. Po drodze wracamy do takich punktów jak Najpierw ustalamy wspólną skalę oraz Shelly: Calibration daje Position Control. Nie zakładamy, że identyczne ustawienie będzie poprawne w każdym domu. Tam, gdzie wynik zależy od napędu, instalacji, kierunku elewacji, czasu ruchu lub zachowania domowników, dostajesz procedurę pomiaru i strojenia zamiast jednej „magicznej” liczby do skopiowania.

Na końcu etap musi dać się zweryfikować. Jeśli wynik jest inny niż opisany, pełna wersja prowadzi przez sprawdzenie przyczyny przed dołożeniem kolejnej warstwy. Dzięki temu następne lekcje opierają się na sprawdzonym fundamencie, a nie na przypadkowo działającej konfiguracji, która psuje się przy pierwszym restarcie, zmianie pogody albo użyciu fizycznego przycisku.

Co jeszcze sprawdzamy w praktyce

Wartość 50% na ekranie wygląda bardzo precyzyjnie, ale sama liczba nie jest dowodem fizycznej pozycji. Pełna lekcja pokazuje, jak odróżnić utratę punktu odniesienia od konieczności wykonania pełnej recalibration, kiedy wystarczy reference move w Shelly i jak pełny przejazd może ponownie zsynchronizować Time Based Cover w boneIO. To przygotowanie jest konieczne przed zacienianiem na 35% czy 45%, ponieważ późniejsze automatyzacje będą zakładały, że pozycja procentowa ma praktyczne znaczenie.

Efekt po zakończeniu lekcji

Rozumiesz, co naprawdę oznacza Position 0-100% w obu architekturach. Potrafisz rozpoznać Current position unknown w Shelly, wykonać reference move, wykryć drift po wielu partial moves oraz przeprowadzić resynchronization boneIO. Dodatkowo ustawisz manual_control w Time Based Cover tak, aby pełny Open lub Close mógł ponownie nauczyć komponent znanego końca zakresu.

Chcesz zbudować ten etap razem z kursem?

Ta lekcja jest częścią kursu Smart Home od Zera na platformie MarkLabs E-Learning. Pełna wersja prowadzi przez konfigurację, testy, diagnostykę i przypadki awaryjne bez zostawiania Cię z poleceniem „skonfiguruj to sam”.

Kup dostęp do kursu: 29 zł
Dożywotni dostęp | Wszystkie lekcje | Bez subskrypcji
Zobacz pełny kurs na marklabs.pl/e-learning/
🔒

Pełna treść dostępna po zakupie kursu

Za symboliczne 29 zł zyskujesz dostęp do 200+ stron praktycznej wiedzy o Home Assistant — wszystkich lekcji, przykładów i aktualizacji.

  • Dożywotni dostęp do całego kursu
  • Nowe lekcje bez dodatkowych opłat
  • Bez reklam i bez abonamentu

Nikt nie jest nieomylny. Coś nie gra w tej lekcji? Zgłoś błąd