
Shelly Motion 2 (SHMOS-02) to bateryjny (Li-ion 6500 mAh, ładowalny przez USB-C) czujnik ruchu PIR Wi-Fi. TapHome komunikuje się z urządzeniem przez MQTT — zalecany protokół dla bateryjnych urządzeń Shelly, ponieważ czujnik przez większość czasu jest w trybie uśpienia i publikuje dane tylko przy zdarzeniach wybudzenia (wykrycie ruchu lub okresowy timer).
W odróżnieniu od przekaźnikowych urządzeń Gen1 Shelly, które publikują indywidualne topiki stanów, Motion 2 publikuje pełny stan za pośrednictwem jednego payloadu JSON /info przy wybudzeniu. Skrypt nasłuchujący TapHome parsuje ten JSON w celu wyodrębnienia stanu ruchu, natężenia oświetlenia, temperatury, poziomu baterii i atrybutów diagnostycznych.
Szablon obsługuje do 5 czujników Shelly Motion 2 na moduł. Każda instancja czujnika jest rozróżniana zmienną niestandardową sensorN_topic wskazującą na MQTT Client ID urządzenia.
Konfiguracja
Device ID
Każdy Shelly Motion 2 ma unikalne MQTT Device ID w formacie shellymotion2-<MAC>, gdzie <MAC> to pełny 12-znakowy adres MAC w formacie szesnastkowym wielkimi literami (np. shellymotion2-AABBCCDDEEFF).
Device ID można znaleźć:
- Na etykiecie urządzenia (adres MAC)
- W interfejsie webowym Shelly: Settings → Device Info
- Przez API:
GET http://<device-ip>/settings→ poledevice.hostname
Konfiguracja szablonu
Po zaimportowaniu szablonu w TapHome:
- Otwórz moduł Shelly Motion 2 MQTT
- Ustaw MQTT Broker IP i Port (domyślnie
1883) - Dla każdej instancji czujnika ustaw zmienną niestandardową
sensorN_topicna Device ID odpowiedniego Shelly Motion 2 (np.shellymotion2-AABBCCDDEEFF)
Moduł subskrybuje shellies/#, a skrypty nasłuchujące filtrują wiadomości według skonfigurowanego prefiksu topiku.
Konfiguruj tylko te sloty czujników, których faktycznie używasz. Nieskonfigurowane sloty (z domyślną wartością
shellymotion2-deviceid) wyświetlą komunikat błędu wzywający do ustawienia prawidłowego topiku.
Ustawienia czujnika ruchu
Shelly Motion 2 ma kilka konfigurowalnych parametrów wpływających na zachowanie detekcji. Konfiguruje się je bezpośrednio na urządzeniu przez jego interfejs webowy (http://<device-ip>/), nie przez TapHome:
| Parametr | Zakres | Opis |
|---|---|---|
| Czułość | 1–256 | Czułość wykrywania ruchu (niższa = bardziej czuły) |
| Czas ślepy | 1–1440 min | Minuty ignorowania ruchu po wykryciu |
| Liczba impulsów | 1–4 | Kolejne ruchy wymagane do potwierdzenia |
| Tryb pracy | ANY / DARK / TWILIGHT / BRIGHT | Kiedy detekcja jest aktywna na podstawie oświetlenia otoczenia |
| Czas uśpienia | 0–86400 s | Okresowy interwał wybudzenia w sekundach |
Krótsze czasy uśpienia zwiększają aktualność danych, ale zmniejszają żywotność baterii. Domyślny interwał wybudzenia jest wystarczający dla większości przypadków użycia. Zdarzenia ruchu zawsze wywołują natychmiastowe wybudzenie niezależnie od timera uśpienia.
Możliwości urządzenia
Wykrywanie ruchu
Każda instancja czujnika jest mapowana jako urządzenie Reed Contact z możliwością „security" w TapHome. Stan ruchu jest parsowany z topiku shellies/<id>/info — konkretnie pole $.sensor.motion w payloadzie JSON:
true→ Alarm (wykryto ruch)false→ OK (brak ruchu)
Czujnik budzi się i publikuje swój stan po wykryciu ruchu (zgodnie z ustawieniami czułości, czasu ślepego i liczby impulsów), a także podczas okresowych interwałów wybudzenia.
Atrybuty serwisowe
Każda instancja czujnika udostępnia 14 atrybutów serwisowych na poziomie urządzenia, wszystkie parsowane z payloadu JSON /info:
| Atrybut | Pole źródłowe | Opis |
|---|---|---|
| Adres IP | $.wifi_sta.ip | Adres IP Wi-Fi czujnika |
| Adres MAC | $.mac | Sprzętowy adres MAC |
| Bateria | $.bat.voltage, $.bat.value | Napięcie i procent baterii (np. 3,83V (97%)) |
| Sygnał | $.wifi_sta.rssi | Siła sygnału Wi-Fi w dB |
| Cloud włączony | $.cloud.enabled | Czy Shelly Cloud jest włączony |
| Połączony z cloudem | $.cloud.connected | Czy urządzenie jest połączone z Shelly Cloud |
| Czas urządzenia | $.time | Bieżący czas na urządzeniu |
| Natężenie oświetlenia | $.lux.value | Poziom oświetlenia otoczenia w luksach |
| Temperatura | $.tmp.value, $.tmp.units | Wewnętrzny odczyt temperatury |
| Czas pracy | $.uptime | Czas od ostatniego restartu |
| Wersja FW | $.fw_info.fw | Aktualna wersja firmware |
| Aktualizacja FW | $.update.has_update | Czy dostępna jest aktualizacja firmware |
| Wolna RAM | $.ram_total, $.ram_free | Dostępna pamięć |
| Wolne miejsce FS | $.fs_size, $.fs_free | Dostępna przestrzeń systemu plików |
Ostrzeżenie o niskim poziomie baterii jest automatycznie wywoływane, gdy poziom baterii spadnie poniżej 20%.
Dodatkowe możliwości (niezaimplementowane)
Shelly Motion 2 publikuje również wykrywanie wibracji/ingerencji ($.sensor.vibration, konfigurowalna czułość 0–80), kategorię oświetlenia ($.lux.illumination — dark/twilight/bright) oraz stan ładowarki USB ($.charger) przez payload JSON /info. Status online/offline jest dostępny przez topik LWT (shellies/<id>/online). Te możliwości są dostępne w wyjściu MQTT urządzenia, ale nie są mapowane w bieżącym szablonie TapHome. Mogą zostać dodane w przyszłej aktualizacji szablonu.
Rozwiązywanie problemów
Czujnik nie raportuje danych
- Sprawdź, czy Shelly Motion 2 jest połączony z Wi-Fi i MQTT jest włączone w ustawieniach urządzenia
- Sprawdź, czy zmienna niestandardowa
sensorN_topicdokładnie odpowiada Device ID (np.shellymotion2-AABBCCDDEEFF) - Użyj klienta MQTT (np. MQTT Explorer) do subskrypcji
shellies/#i sprawdź, czy czujnik publikuje wiadomości przy wybudzeniu - Motion 2 jest zasilany bateryjnie i publikuje dane tylko przy wybudzeniu — wywołaj zdarzenie ruchu, aby wymusić wybudzenie
Stan ruchu nie aktualizuje się
- Sprawdź, czy soczewka czujnika PIR nie jest zasłonięta i czujnik jest zamontowany na zalecanej wysokości (1,8–2,5 m)
- Jeśli czujnik został niedawno zainstalowany, sprawdź ustawienia czułości i czasu ślepego w interfejsie webowym urządzenia — wysoki czas ślepy oznacza, że czujnik ignoruje ruch przez dłuższy okres po każdym wykryciu
- Dostosuj liczbę impulsów, jeśli czujnik wyzwala się zbyt rzadko (niższa = mniej kolejnych ruchów wymaganych)
- Sprawdź w TapHome stan urządzenia Reed Contact — 1 = wykryto ruch (alarm), 0 = brak ruchu (OK)
Bateria szybko się rozładowuje
- Shelly Motion 2 używa wbudowanego akumulatora Li-ion (6500 mAh) ładowanego przez USB-C, z typowym aktywnym czasem pracy 12–18 miesięcy
- Częste wybudzenia z powodu wysokiej aktywności ruchu lub krótkich interwałów uśpienia szybciej rozładowują baterię
- Włączenie SSL na MQTT znacząco zmniejsza żywotność baterii — używaj zwykłego MQTT (port 1883) w zaufanej sieci lokalnej
- Zapewnij silny sygnał Wi-Fi w lokalizacji czujnika — słaby sygnał oznacza dłuższe czasy połączenia przy każdym wybudzeniu
Urządzenia Gen1 Shelly nie obsługują MQTT przez TLS bez znaczącego wpływu na baterię. Komunikacja między czujnikiem a brokerem MQTT jest zazwyczaj niezaszyfrowana (zwykły MQTT, port 1883). Upewnij się, że broker MQTT znajduje się w zaufanej sieci lokalnej.
Włączenie MQTT na urządzeniach Gen1 Shelly wyłącza łączność Cloud. MQTT i Cloud nie mogą współistnieć na tym samym urządzeniu.