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/