TapHome

Aqara Czujnik Ruchu (RTCGQ11LM)

Packet Parser → MQTT
Dodane przez
Ostatnia aktualizacja: 06. 2026

Wymaga zewnętrznej bramki

Zigbee2MQTT Zigbee2MQTT bridge (any supported Zigbee coordinator — e.g. Sonoff ZBDongle-E/P, CC2652, ConBee II) — strona produktu

Aqara Czujnik Ruchu (RTCGQ11LM)

Aqara RTCGQ11LM (na niektórych rynkach sprzedawany jako Xiaomi Mi Motion Sensor) to kompaktowy bateryjny czujnik obecności Zigbee 3.0 PIR zasilany ogniwem guzikowym CR2450. Komunikuje się z TapHome pośrednio — czujnik jest parowany z koordynatorem Zigbee2MQTT (np. Sonoff ZBDongle-P/E lub stick oparty o CC2652), który tłumaczy wiadomości Zigbee na tematy MQTT. TapHome subskrybuje te tematy MQTT przez moduł PacketParser MQTT.

Szablon mapuje czujnik jako binarne wejście obecności (ruch / brak ruchu) i udostępnia procent baterii, surowe napięcie baterii oraz jakość połączenia Zigbee jako atrybuty usługi.

Konfiguracja

Konfiguracja Zigbee2MQTT

Przed zaimportowaniem szablonu do TapHome, RTCGQ11LM musi być sparowany z koordynatorem Zigbee2MQTT:

  1. Otwórz interfejs webowy Zigbee2MQTT i włącz tryb parowania (Permit join)
  2. Na RTCGQ11LM przytrzymaj przycisk reset przez około 5 sekund, aż niebieska dioda LED zacznie migać
  3. Urządzenie pojawi się na liście urządzeń Zigbee2MQTT z adresem IEEE (np. 0x00158d00036cd3e2). Opcjonalnie w ustawieniach urządzenia w interfejsie Zigbee2MQTT przypisz mu friendly name.

Jeśli parowanie się nie powiedzie, spróbuj pojedynczego krótkiego naciśnięcia zamiast długiego przytrzymania. W koordynatorach opartych na CC2531 zwykle pomaga wyjęcie i ponowne włożenie USB sticka przed restartem Zigbee2MQTT.

Zmienna modułu

Po zaimportowaniu szablonu w TapHome ustaw zmienną niestandardową XiaomiRTCGQ11LM, która identyfikuje urządzenie na brokerze MQTT:

ZmiennaOpisJak uzyskaćPrzykład
XiaomiRTCGQ11LMfriendly name Zigbee2MQTT lub adres IEEE tego RTCGQ11LMZigbee2MQTT web UI → Devices → znajdź RTCGQ11LM → skopiuj IEEE lub friendly name0x00158d00036cd3e2

Domyślny placeholder w szablonie (0x00158d00036cd3e2) to tylko przykład i musi zostać zastąpiony rzeczywistym adresem twojego czujnika. Skrypt nasłuchu subskrybuje zigbee2mqtt/{XiaomiRTCGQ11LM} i parsuje payload JSON stanu.

Użycie friendly name (np. korytarz_ruch) zamiast surowego adresu IEEE czyni konfigurację bardziej czytelną i pozostaje stabilne nawet przy ewentualnym ponownym parowaniu czujnika.

Możliwości urządzenia

Wykrywanie ruchu

Szablon mapuje czujnik jako urządzenie Reed Contact w TapHome. Nazwa „reed contact" to tylko konwencja szablonu; zachowanie to standardowe wejście obecności PIR. Zdarzenia ruchu przychodzą na temat zigbee2mqtt/{id} w formacie JSON i są mapowane na stan liczbowy:

Payload Zigbee2MQTTWartość TapHome
"occupancy": true1 (ruch)
"occupancy": false0 (spoczynek)
inne / brakNaN

Pierwsza wiadomość occupancy: true jest publikowana dopiero przy pierwszym wykryciu ruchu po dołączeniu urządzenia do sieci — nie przy zakończeniu parowania.

Sprzęt RTCGQ11LM wymusza 60-sekundową strefę martwą po każdym wykryciu: po zgłoszeniu ruchu czujnik ignoruje kolejne ruchy przez 60 sekund. Opcję occupancy_timeout w Zigbee2MQTT należy więc pozostawić na domyślnych 90 s (lub większej wartości) — wartości poniżej 60 s wygenerowałyby wiadomość occupancy: false jeszcze podczas obecności osoby. Tego ograniczenia nie da się obejść bez modyfikacji sprzętowej.

