Witajcie moi drodzy.
Dzisiaj przetestuję tutaj kolejny czujnik otwarcia drzwi, który tym razem wyróżnia się tym, że można ładować go poprzez USB. Zwalnia nas to z uciążliwego obowiązku wymiany baterii. Przedstawię też tu jego wnętrze oraz sprawdzę jego działanie z Home Assistant. Umieszczę kod YAML przykładowej automatyzacji.
Zakup BW-IS2 produkcji BlitzWolf
Produkt znalazłem w sieci pod hasłem "BlitzWolf® BW-IS2 Zigbee Smart Home Door & Window Sensor Open/Close APP Remote Alarm" za około 25$ (licząc z przesyłką). Specjalnie dobrałem ofertę z wysyłką z Czech.
Zrzut ekranu z oferty:
Parametry:
Grafiki promocyjne:
Zamówienie złożyłem 21.XI, paczkę otrzymałem 25-go (kurier inpost).
Zawartość zestawu
Zawartość zestawu zasługuje na pochwałę, ale najpierw zobaczmy skąd została wysłana paczka:
Sulejówek. Zawartość:
W środku jest nawet kabelek micro USB.
Nie trzeba baterii, wystarczy tylko podładować czujnik:
Czujnik jest ściągany (osobno jest mocowanie na drzwi). Dodatkowo ma przycisk On/Off oraz RESET (do parowania).
Jedną część montujemy na drzwi, drugą na framugę. W jednej jest czujnik (kontaktron), w drugiej tylko sam magnes. Czujnik wykrywa obecność magnesu - a jak to się dzieje zobaczymy gdy zajrzymy do środka.
Parowanie z Home Assistant
Serwer Home Assistant miałem przygotowany zgodnie z moim tutorialem:
https://www.elektroda.pl/rtvforum/topic3777098.html
Dłuższe wciśnięcie przycisku wywołuje parowanie, jak zwykle bez problemów:
Home Assistant widzi urządzenie jako RH3001 (SNTZ007).
Udostępniane zmienne:
W Home Assistant są też wykresy i historia:
Teardown BW-IS2
Pora zajrzeć do środka. Co prawda to nie jest produkt z WiFi by była potrzeba wgrywania własnego oprogramowania na ESP8266 (tu ESP nie ma), ale i tak warto z ciekawości zobaczyć jak jest zbudowany. Wystarczy podważyć pokrywę.
Ogniwo w środku to ST 902030 3.7V 500mAh 1.85Wh. Widzę, że można dokupić zamienniki:
Płytka trzyma się na trzech zaczepach.
Widać, że moduł ZigBee to standardowo TYZS5 (układ EFR32MG13P732F512GM48, obok widać rezonator 38.400MHz). Ale są jeszcze dwa inne układy...
Widać tu 7530-1, czyli pewnie HT7530-1, regulator LDO. Logo Holteka też się zgadza:
Wersja 3.0v. Pinout:
Oprócz tego mamy kontroler ładowania podpisany 4054B (NIE: 40548, jak początkowo odczytałem), czyli TP4054 (to mniejszy odpowiednik TP4056), kontroler ładowania ogniwa ze środka.
Dodatkowo mamy charakterystyczny czujnik magnetyczny (kontaktron), który wykrywa czy drzwi są otwarte czy zamknięte (a dokładniej wykrywa magnes w drugiej części czujnika).
Przykład integracji z innym urządzeniem
Teraz jeszcze pokażę jak połączyć ten czujnik z innym urządzeniem. Przykładowa integracja będzie obejmować włączenie żarówki (przekaźnikiem na Zigbee, dokładniej RR400ZB/TS011F) w momencie gdy otworzymy drzwi, ale ogólnie możliwości są bardzo duże.
UWAGA: Proszę nie zwracać uwagi na nieco inny wygląd listy Zigbee2MQTT, po prostu w międzyczasie aktualizowałem Home Assistant do wersji 7.0 (2021.12.7)
Musimy mieć coś, czym będziemy zapalać światło. Użyłem tego przekaźnika:
Lista urządzeń MQTT:
Idziemy do ustawień automatyzacji:
Tam tworzymy nową:
Przy tworzeniu nie wybieram żadnego schematu, tworzę od nowa własną:
Wpisujemy nazwę, najlepiej bez polskich znaków i spacji:
Wyzwalacz to jest zdarzenie które włącza automatyzację, np. właśnie te zamknięcie drzwi. Jak na razie nie precyzujemy jaka zmiana stanu nas interesuje, po prostu określamy, że czekamy na zmianę stanu "Contact" czujnika drzwi.
Później to doprecyzujemy i zrobimy tak, by lampka zapalała się tylko gdy otworzymy drzwi (a nie, gdy zamkniemy).
Akcja jest to operacja którą chcemy wyzwolić, np. właśnie zapalenie lampki (albo jej zgaszenie, albo przełączenie stanu na przeciwny):
Zapisujemy. Automatyzacja powinna być na liście. Przycisk "Uruchom" powinien zapalać lampkę bez względu na stan czujnika drzwi. Jeśli on nie zapala lampki, to znaczy, że coś zrobiliśmy źle..
Warto wiedzieć, że to samo możemy wykonać poprzez edytor tekstowy Yaml. Widok Yaml przełącza się tutaj:
Kod mojej automatyzacji:
alias: test_czujnika_drzwi
description: ''
trigger:
- platform: state
entity_id: binary_sensor.0x0c4314fffe6efa3a_contact
attribute: contact
condition: []
action:
- type: turn_on
device_id: f4b77ff0fcd061bb30ac72f529b0f62d
entity_id: switch.0x842e14fffe00c3bd
domain: switch
mode: single
Ok, ale jak teraz zrobić, by wyłapywać tylko np. zamknięcie drzwi (a nie otwarcie)?
Trzeba wyłapać zmianę z true (zamknięte) na false (otwarte):
Zresztą w stanie urządzenia mamy podpowiedź, co jest co...
Niestety u mnie nie chciało zadziałać to gdy wpisywałem stany false i true przez GUI. W Yaml pokazywało się 'true' jako napis, tj. w cudzysłowie. A powinno być tak:
alias: test_czujnika_drzwi
description: ''
trigger:
- platform: state
entity_id: binary_sensor.0x0c4314fffe6efa3a_contact
attribute: contact
from: true
to: false
condition: []
action:
- type: turn_on
device_id: f4b77ff0fcd061bb30ac72f529b0f62d
entity_id: switch.0x842e14fffe00c3bd
domain: switch
mode: single
Więc, w razie problemów, polecam po prostu przez edycję Yaml wpisać normalnie te "true" bez cudzysłowia.
Po tym wszystko działa - otwarcie drzwi zapala lampkę. Czas reakcji zobaczycie na filmiku:
(brak reakcji na 'zamknięcie' drzwi na filmiku to nie błąd - o to chodziło, by tylko otwarcie zapalało)
Podsumowanie
Przetestowałem już kilka czujników otwarcia drzwi/okna i muszę przyznać, że to jest coś nowego. Swego czasu spodobał mi sie czujnik drzwi z serii Aqara, WSDCGQ11LM, też na Zigbee, ale chyba ten z tego tematu uważam za lepszy. Jednak ładowanie z USB dużo daje i dzięki temu nie muszę się martwić o to, czy będę mieć bateryjkę na wymianę za te pół roku czy ile on tam podziała... w razie czego też można kupić zamiennik ogniwa, ale wydaje mi się on dość drogi.
Mimo wszystko muszę przyznać, że WSDCGQ11LM z Aqary oferuje dodatkowo pomiar temperatury (tak! czujnik otwarcia drzwi ma pomiar temperatury), a ten od BlitzWolfa tego nie posiada, ale jednak ważniejsze jest dla mnie ładowanie z USB.
Oprócz tego ważnym wnioskiem z tego tematu jest to, że Home Assistant może źle interpretować wartości wpisane dla automatyzacji poprzez GUI i czasem warto poprawić je w YAML. Nie spodziewałem się tego, że 'true' może dostać cudzysłów i zamienić się w typ string zamiast w oczekiwany boolean. Dobrze wiedzieć.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
