Czujka ruchu aqara - wymuszenie zmiany stanu

Cześć,
poniżej ss prostego flow

pytanie czy istnieje sposób aby faktycznie zmienić stan czujki ruchu z ON na OFF.

Dlaczego ? ponieważ na dashboard mam przycisk włączenia smart gniazdka do którego mam podłączoną choinkę.

I w momencie kiedy czujka wykryje ruch włącza choinkę, później jest jeszcze kilka rzeczy ale na ten moment mało istotne.

Jednak kiedy chce tą choinkę wyłączyć z dashboard, a status czujki ruchu jest ON to ona się włączy i po jakimś tam czasie kiedy status czujki faktycznie zmieni się na OFF- choinka się wyłączy.

Ten flow zamieściłem po to aby przedstawić Wam obrazowo o co chodzi.
Faktycznie na wyniku tego flow dostaje wynik stan_czujki: “OFF”, jednak payload: to nadal “on”:

Czy ktoś zna sposób na to ?

W curent state daj msg data.stan_czujki

no niestety nie resetuje mi to czujki ruchu do stanu OFF (czyli brak wykrycia ruchu) i jej stan wyświetla się nadal ON.
Tak w logu debug po zastosowaniu zmiany msg data.stan_czujki mam OFF ale na jej faktyczny stan to nie wpłynęło.

Robię coś źle ? czy w ogóle da się zresetować wykrycie ruchu ? czyli wykrywa czujka ruch w tym momencie, a ja we flow czy to z opóźnieniem 2 sekund czy też bez żadnego opóźnienia zmieniam jej stan na OFF - czyli brak wykrycia ruchu

Chcesz żeby był off chociaż wykrywa ruch… To jest właśnie tak jak robisz.
Jeżeli chcesz żeby czujka szybciej niż minuta zmieniała stan na off to musisz ja przerobić, poszukaj na forum, już bylo

To czujnik Zigbee a więc nie ma możliwości “recznej” zmiany stanu takiego czujnika, odsyłam do dokumentacji:

#Occupancy (binary) (Xiaomi RTCGQ11LM control via MQTT | zigbee2mqtt.io)

Indicates whether the device detected occupancy. Value can be found in the published state on the occupancy property. It’s not possible to read (/get) or write (/set) this value. If value equals true occupancy is ON, if false OFF.

Dotyczy to wszystkich czujników Zigbee.

dziękuję. Czy da się skrócić czas kiedy stan occupancy jest na true ?

Jeśli dobrze zrozumiałem to pytasz o to:

Tak. To już mam zrobione. Jednak nie pytam o no_occupancy_since, a o occupancy

Napisz bardzo dokładnie co chcesz zrobić, jaką automatyzacje, niby wszystko masz, a piszesz że czegoś Ci brakuje :slight_smile:

Niestety nie mam i nie znam wszystkiego. Dlatego dopytuję.
@bartik22 odpowiadając dalej na Twoje pytanie. Jestem bardzo ciekawy czy da się skrócić czas w którym czujka zmienia swój czas “occupancy” z true na false. Domyślenie trwa to 90 sekund.

Ok to rozumiem, ale pytam sie po co chcesz to zrobić, zrozum, że próbujesz powiedzieć czujce że nie ma ruchu, skoro jest.
Jeżeli zrobiłes łączenie pinów, to śmiało ustaw np. jeżeli 15sekund nie ma occupancy true to wyłącz światło, czujka jak jestes w zasiegu wysyla logi co kilka sekund, jak znikniesz z jej zasiegu logi sie nie pojawiaja, jedynie occupancy false po 90 sekundach,
rozumiesz?
Tylko w tym dokladnym przykladzie usuń jezeli zrobiłeś no_occupancy_since z configuracji, zeby nie pojawialy sie logi gdzie to samo occupancy bedzie true.

Już o to nie pytam ponieważ, kolega macek napisał że się nie da:

pytam czy da się skrócić domyślny czas 90 sekund. Rozumiem że się nie da.
@bartik22 tak połączyłem piny, będę wieczorem w domu i dopiero wtedy będę mógł to sprawdzić na procesie.
Jeżeli masz jakiś najprostszy proces składający się z 3 nodów (nie chodzi mi o to jakie nody, tylko o to jak są skonfigurowane) jeśli to nie problem - wrzuć export.

Mogę Ci pokazać, tylko powiedz co miało by się robić, żebym zrozumiał co chcesz uzyskać.

@bartik22 niżej zamieszczam screen oraz plik

flows.json (2,7 KB)

nie wiem co jest tam źle. Może to co zrobiłem ołówkiem fizycznie jest źle ?

Gniazdko się uruchamia, jednak nie gaśnie po 30 sekundach

Kluczowa sprawa,
zobacz w logach zigbee czy jak sie ruszasz i przestajesz to w logach widzisz no occupancy since 0 30 60 itd?
druga sprawa, nod event state nie wysle wiadomosci jak zmieni się atrybut, tylko stan, czyli jak bedzie dopiero off wtedy juz no ocupancy bedze mialo 60-90.
wiec usun ten pierwszy nod i daj tam inject wtedy manualnie bedzie dzialac jak kilka razy klikniesz… tak dla testow.
Abyś nasłuchiwał logów zigbee ściagnij do node reda tą paczkę i tam ustaw sobie urządzenie i kanał no-occupancy-since i będzie działąć. node-red-contrib-zigbee2mqtt (node) - Node-RED

jak najbardziej:

jak widzisz no occupancy since zmienia sie od 0… aż do 300 tak jak mam w pliku

No to super, teraz tylko przeczytaj raz jeszcze:

druga sprawa, nod event state nie wysle wiadomosci jak zmieni się atrybut, tylko stan, czyli jak bedzie dopiero off wtedy juz no ocupancy bedze mialo 60-90.
wiec usun ten pierwszy nod i daj tam inject wtedy manualnie bedzie dzialac jak kilka razy klikniesz… tak dla testow.
Abyś nasłuchiwał logów zigbee ściagnij do node reda tą paczkę i tam ustaw sobie urządzenie i kanał no-occupancy-since i będzie działąć. node-red-contrib-zigbee2mqtt (node) - Node-RED

Oczywiście, że się da.
Kolega słusznie odsyła do szczegółowego opisu przerobienia czujki zarówno po stronie hardwarowej jak i softwarowej. Mam u siebie takie cztery wszyskie zmodowane i działają poprawnie w krótszym interwale tj, 5 sekund.
Po wykryciu ruchu czujka wysyła stan “on”, czeka 5 sek. i po tym czasie wysyła stan “off” oczywiście jeśli nie zarejestruje ruchu w swoim zasięgu. O to Ci chodzi ?

Tak zadziałało tak jak napisałeś. Wywoływałem ręcznie i rzeczywiście po 30 sekundach się wyłączył.

Dziękuję tego nigdzie nie widziałem wcześniej. Teraz wystarczy stworzyć coś takiego i wszystko działa jak należy.


@bartik22 dziękuję Ci bardzo za Twoją pomoc.

Jedyne co musiałem zmienić z innego tematu na forum:

to: retain: true na occupancy_timeout: 15

Ostatnie pytanie, czy jeśli mamy wymienione
no_occupancy_since:
- 30
- 60
- 90
- 120
- 180
- 240
- 300
to znaczy że czujnik jest odpytywany przy każdej z ww. wartości ?
i w związku z tym jeśli nie potrzebujemy tylu wartości w swoim procesie, a jedynie 15, 90 to w związku z powyższym żywotności baterii z tego powodu może być dłuższa ?