Jeśli realizujesz automatykę w swoim domu /mieszkaniu to geolokalizacja w inteligentnym domu to podstawa.
Do czego może zostać wykorzystana geolokalizację w kontekście inteligentnych instalacji. Przykłady
- opuszczamy nasz dom,
- system automatycznie uzbraja alarm
- włączane są kamery w tryb nagrywania
- system sprawdza, czy nie zostawiliśmy włączonych jakiś urządzeń, a gdy są włączone, to je wyłączą
- wyłączane są lamy, jeśli takie nie zostały wyłączone
- obniżana jest temperatura w mieszkaniu: ogrzewanie
- zasuwane są rolet
- uruchamiany jest automatyczny odkurzacz, który robi swoją robotę, gdy nas nie ma w domu
- dojeżdżamy do domu
- włączane jest ogrzewanie; oczywiście gdy jest taka potrzeba
- jesteśmy poza domem
- wysyłana jest notyfikacja o zdarzeniach np. wykryty ruch, wyciek wody, włączenie lamp, mamy intruza
- uruchamiana się funkcjonalność symulacji, że ktoś jest w domu np. włącza się oświetlenie w różnych miejscach naszego domu
Wymieniłem kilka najczęściej spotykanych reguł, ale jak to mówią „sky is the limit”. Oczywiście te wszystkie przykłady można zrealizowane bez geolokalizacji, ale wtedy musimy uruchamiać je ręcznie np ze smartfona. Czy mamy wtedy inteligentną instalację? No raczej nie.
Geolokalizacja w inteligentnym domu, jak to zrobić?
Stosunkowo prosta metoda i działająca w większości przypadków to wykorzystanie naszego smartfona. Nie ma co się oszukiwać, rzadko kiedy rozstajemy się z naszymi smartfonami. Każdy smartfon ma wbudowany układ GPS + odpowiednie oprogramowanie i mamy urządzenie, które powiadamia nasz system automatyki, gdzie w danym momencie znajdujemy się.
Drugim krytycznym elementem naszego inteligentnego domu jest sam system do sterowania automatyką. Pytanie, czy Twój system do sterowania automatyką posiada jakąś funkcjonalność pozwalająca na wykorzystanie geolokalizacji do sterowania lub czy system jest na tyle elastyczny, aby taką zrealizować. Jeśli kupiłeś gotowe rozwiązanie, no to trzeba wziąć w rękę instrukcję i przeczytać, czy takie coś możesz zrobić i postępować zgodnie z instrukcją. Ja tutaj nie pomogę 🙂 Jeśli korzystasz z openHAB to czytaj dalej.
Geolokalizacja w inteligentnym domu, jak to zrobić w openHAB?
Próbowałem dwóch metod i jedną z nich opiszę
- Metoda 1: wykorzystanie aplikacji na smartfonie IFTTT + myOpenHAB (cloud) + openHAB
- Metoda 2: wykorzystanie aplikacji na smartfonie OwnTrack + MQTT Broker + openHAB2
Obie metody robią swoją robotę. Aplikacje są na Androida lub iOSa. Pierwsza jest łatwiejsza do konfiguracji, ale nie jest też banalnie łatwa – ma swoje niuanse.
Osobiście od jakiegoś czasu korzystam z drugiego rozwiązania, choć jest raczej trudniejsze w konfiguracji. Dlaczego drugie? Uzasadnię pisząc dlaczego nie pierwsze. Zarówno IFTTT, jak i myOpenHAB to rozwiązania chmurowe. No i ja nie specjalnie chcę polegać na serwisach firm trzecich w swojej automatyce; nie koniecznie chcę, aby informację o mojej lokalizacji trafiały na „Jakieś” serwery poza moja kontrolą, nawet mimo, że ich polityki prywatności wydają się być sensowne. W drugim rozwiązaniu nie polegam na serwerach firm trzecich, ale w zamian potrzebuję własny „serwer”. Będzie to oprogramowanie do wysyłania wiadomości oparte o broker MQTT. Broker MQTT np. Mosquitto to wg mnie oprogramowanie, które powinniśmy mieć w naszym systemie do automatyki nie tylko do geolokalizacji, ale również przydaje się do integracji z wieloma innymi urządzeniami, które możemy mieć w naszym domu.
MQTT to bardzo prosty i lekki protokół do wymiany informacji oparty o mechanizm publikowania wiadomości i subskrybowania się do tematów. Został specjalnie opracowany do wymiany danych w sieciach, gdzie mogą występować niskie przepustowości, długie czasy oczekiwań, czy zwyczajnie problem z jej działaniem. Protokół mimo potencjalnych problemów z siecią zapewnia niezawodność. Idealnie nadaje się do wymiany danych między urządzeniami, IoT, ma szerokie zastosowanie w automatyce.
Wymagania
- openHAB2 z zainstalowanym binding:
- MQTT Binding
- OwnTracks Binding
- MQTT Broker np. Mosquitto
- OwnTracks aplikacja na smartfonie
Konfiguracja Home / Regions
Gdy wykorzystujemy OwnTracks mamy dwie możliwości konfiguracji nazwę je Lokalizacja Domowa lub Regiony. Bardzo, krótko czym się różną
Lokalizacja Domowa
W openHAB definiujemy naszą lokalizację, a później openHAB przez MQTT Broker nasłuchuje wiadomości z aplikacji OwnTracks, czy w niej jesteśmy.
Definiowane są trzy parametry: długość, szerokość geograficzną oraz odległość od tego punktu geograficznego w metrach np. 100m – to znaczy, że gdy jesteśmy w zakresie 100m od naszego punktu wyznaczonego przez długość, szerokość geograficzną to openHAB traktuje nasze przemieszczanie się, jakbyśmy byli wciąż w tej samej lokalizacji.
Regiony
W openHAB nie definiujemy naszej lokalizacji natomiast definiujemy Regiony w aplikacji OwnTracks. Mamy możliwość zdefiniowania wiele różnych regionów np Dom, Praca, jakaś konkretna miejscowość, bądź inne lokalizacje, które z punktu widzenia naszego systemu do automatyki są istotne.
OpenHAB nasłuchuje, czy znaleźliśmy się, bądź opuściliśmy zdefiniowany w aplikacji OwnTracks regiony. W aplikacji OwnTracks definiuje się 4 parametry: długość, szerokość geograficzną, rozmiar regionu w metrach (tak samo jak w poprzedniej metodzie) oraz nazwę regionu. Nazwa jest bardzo ważna, gdyż wykorzystuje ją openHAB.
Osobiście polecam metodę Regiony, gdyż daje możliwość konfigurowania większej ilości lokalizacji. Konfiguracja regionów robi się na mapie w interfejsie graficznym – opuszcza się pinezkę na mapie. W konfiguracji Lokalizacja Domowo trzeba wprowadzić ręcznie koordynaty geograficzne.
Konfiguracja OwnTracka
Załóżmy, że mieszkam na Wawelu w Krakowie, a co – to moja lokalizacja domowa 🙂 oraz, że jak opuszczam Kraków to mój system do automatyki ma coś tam zrobić.
Potrzebuje w OwnTracks w takim razie zdefiniować dwa regiony nazwę je:
- Wawel – tutaj mieszkam
- Kraków – miasto w którym mieszkam
Będę używał konfigurację oparta o Regiony, bo będę miał więcej niż jedną lokalizację, która ma wpływ na mój inteligentny dom.
Ściągam i uruchamiam aplikacje OwnTracks, a następnie wyszukuję na mapie mój dom czyli Zamek Królewski na Wawelu.
Aby stworzyć moja pierwsza lokalizację palcem dotykam ekran smartfona w miejscy Zamek Królewski na Wawelu oraz odczekuję chwilkę, aż zostania upuszczona pinezka na tej lokalizacji.
Co teraz zrobię to zdefiniuje rozmiar mojej lokalizacji, no bo przecież Zamek Królewski na Wawelu to nie kawalerka 20m2. Ustawię, że moja lokalizacja domowa na odległość 100m od pinezki. Dodatkowo nazwę tę lokalizację jako Wawel. Wciskam ikonę Regions poniżej mapy i otwiera mi się takie okno jak poniżej. To Center-149….. to lokalizacja którą dodałem. Wchodzę w tę lokalizację, aby dokończyć konfigurację.
Nadaję nazwę; zaznaczam, że będę udostępniał tę lokalizację oraz definiuję rozmiar tej lokalizacji 100m. Na ekranie obok widać te 100m w każdą stronę od zaznaczonego przeze mnie wcześniej miejsca. Jeśli fizycznie wyjdę z tego fioletowego okręgu OwnTracks wyśle taką informację do openHAB przez MQTT Broker, to samo wydarzy się jeśli wejdę do tego okręgu.
Analogicznie zrobię z drugą lokalizacją Kraków. Zaznaczę pinezką środek miasta oraz wyznaczę rozmiar miasta 8km w każdą stronę od pinezki.
Jak łatwo domyśleć się w ten sposób można zdefiniować nieograniczona ilość regionów, które mogą mieć wpływ na nasz smarthome i nie tylko. Możemy robić też takie kombinacje jak region w regionie. Widać to (trochę) na trzecim zdjęciu po prawej – fioletowy region (Wawel) w innym jaśniejszym fioletowym (Krakow).
Aha co oznaczają kolory w środkowym ekranie: czerwony zapala się, gdy jest się w danym regionie, niebieski jeśli jest się poza tym regionem.
Co teraz muszę zrobić to zintegrować sie z naszym system do automatyki. Jak już wspomniałem wcześniej korzystam z MQTT Brokera. To co muszę zrobić to wprowadzić parametry konfiguracyjne dotyczące łączenia się z MQTT brokerem. Wciskam tę ikonę i u góry ekranu, a na kolejnym ekranie link Settings
Teraz wprowadzamy konfigurację.
- Mode powinien zostać ustawiony na Private (Prywatny) korzystamy z własnego brokera MQTT, a nie publicznego.
- Tracker ID wpisujemy nasz identyfikator – ja wpisuje dwie pierwsze litery mojego imienia.
- Wprowadzamy nazwę urządzenia DeviceID – ja sobie wpisuję iPhone.
- Host to adres IP lub nazwa domeny naszego MQTT Brokera, a Port to oczywiście port na którym pracuje MQTT Broker.
- Dodatkowo ustawiam parametry dotyczące autoryzacji do mojego MQTT Brokera.
W zasadzie to już prawie wszystko. Jeśli wpisałem parametry konfiguracyjne do MQTT Brokera poprawnie to OwnTracks powinien już łączyć się z MQTT Brokerem i wysyłać informacje kiedy wejdę, bądź opuszczę zdefiniowane przeze mnie Regiony. To co jeszcze muszę zrobić to dowiedzieć się pod jaki temat MQTT OwnTracks wysyła wiadomości o mojej lokalizacji – potrzebuję te informację do konfiguracji w openHAB. Można to zrobić wchodząc do Friends – środkowa ikonka u dołu. To co zobaczymy to lista wszystkich użytkowników, którzy korzystają z naszego MQTT Brokera i aplikacji OwnTracks . Na ekranie poniżej pojawia się moje nazwisko, ale w Twoim przypadku będzie to TrackerID który został przez Ciebie wpisany w oknie powyżej. Wchodzę dalej do konfiguracji mojego użytkownika.
To co na tym ekranie jet kluczowe to MQTT Temat – zaznaczony w czerwonej ramce. Zapamiętujemy / spisujemy go – będzie dla nas kluczowy do konfiguracji openHAB.
Konfiguracja openHAB
Czego tutaj nie opisze to
- jak zainstalować i skonfigurować openHAB – można niejeden artykuł napisać w tym temacie
- jak zainstalować MQTT Broker – ja używam darmowego i niezłego wg mnie Mosquitto. Na stronie Mosquitto jest opisane jak to zrobić pod Linuxa, Win, Mac’a
- jak skonfigurować openHAB z MQTT Brokerem
Jeśli będzie to dla kogoś wyzwanie to zapraszam na forum po pomoc.
Dobra więc tak, mamy zainstalowany openHAB, do openHAB doinstalowaliśmy MQTT Binding oraz OwnTracks binding. Jest zainstalowany MQTT Broker.
Cała idea wykorzystanie OwnTracks oraz Regionów polega na tym, że w openHAB definiujemy item typu Switch – czyli taki, który przyjmuje stan ON lub OFF
Definiujemy item np. Lokalizacja_Wawel, który będzie przyjmował stan
- ON, gdy jestem w lokalizacji Wawel
- OFF, gdy jestem poza tą lokalizacją Wawel
Krok po kroku:
- Wchodzę do katalogu items, który jest w katalogu z plikami konfiguracyjnymi openHAB. W Linux to może być /etc/openhab2/items
- Dodaje nowy plik owntracks.items – tutaj będą moje wszystkie Switch’e związane z OwnTracks
- Dodaje moje Switch’ lokalizacyjne, format:
Switch nazwa_switch’a { mqttitude=”nazwa_brokera:temat_mqtt_z_owntrack/event:nazwa_regionu” }
- Nazwa brokera – wynika z konfiguracji MQTT Brokera w openHAB
- Temat MQTT z OwnTrack to temat, który odczytaliśmy z konfiguracji OwnTrackers – ostatnie okno powyżej
- Nazwa Regionu to w naszym przypadku: Wawel, Krakow
Tutaj jest jak to powinno wyglądać w openHAB w moim przykładzie
Switch Lokalizacja_Wawel { mqttitude="broker:owntracks/adrian/iPhone/event:Wawel" } Switch Lokalizacja_Krakow { mqttitude="broker:owntracks/adrian/iPhone/event:Krakow"}
To jest cała konfiguracja w openHAB
Jeśli wszystko poszło OK, to OwnTracks wysyła teraz informacje do MQTT Brokera o wejściach / wyjściach z Regionów, a openHAB je konsumuje.
Przykładowa reguła związana z nasza geolokalizacja w inteligentnym domu
To wszystko co zrobiliśmy do tej pory nie miałoby sensu, gdybyśmy nie zamierzali stworzyć reguł związanych z nasza obecnością, bądź nie w jakieś lokalizacji.
Poniżej zrobię przykładową regułę, która włącza nasz system alarmowy oraz wyłącza wszystkie lampy jeśli mamy takowe włączone po tym, gdy opuścimy nasz dom.
Przykładowe item’y, które mam w swojej konfiguracji
- Switch System_Alarmowy
- Switch Lampa_1
- Switch Lampa_2
rule "Opuscilem Wawel" when Item Lokalizacja_Wawel changed from ON to OFF then if (System_Alarmowy.state==OFF) sendCommand(System_Alarmowy,ON) if (Lampa_1.state==ON) sendCommand(Lampa_1,OFF) if (Lampa_2.state==ON) sendCommand(Lampa_2,OFF) end
Jak to działa: kluczowy jest warunek po when
Item Lokalizacja_Wawel changed from ON to OFF
znaczy nie więcej nie mniej, że reguła uruchomi się, gdy Lokalizacja_wawel z Włączonej (ON – jestem w niej) przejdzie w stan Wyłączony (OFF – nie ma mnie w niej)
Na zakończenia:
- Geolokalizacja w inteligentnym domu może obciążać baterię naszego smartfona. Osobiście używam trybu „significant changes mode” w Owntracks. Tryb ten wysyła zmiany rzadziej niż tryb „ruchu ciągłego” przez co oszczędza baterię.
- MQTT Broker musi być dostępny z sieci internet. Konieczne jest posiadanie stałe adresu IP lub korzystać z jakiegoś dynamicznego DNS