Bateria, napięcie i jakość połączenia

Instancja czujnika udostępnia trzy atrybuty usługi tylko do odczytu, parsowane z tej samej wiadomości JSON stanu:

  • Battery — pozostały procent baterii (0–100 %), formatowany jako "N%". Raport pierwszej wartości po sparowaniu może zająć do 24 godzin. Dopóki nie przyjdzie pierwsza wiadomość, wyświetlane jest "-".
  • Voltage — surowe napięcie baterii w miliwoltach (typowo ~3000 mV na nowym CR2450), formatowane jako "N mV". Przydatne jako niezależny wskaźnik słabej baterii — procent może wyglądać jeszcze zdrowo, gdy ogniwo jest już za słabe do niezawodnej transmisji Zigbee.
  • LinkQuality — wskaźnik jakości połączenia Zigbee (0–255 LQI), formatowany jako "N lqi". Wartości poniżej 20 zwykle oznaczają niestabilne połączenie.
Możliwości obecnie niemapowane

RTCGQ11LM przez Zigbee2MQTT publikuje także następujące encje, które szablon nie obsługuje — można je dodać rozszerzając skrypt nasłuchu w przyszłej rewizji szablonu:

  • illuminance / illuminance_lux — poziom światła otoczenia w luksach (przydatne do automatyzacji ruchu z progiem luminancji)
  • device_temperature — wewnętrzna temperatura chipu w °C (tylko diagnostyczna, nie temperatura pomieszczenia)
  • power_outage_count — licznik zdarzeń wyjęcia baterii

Temat dostępności Zigbee2MQTT (zigbee2mqtt/{id}/availability) ani opcja konfiguracyjna occupancy_timeout (zigbee2mqtt/bridge/request/device/options) nie są obsługiwane przez szablon; jako wskaźnik aktywności tego uśpionego urządzenia zaleca się LinkQuality i Battery.

Rozwiązywanie problemów

Czujnik nie raportuje żadnego stanu
  1. Sprawdź, czy RTCGQ11LM pojawia się na liście urządzeń Zigbee2MQTT z zielonym statusem.
  2. Upewnij się, że zmienna XiaomiRTCGQ11LM dokładnie odpowiada friendly name lub adresowi IEEE — przy friendly name ma znaczenie wielkość liter.
  3. Wywołaj ruch przed czujnikiem. Pierwsza wiadomość stanu jest publikowana dopiero przy pierwszym wykryciu po dołączeniu do sieci.
  4. Za pomocą klienta MQTT (np. MQTT Explorer) zasubskrybuj zigbee2mqtt/# i sprawdź, czy przy ruchu pojawiają się wiadomości na temacie zigbee2mqtt/{twoja_nazwa}.
Ruch pozostaje aktywny długo po opuszczeniu pomieszczenia

To oczekiwana 60-sekundowa strefa martwa sprzętu w połączeniu z occupancy_timeout w Zigbee2MQTT (domyślnie 90 s). Czujnik nie raportuje occupancy: false, dopóki zegar nie wygaśnie bez dalszego ruchu. Krótsze timeouty nie są niezawodne — czujnik po prostu ignoruje ruch przez pierwsze 60 s po wykryciu.

Losowe rozłączenia

Typowe przyczyny wypadania urządzeń końcowych Aqara/Xiaomi z sieci Zigbee:

  1. Słaby sygnał — sprawdź LinkQuality; wartości poniżej 20 zwykle oznaczają, że czujnik potrzebuje bliższego sieciowo zasilanego routera Zigbee.
  2. Niskie napięcie baterii — atrybut Voltage jest lepszym wskaźnikiem niż procent. Zigbee2MQTT wyraźnie zaznacza, że czujnik może wypaść z sieci nawet przy pozornie zdrowym procencie — zwracaj więc uwagę na zauważalny spadek wobec ~3000 mV nowego ogniwa i wymień CR2450, gdy połączenie zaczyna być niestabilne.
  3. Niekompatybilne routery — routery Centralite, General Electric, Iris, Ledvance, Legrand, OSRAM, Sylvania, SmartThings i Securifi są znane z „wyrzucania" starszych urządzeń Xiaomi/Aqara z mesha. Często pomaga sparowanie czujnika bezpośrednio z koordynatorem (reset czujnika tuż obok koordynatora).

