Notyfikacja – powiadomienie o powrocie dziecka ze szkoły

Czy jako matka lub ojciec nie chciałabyś/chciałbyś wiedzieć kiedy Twoje dziecko wróciło do domu ze szkoły?

Zapewne tak !

W takim razie pomocny w tej sytuacji okaże się system inteligentnego domu, który wyśle do ciebie notyfikację – powiadomi Cię o tym zdarzeniu. Dzięki odebranej notyfikacji na smartfonie będziesz wiedział/a kiedy zadzwonić i upewnić się, czy wszystko u dziecka w porządku i czy jest bezpieczne.

Niby taka prosta funkcja, ale jak bardzo przydatna w życiu 🙂



Dziś pokażę Ci jak to zrobić w systemie FIBARO. Otrzymasz wymaganą konfigurację urządzeń oraz kod wysyłający notyfikację na Twój smartfon wraz z widgetem pokazującym kiedy były np. otwierane drzwi wejściowe którymi dziecko i inni domownicy wchodzą do domu.

Detekcja otwarcia drzwi

Są różne sposoby wykrycia otwarcia drzwi. Najbardziej zaawansowanym sposobem byłoby użycie elektronicznej zasuwki takiej jak Danalock,  którą opisywałem w jednym z poprzednich artykułów.  Jeśli nie masz takiego rozwiązania, nie przejmuj się, są inne tańsze na to sposoby.

Youtube film o moim rozwiązaniu

Danalock (Gerda) zamek Z-Wave do drzwi

Do detekcji można wykorzystać czujnik ruchu lub kontrakton. FIBARO oferuje dwa urządzenia tego typu:

  • czujnik ruchuMotion Sensor – to rozbudowane bateryjne urządzenie rejestrujące temperaturę, detekcję ruchu, natężenie światła oraz drgania (może być również detektorem wstrząsów sejsmicznych dla rejonów aktywnych sejsmicznie). Jeśli zdecydujesz się na to rozwiązanie, wykorzystasz jedną z dostępnych jego funkcji – detekcję ruchu. Pozostałe funkcje urządzenia będziesz mógł wykorzystać do innych celów np. do pomiaru temperatury czy natężenia światła.

FIBARO – Motion Sensor

  • kontaktronDoor/Window Sensor 2 – czyli bateryjny czujnik magnetyczny. Polecam instalację właśnie tego urządzenia, gdyż jest ono dedykowane do wykrycia otwarcia między innymi drzwi. 

FIBARO – Door/Window Sensor 2

Oba wymienione rozwiązania są urządzeniami bateryjnymi co oznacza, że ich montaż jest wyjątkowo prosty i nie wymaga doprowadzenia przewodów zasilających. Możesz je wykorzystać w celu monitoringu i ochrony domu przed włamaniem, ale tym razem opiszę ich zastosowanie tylko wykrycia i notyfikacji powracającego dziecka ze szkoły.

Filtrowanie niepotrzebnych zdarzeń

Aby Twój smartfon odebrał notyfikację i powiadomił Cię o faktycznym powrocie dziecka do domu, a nie o „każdym” otwarciu drzwi np. w godzinach rannych gdy kolejne osoby opuszczają dom, należy zastosować filtrację, aby właściwie rozpoznać interesujące zdarzenie.

W tym celu przyjąłem założenie, że system będzie informował – wysyłał notyfikacje tylko w dni powszednie w godzinach 9-18. Te ustawienia oczywiście można zmienić dostosowując je do Twoich potrzeb.

Poza tym chciałem aby system dorzucił nieinteresujące zdarzenia np. późniejsze wyjście dziecka do szkoły np. na godzinę 10 podczas gdy system rozpoczyna czuwanie od godziny 9 rano lub kilkakrotne otwieranie drzwi w trakcie rannego wychodzenia domowników. Aby temu sprostać dodałem warunek uzbrojenia się systemu co następuje po 3 godzinach przy non stop zamkniętych drzwiach (ten czas też jest konfigurowalny).   

