Smartfon sam w swojej nazwie ma słowo „smart”, ale nieszczególnie kojarzy nam się z automatycznym wykonywaniem pewnych czynności, tak jak myślimy o Smart Home. Jak się jednak okazuje, oprogramowanie Home Assistant możemy wykorzystać do utworzenia pewnych automatyzacji, a sam smartfon może stać się ważnym elementem naszego IoT. Jak to zrobić?
Smartfon to zbiór ogromnej liczby funkcji i możliwości. W ciągu dnia wykonujemy wiele czynności powtarzalnych, które można byłoby zautomatyzować, chociażby zmianę trybu dzwonków (dźwięk, wibracje, wyciszenie), kontrolę multimediów, głośności czy uruchamianie aplikacji. Zamiast dzień w dzień pamiętać o tych rzeczach i robić je ręcznie, można to jakoś oskryptować.
Istnieje wiele popularnych narzędzi do skryptowania/automatyzowania działania smartfona. Jednak tę rolę może przyjąć nawet Home Assistant. Ale jak się to robi? Tworzenie tych skryptów jest proste, jednak nie aż tak jak może się wydawać.
Aplikacja Home Assistant na urządzenia z Androidem i iOS to coś więcej niż tylko wygodny dostęp do przełączników i dashboardów. Otóż od razu po zalogowaniu się do swojej instancji, wewnątrz Home Assistanta automatycznie utworzy się nowa integracja o nazwie „Aplikacja mobilna”. Tutaj urządzeniami będą smartfony oraz tablety i do każdego sprzętu dostaniemy pełną listę encji. Warto jednak zaznaczyć, że w tym miejscu zdecydowanie króluje Android – dla smartfonów z Androidem lista encji często zawiera ponad 90 pozycji, kiedy to dla iPhone’a zaledwie 20.
Warto jednak zaznaczyć, że mówimy tu o encjach stanowych, pozwalających odczytać jakąś informację – na przykład czy telefon aktualnie jest ładowany, a jak tak, to jakim typem ładowarki (przewód/Qi). Nie są to przełączniki i w tym miejscu nie możemy sterować działaniem smartfona. Ale to nie znaczy, że to nie jest możliwe. Otóż wysyłając odpowiedni skrypt (spokojnie, pokażę jaki) możemy sterować funkcjami telefonu.
Zmiana trybu dzwonków, to znaczy: ustalenie czy chcemy mieć tylko wibracje czy głośny dźwięk powiadomień, to coś trywialnego, ale jakże potrzebnego. Zapewne wiele osób w ciągu dnia chciałoby mieć uruchomione dzwonki, aby ułatwić sobie codzienność, ale w trakcie godzin pracy te mogłyby być wyciszone. W moim przypadku jest odwrotnie, bo właśnie w „czasie wolnym” nie lubię dźwięków powiadomień, ale w trakcie pracy muszą one być uruchomione, abym mógł jak najszybciej reagować. Codzienne pamiętanie i przełączanie tej prostej funkcji w smartfonie nieco mnie irytowało, a też często po prostu o tym zapominałem, co później boleśnie odczuwałem. Postanowiłem coś z tym zrobić i tutaj z pomocą przyszedł Home Assistant.
Otóż Home Assistant może sterować trybami dźwięków i służy do tego odpowiednia komenda. Włączenie dzwonków jest możliwe za pomocą poniższego kodu. Ten kod możemy wpisać wybierając odpowiednią funkcję w edycji bloku.
service: notify.mobile_app_nothingphone
data:
message: command_ringer_mode
data:
command: normal
Tutaj ważne: w pierwszej linii widnieje nazwa i model smartfona. Zapewne u Was będzie to inna nazwa. Można ją pobrać z Home Assistanta, wchodząc w integrację „Aplikacja mobilna” i odczytując kolumnę „Urządzenie”.
Natomiast uruchomienie trybu wibracji wymaga napisania poniższej instrukcji:
service: notify.mobile_app_nothingphone
data:
message: command_ringer_mode
data:
command: vibrate
A może ktoś potrzebuje wyłączyć wszelkie dźwięki? W tym pomoże tryb „Nie przeszkadzać”!
service: notify.mobile_app_nothingphone
data:
message: "command_dnd"
data:
command: "alarms_only"
Co ciekawe, w powyższym command
można zmienić alarms_only
(czyli wyciszenie wszystkich dźwięków oprócz alarmów) na total_silence
, aby wyciszyć dosłownie wszystko (włącznie z alarmami) lub priority_only
, czyli pozostawienie dźwięków dla powiadomień priorytetowych. Wysłanie poniższego żądania wyłączy tryb „Nie przeszkadzać”:
service: notify.mobile_app_nothingphone
data:
message: "command_dnd"
data:
command: "off"
Kiedy już wiemy jak kontrolować tryby dźwięków telefonu, to teraz czas to wykorzystać w jakiejś automatyzacji. W zasadzie tutaj wszystko zależy od Waszych potrzeb i planu dnia. Ja sam, jak już wspomniałem, potrzebuję mieć uruchomione dzwonki podczas godzin pracy, aby nie tylko natychmiastowo reagować na powiadomienia, ale też nie dopuścić do przegapienia, jednakże poza pracą lubię gdy mam włączone tylko wibracje.
Co ważne, nie pracuję w stałych godzinach, a wszelkie zakresy czasowe świadczenia pracy definiuje mi kalendarz, w moim przypadku jest to NextCloud Calendar, choć tutaj to nie jest ważne. Kluczowym faktem jest to, że od jakiegoś czasu Home Assistant ma wbudowany kalendarz, który zarówno obsługuje tworzenie wydarzeń, jak i synchronizację w standardzie CalDAV, co daje opcję połączenia z różnymi dostawcami, w tym Google Calendar.
Mając te informacje już wiemy jaką automatyzację utworzyć – kiedy rozpoczynają się godziny pracy, to należy wysłać żądanie uruchomienia dzwonków, a kiedy się kończą, to zażądać przejście w tryb wibracji. Warto jednak tutaj zaznaczyć, że wyzwalaczem mogą być inne rzeczy – np. zmiana lokalizacji (chociażby na przychodnię lekarską, biuro, sklep) czy stała godzina – np. 21:00.
Znając już zasady tworzenia automatyzacji zgodnie z >>tym poradnikiem<< możemy utworzyć coś na wzór poniższej deklaracji.
Warto tutaj zaznaczyć, że automatyzacja ma dwa wyzwalacze z nadanymi identyfikatorami. Dział „Wykonanie” zawiera blok nadrzędny „Wybór”, gdzie akcje rozdzielone są właśnie przez ten identyfikator.
Tak jak wspomniałem, aplikacja Home Assistant daje dostęp do wielu danych o smartfonie (co potencjalnie otwiera drogę do mnóstwa automatyzacji), a także o użytkowniku. Wszak tam gdzie smartfon, też jest użytkownik? Na bazie lokalizacji można utworzyć sporo skryptów, a o jednym z nich wspomniałem kilka akapitów temu. Home Assistant to też dobre narzędzie do tworzenia historii lokalizacji czy śledzenia naszych bliskich, na przykład dzieci.
Niestety, może zdarzyć się tak, że aplikacja przestanie wysyłać nowe dane. Dlatego też możemy wysłać żądanie aktualizacji lokalizacji.
service: notify.mobile_app_nothingphone
data:
message: "request_location_update"
Możemy też poprosić o odświeżenie innych danych.
service: notify.mobile_app_nothingphone
data:
message: "command_update_sensors"
Pomijając kwestię powiadomień, Home Assistant umożliwia wiele innych operacji. Możemy kontrolować multimediów i regulować głośność, uruchamiać i blokować aplikacje. Dodatkowo, można dostosować jasność ekranu oraz czas jego podświetlenia. Chociaż niektóre z tych opcji mogą wydawać się zbędne na smartfonie, potrafią być przydatne na tablecie, szczególnie jeśli jest on zamocowany na ścianie. Dla bardziej zaawansowanych użytkowników istnieje możliwość wysyłki przetworzonych danych w formacie JSON. Szczegółowy opis funkcji znajdziecie >>tutaj<<.
Powiadomienia wysyłane na smartfon to ogromna część funkcjonalności Home Assistanta. Wstępnie można uznać, że nie są niczym szczególnym, jednak jak pomyślimy, że możemy definiować ich niemalże każdy element, a także manipulować ładunkami czy trybami, to zaczynamy rozumieć jak wiele dróg to otwiera. Możemy utworzyć trzy rodzaje powiadomień – zwykłe powiadomienie, powiadomienie nieznikające oraz powiadomienie z przyciskami.
Tak, przyznaję się, zapominam wyjąć pranie – „pikanie” pralki po zakończeniu prania nie jest dla mnie wystarczające, a często, mając założone słuchawki, nawet tego dźwięku nie słyszę. Ale od czego mam IoT?
Wykorzystując inteligentne gniazdko elektryczne (np. takie z Zigbee opisywane >>tutaj<<) i blueprint „Appliance has finished” możemy utworzyć automatyzację, która powiadomi nas o rozpoczęciu pracy pralki, jak i – co ważniejsze – o jej zakończeniu.
Najpierw musimy zaimportować schemat „Appliance has finished”. Jest to proste – wchodzimy >>tutaj<<, podajemy link swojej instancji Home Assistanta i gotowe. Następnie przechodzimy do ekranu tworzenia automatyzacji i klikamy w „Utwórz automatyzację”. W wyświetlonym oknie wybieramy schemat „Appliance has finished”. Aplikacja przeniesienie nas do ekranu edycji automatyzacji. Ten jednak znacznie różni się od tego co już znamy.
W Power Sensor
wybieramy encję, która wskazuje pobieraną moc raportowaną przez smart gniazdko, do którego wpięliśmy pralkę. Następna pozycja to Starting power threshold
– jest to granica poboru mocy, po której automatyzacja ma uznać, że pranie rozpoczęło się. Tutaj możemy zostawić standardowe 5 W. Następnie mamy Starting hysteresis
, czyli czas, przez jaki pomiar mocy musi pozostawać powyżej progu mocy początkowej. Tutaj też możemy pozostawić domyślną wartość, czyli 5 minut.
Następnie przechodzimy do kolejnej pozycji – Finishing power threshold
, czyli granica, której przekroczenie (w dół) oznacza koniec pracy. Tutaj wszystko zależy od posiadanej pralki – ja sam wartość obniżyłem do 3 W, ponieważ bywa, że moja pralka potrafi pobierać 4~5 W przez kilkanaście minut. Finishing hysteresis
oznacza czas, przez jaki pomiar mocy musi pozostać poniżej progu mocy końcowej. Tutaj możemy zostawić domyślne 5 minut, ale nie szkodziłoby również wartość obniżyć nawet do 2-3 minut.
No i przechodzimy do akcji. Mamy tutaj dwa wiersze opisane jako Actions
. W pierwszym oznaczamy co ma stać się po zakończeniu prania. To właśnie to miejsce jest kluczowe i, według mnie, tutaj możemy dodać powiadomienie. Ale jakie? Jakie tylko chcemy. Moim zdaniem wystarczy powiadomienie persistent (trwałe), aby przypadkowe przesunięcie po powiadomieniu nie sprawiło jego usunięcia i tym samym zapomnieniu o praniu. Klikamy „Dodaj akcję” i wyszukujemy Powiadomienia 'Send a persistent notification'
. Title
i Message
uzupełniamy wybranymi danymi – na przykład „Pranie zakończone”. Wiersz Data
możemy pozostawić pusty.
Nie wiem czy pamiętacie, ale niegdyś prezentowałem Wam skrypt, którego celem było automatyczne wyłączenie urządzeń elektrycznych po opuszczeniu domu – zanim przejdziemy dalej, warto >>zajrzeć tutaj<< i przypomnieć sobie jak on wygląda. Dzięki powiadomieniom możemy to nieco rozszerzyć. Jak? Zamiast automatycznego wykonania skryptu „Do widzenia” po opuszczeniu domu, zostanie wysłane nam powiadomienie z zapytaniem czy ten skrypt ma się faktycznie wykonać.
Zaczynamy od utworzenia nowego skryptu ze schematu „Confirmable Notification”. Dowolnie uzupełniamy nazwę, logo czy identyfikator. Następnie przechodzimy do konfiguracji. W Device to notify
wybieramy nasz smartfon. W Title
wpisujemy dowolny tekst, jaki chcemy wyświetlić w powiadomieniu – może to być „Opuściłeś mieszkanie”. Następnie wpisujemy Message
, czyli treść powiadomienia – wpiszmy „Czy wyłączyć urządzenia elektryczne?” Kolejny wiersz to Confirmation Text
czyli tekst na przycisku potwierdzającym – dajmy „Tak”. W confirmation Action
dodajmy akcję uruchomienia skryptu, który wyłącza te urządzenia, czyli niegdyś nazwany „Do widzenia”. Musimy wpisać go tutaj zgodnie ze schematem Skrypt: <identyfikator_skryptu>
. Dodajmy także Dismiss Text
i wpiszmy „Nie”, natomiast Dismiss Action
zostawmy puste.
Wracamy do automatyzacji, która uruchamiała skrypt, aby zmodyfikować blok Wykonaj
. Nie mamy tutaj dużo do pracy – zamiast wywołania skryptu „do widzenia” wywołujemy przed chwilą utworzony „Powiadomienie: do widzenia”. Po zmianie całość zapisujemy i możemy wyjść z edytora automatyzacji.
Od teraz Home Assistant nie będzie automatycznie wyłączał wszystkich urządzeń, a po prostu wyśle nam odpowiednie powiadomienie na smartfon, które pozwoli nam zdecydować czy faktycznie sprzęty mają się wyłączyć. Jest to bardzo przydatne, zwłaszcza kiedy opuszczamy dom „na chwilę” i nie chcemy wyłączać swojej elektroniki czy oświetlenia.
Jak więc widać, smartfon może pełnić rolę nie tylko „wyświetlacza dashboardu”, ale też być pełnoprawnym elementem IoT, który otwiera wiele dróg do tworzenia ułatwień i ciekawych automatyzacji. Home Assistant, między innymi, pozwala na zarządzanie profilami pracy smartfona, co niezwykle przydaje się w ciągu dnia. Dobrym rozwiązaniem jest też korzystanie z różnych rodzajów powiadomień, które w sposób szybki i przyjemny pozwolą dokonać wyboru i uruchomić wybrane akcje.
W tym tekście przedstawiłem Wam całkiem proste automatyzacje, które naprawdę ułatwiają mi codzienność. Jest to zarazem dla Was pewien szkielet, który może uruchomić Waszą wyobraźnię, aby utworzyć własne skrypty czy automatyzacje – zarówno prostsze, jak i bardziej rozbudowane.
Kup kompatybilny z Home Assistant smartfon w sklepie TECHWISH!
Kategoria: Inspiracje technologiczne