Urządzenia końcowe Aqara Zigbee nie obsługują standardowego pingu w trybie availability Zigbee2MQTT i mogą błędnie wyglądać na offline mimo prawidłowej pracy. Nie polegaj na topicu availability jako wskaźniku aktywności — użyj LinkQuality i Battery jako wskaźników kondycji.

Jak zainstalować w TapHome

Wymagania wstępne

  • Bramka Zigbee z oprogramowaniem Tasmota (np. Sonoff ZBBridge, eWeLink ZB-GW03)
  • Broker MQTT działający w sieci lokalnej (wbudowany broker TapHome lub zewnętrzny)
  • TapHome CCU w tej samej sieci

TapHome ma wbudowany broker MQTT — aktywuj go w UstawieniaHardwareMQTT Broker. Nie jest potrzebne żadne dodatkowe oprogramowanie.

Krok 1 — Skonfiguruj bramkę Tasmota Zigbee

  1. Wgraj oprogramowanie Tasmota na obsługiwany koordynator Zigbee (np. Sonoff ZBBridge, eWeLink ZB-GW03)
  2. Połącz bramkę z siecią Wi-Fi przez interfejs webowy Tasmota
  3. Przejdź do ConfigurationConfigure MQTT i ustaw:
    • Host: adres IP brokera MQTT (np. 192.168.1.10)
    • Port: 1883
    • Topic: zanotuj nazwę topicu (np. tasmota_XXXXX) — będzie potrzebna przy imporcie szablonu

Szczegółowe instrukcje znajdziesz w dokumentacji Tasmota Zigbee.

Krok 2 — Importuj szablon bramki w TapHome

  1. Pobierz szablon bramki ze strony kompatybilności Zigbee2Tasmota Gateway
  2. W TapHome przejdź do UstawieniaHardwarePacket ParserImport
  3. Zaimportuj szablon z tymi parametrami:
    • MQTT Broker IP Address: adres IP brokera (np. 192.168.1.10)
    • MQTT Broker Port: 1883
    • Gateway name: topic MQTT Tasmota z kroku 1 (np. tasmota_XXXXX)

Po imporcie zobaczysz dwa urządzenia: Permit Join (przełącznik) i Devices Found (licznik).

Krok 3 — Sparuj urządzenie Zigbee

  1. W TapHome włącz przełącznik Permit Join — otworzy się 60-sekundowe okno parowania
  2. Na urządzeniu Zigbee rozpocznij procedurę parowania (zazwyczaj przytrzymaj przycisk reset przez 5 sekund, aż dioda LED zacznie migać)
  3. Obserwuj licznik Devices Found — zwiększy się, gdy nowe urządzenie się połączy
  4. Sprawdź Service Attributes bramki, aby zobaczyć ID nowego urządzenia (np. 0x1234), producenta i model
  5. Tryb parowania dezaktywuje się automatycznie po upływie limitu czasu

Krok 4 — Importuj szablon urządzenia

  1. Pobierz szablon konkretnego urządzenia z odpowiedniej strony kompatybilności
  2. Zaimportuj szablon z tymi parametrami:
    • MQTT Broker IP Address: ten sam co dla bramki
    • MQTT Broker Port: 1883
    • Gateway name: ten sam topic MQTT Tasmota co powyżej
    • Device ID: krótki adres z parowania (np. 0x1234)

Dostępne urządzenia

Aqara Motion Sensor (RTCGQ11LM) Moduł
Zmienne niestandardowe
XiaomiRTCGQ11LM (string) = 0x00158d00036cd3e2Friendly name Zigbee2MQTT lub adres IEEE (0x… 16-hex) tego RTCGQ11LM — używany jako sufiks topicu MQTT zigbee2mqtt/{this}. Domyślny placeholder musi zostać zastąpiony rzeczywistym adresem czujnika po sparowaniu.
Czujnik ruchu Kontakt reed Tylko do odczytu

Wykrywanie obecności PIR — zgłasza ruch (1) przy wykryciu, spoczynek (0) po upływie 60 s strefy martwej sprzętu i occupancy_timeout Zigbee2MQTT.

boolean JSON (PARSEJSON on occupancy key)
Atrybuty serwisowe
BateriaPozostały procent baterii (ogniwo guzikowe CR2450, 0–100 %). Formatowany jako 'N%'; raport pierwszej wartości po sparowaniu może zająć do 24 godzin.
NapięcieSurowe napięcie baterii w miliwoltach (~3000 mV na nowym CR2450). Bardziej precyzyjny wskaźnik słabej baterii niż procent.
LinkQualityWskaźnik jakości połączenia Zigbee (0–255 LQI). Wartości poniżej 20 zwykle oznaczają niestabilne połączenie i częste rozłączenia.