Zasadę działania przedstawia najlepiej poniższy diagram. Jego działanie omówię na przykładzie analizy otwierania drzwi wejściowych.

Zasada pracy notyfikacji otwarcia drzwi

  • Zarówno przed godziną 9 rano jak i po godz 18 system jest nieaktywny (nie odlicza czasu do uzbrojenia) i nie będzie wysyłał żadnych notyfikacji na smartfon.
  • Od godziny 9 system zaczyna odliczać czas niezbędny do uzbrojenia i wysłania notyfikacji (linie skośnie do góry).
  • Jeśli nastąpi otwarcie drzwi przed upływem wymaganego czasu do uzbrojenia (patrz pierwsze otwarcie drzwi po godzinie 9) to następuje reset i odliczanie zaczyna się od początku.
  • Jeśli nie dojdzie do otwarcia drzwi i system odliczy wymagany czas, to się uzbroi po zdefiniowanym czasie (na rysunku zakreskowany trójkąt i linia pozioma – uzbrojenie).
  • Od tego momentu pierwsze otwarcie drzwi zostanie zinterpretowanie jako powrót dziecka do domu i zostanie wysłana notyfikacja (czerwony romb na samej górze diagramu). Oczywiście po wysłaniu notyfikacji system rozpoczyna odliczanie od początku i cykl rozumowania się powtarza (co obrazują kolejne otwarcia drzwi np. wychodzenie dziecka po szkole na zewnątrz lub powracanie domowników. Częste ponowne otwieranie drzwi nie spowoduje wysłania notyfikacji.
  • Na koniec o godzenie 18 system się wyłącza i nie będzie już wysyłał notyfikacji aż do następnego dnia.

Tak jak wynika z powyższego opisu system zawsze wyśle notyfikację po uzbrojeniu systemu i po otwarciu drzwi niezależnie od tego kto je otworzy. Czyli jeśli zamiast dziecka powracającego ze szkoły do domu przybędzie rodzic lub ktoś z rodziny, system potraktuje go jak wracające dziecko i wyśle notyfikację do zdefiniowanych odbiorców. Niemniej jednak zakładam, że przytoczona sytuacja nie jest regułą, a racze sytuacją wyjątkową i moje rozwiązanie sprawdzi się u Ciebie tak samo dobrze, jak u mnie.

Jeśli jednak z góry wiadomo, że w danym dniu notyfikacja nie ma sensu bo jest to np. dzień wolny od szkoły, należy wyłączyć notyfikację na konsoli (wirtualnym urządzeniu – widget) odpowiednim przyciskiem, o którym opowiem w następnym rozdziale.

Widget

Widget który stworzyłem do tego rozwiązania jest prosty. Przedstawia ostatnich 5 zdarzeń np. otwarcia drzwi i wyróżnia (za pomocą symbolu małej ikony smartfonu) te dla których została wysłana notyfikacja. Rejestr dla pięciu ostatnich zdarzeń jest prostszą formą odczytania tej samej informacji z systemu FIBARO, z dziennika zdarzeń.

Widget prezentowany na smartfonie

Od góry widać pięć ostatnich dat zajścia zdarzenia i przy jeden z nich (nr. 3) została wysłana notyfikacja na smartfon, o czym informuje ikonka smartfonu. Na dole widgetu są przyciski umożliwiające załączenie systemu notyfikacji, wyłączenie lub odłożenie powiadomień do następnego dnia. W każdym z wymienionych trybów system będzie dalej na ekranie wyświetlał pięć ostatnich zdarzeń np. otwarcia drzwi ale notyfikacje będą wysyłane tylko w trybie załączenia.

Jak system wyśle notyfikacje na Twój smartfon to tekst jaki zostanie wypisany na ekranie w notyfikacji może być dowolny i jest konfigurowalny w udostępnionym kodzie. Przykłady poniżej.

Kod widgetu

Sam widget wymaga tylko jednej nastawy tak aby współpracował z Twoim systemem FIBARO. Po tym jak zaimportujesz mój widget (informacja o tym na końcu artykułu) zmień adres ID w kodzie definiującym pokazane wcześniej przyciski.

W zakładce „Zaawansowane” zaimportowanego urządzenia wirtualnego musisz podmienić w sekcji 6, mój adres 380 na adres Twojego urządzenia wirtualnego, patrz zdjęcie poniżej. Sposób jak znaleźć adres swojego urządzenia wirtualnego po tym jak go zaimportujesz i zapiszesz, opisałem w innym artykule tutaj (rozdział „Kod widgetu”).

Pierwsza zakładka konfiguracji Widgetu

Druga zakładka konfiguracji Widgetu – ustawienie adresu ID

Scena (kod LUA)

Scena z kodem LUA jest na tyle uniwersalna, że bez problemu obsłuży dowolne urządzenie rozpoznające otwarcie drzwi lub wykrycie ruchu. Jeśli korzystasz z urządzeń FIBARO wymienionych wcześniej to posiadają one parametr przechowujący dokładny czas ostatniego wyzwolenia czyli datę i godzinę np. ostatniego otwarcia drzwi lub detekcji ruchu. Jest to parametr o nazwie „lastBreached”. Aby prawidłowo skonfigurować scenę należy podać:

  • „virtualDeviceID” – adres ID wirtualnego urządzenia (widżetu), z którym ta scena ma współpracować. Sposób na znalezienie adresu urządzenia wirtualnego podałem w jednym z poprzednich artykułów.
  • „openDoorDeviceID” – adres ID urządzenia które będzie rozpoznawać wyjście dziecka do domu (Motion Sensor lub Door/Window Sensor 2)
  • „delayTime” – czas po jakim system zostnie uzbrojony i będzie gotowy do wysłania notyfikacji
  • „textForNotification” – tekst jaki zostanie wysłany w notyfikacji na smartfon

local virtualDeviceID = 380  -- Address ID of Widget (virtual device)
local openDoorDeviceID = 312 -- Address ID of detecting device

local delayTime = 60 * 60 * 3 -- in seconds (60s * 60 minut * 3h)
local textForNotification = "XXX wrócił/a" -- the text that must be send on notification 

W celu zachowania dobrej wydajności centrali, to znaczy aby nie przeciążać centralki ciągłym wykonywaniem sceny, wywołuję kod sceny co 1 minutę. Jest to możliwe gdyż nie zależy mi na tym, aby dokładnie w chwili otwarcia drzwi wysłać notyfikację na smartfon. Poza tym sama notyfikacja też jest obsługiwana przez inne zewnętrzne firmy i dochodzi z pewnym opóźnieniem. Dlatego wykonanie sceny raz na minutę jest w zupełności wystarczające i nie spowoduje przeoczenia krótkotrwałego otwarcia drzwi.

Kod źródłowy sceny, który możesz pobrać po zapisaniu się na newsletter (patrz koniec artykułu) umożliwia edycję domyślnych godzin wysyłania notyfikacji 9-18 i dni tygodnia (domyślnie dni robocze, gdzie niedziela=1, poniedziałek=2, …, piątek=6). Do tego celu służą linie kodu poniżej.

    	and 2 <= currentDate.wday and currentDate.wday <= 6 
      	and 9 <= currentDate.hour and currentDate.hour <= 18 then

Aby notyfikacja została wysłana, trzeba zarejestrować smartfon w centrali FIBARO oraz zmienić adres ID smartfona (u mnie 130) na Twój adres definiujący smartfon, patrz poniżej.

fibaro:call(130, "sendPush", textForNotification) --notyfikacja smartfone

Zalecam nadać scenie nazwę wskazującą, z którym widgetem współpracuje, a następnie przypisać dla nich jedną wspólną lokalizację np. „wyjście”.

Zakładam, że zaprezentowane rozwiązanie będzie dla Ciebie przydatne i spełni zadanie.

Bezpieczeństwa nigdy nie za dużo !