Czujnik ruchu

Odczyt (moduł)
# Simple HTTP Request:
# VAR response := SENDHTTPREQUEST("/example/getValue");
# IF response.IsSuccess
#  VAR content := response.Content;
#  VAR responseHeaders := response.Headers;
#  RETURN(PARSEXML(content, "//element1/value1"));
# ELSE
#  ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
#  RETURN(NaN);
# END
#
# Set Http request method, body and headers
# VAR response := SENDHTTPREQUEST("/example/getValue", "GET", "some data", "header1:value1", "header2:value2", ...);
# OR
# VAR request := HTTPREQUEST("/example/getValue", "POST", "some data");
# request.headers := { "header1:value1", "header2:value2", ...};
# request.method := "GET";
# request.data := null;
# VAR response := SENDHTTPREQUEST(request);
#
#
# Send TCP, UDP data:
# VAR data1 := BYTECOLLECTION("0a bb ea df 01");
# SENDDATA(data1);
# VAR data2 := "{\"name\":\"John\", \"age\":32}";
# SENDDATA(data2);
# VAR data3 := TOBYTES("{\"name\":\"John\", \"age\":32}", "iso-8859-1");
# SENDDATA(data3);
# Process received TCP or UDP data and set device values in the Listener script
#
#
# Download data from FTP:
# FTPDOWNLOAD("filePath");
Nasłuchiwanie
IF (COMPARE(RECEIVEDMSG.TOPIC, "zigbee2mqtt/"+ XiaomiRTCGQ11LM, CompareOptions.IgnoreCase) = 0)
    VAR value := TOSTRING(PARSEJSON(RECEIVEDMSG.PAYLOAD, "occupancy")); 
    IF (COMPARE(value, "true", CompareOptions.IgnoreCase) = 0)
        Rc := 1; 
    ELSEIF (COMPARE(value, "false", CompareOptions.IgnoreCase) = 0)
        Rc := 0;
    ELSE
        Rc := NaN;
    END   
    battery := PARSEJSON(RECEIVEDMSG.PAYLOAD,"battery", true);
    voltage := PARSEJSON(RECEIVEDMSG.PAYLOAD,"voltage", true);
    link := PARSEJSON(RECEIVEDMSG.PAYLOAD,"linkquality", true);
END;
Atrybuty serwisowe
Battery
IF(ISNAN(battery),"-",battery+"%");
Voltage
IF(ISNAN(voltage),"-",voltage+"mV");
LinkQuality
IF(ISNAN(link),"-",link+"lqi");
Połączenie: Packet Parser → MQTT
Możliwe ulepszenia (5)
  • Illuminance — illuminance / illuminance_lux JSON key (unit lx, 0+). Ambient light level reported alongside occupancy. Could drive lux-gated motion automations (e.g. only switch lights below 50 lx). Not parsed by the current listener script — would require an additional PARSEJSON call plus a service_attribute entry.
  • Device Temperature — device_temperature JSON key (unit °C). Internal chip temperature — not ambient room temperature. Useful for diagnostic alerts (overheating, direct sunlight on the sensor) but not for climate control. Not parsed by the current listener script.
  • Power Outage Count — power_outage_count JSON key (integer). Increments when the battery is removed/reinserted or the device loses power. Could detect tampering or battery swaps. Not parsed by the current listener script.
  • Availability (LWT) — online / offline string payload published by Z2M if availability is enabled globally or per device (availability: true in configuration.yaml). Could detect dropped sensors. Not subscribed by the current template.
  • Occupancy Timeout Configuration — occupancy_timeout (seconds, minimum 60, default 90) controls how long after motion the sensor waits before reporting occupancy: false. Currently set via Z2M frontend / configuration.yaml — TapHome template does not expose this as a setting and does not publish to bridge/request topics.

Źródła

Znalazłeś problem z tym szablonem urządzenia?

Napisz nam, co nie działa, czego brakuje lub jak powinien zachowywać się szablon. Twoja opinia pomaga nam utrzymać katalog dokładnym.

Zweryfikowane przez TapHome

Chcesz tego użyć w swoim TapHome Core?

Otwórz ten szablon w portalu klienta, aby zastosować go w swoim domu, lub zaproponuj modyfikację i wyślij ją z powrotem do katalogu.

Otwórz w portalu