16 sierpnia 2014

Profil: Tost z danymi sieci WiFi po połączeniu

Mimo, że nie przepadam za nakładką TouchWiz autorstwa Samsunga ma ona kilka ciekawych i przydatnych elementów. Jednym z nich jest tost wyświetlający dane sieci WiFi i szybkość połączenia zaraz po jego nawiązaniu. Dziś zademonstruję w jaki sposób uzyskać podobną funkcjonalność w Taskerze.

Opis wykonania

Na ekranie głównym Taskera, w zakładce Profile naciskamy klawisz +, z listy kontekstów wybieramy State / Net / WiFi Connected. Na ekranie edycji kontekstu nic nie zmieniamy bo chcemy by tost był wyświetlany przy połączeniu z każdą siecią. Jeśli wypełnimy na tym ekranie pola SSID, MAC lub IP to profil będzie uruchamiany tylko po połączeniu z siecią spełniającą wpisane warunki. Przykładowo podanie nazwy SSID sieci PRZYKLADOWE-WIFI spowoduje, że połączenie tylko z tą siecią uaktywni profil.
Wciskamy klawisz wstecz, następnie wybieramy New Task i przechodzimy do edycji tasku wejściowego profilu.
Wyświetlanie tostu ma sens tylko w przypadku gdy urządzenie ma włączony ekran. Dlatego zaczniemy task od sprawdzenia jego statusu. Tasker przechowuje dane na temat statusu ekranu w zmiennej %SCREEN. Może on przyjmować wartości on i off czy odpowiednio włączony i wyłączony.
Wybieramy klawisz +, kategorię Task i akcję If. W konfiguracji akcji w lewej części obszaru Condition wpisujemy %SCREEN, w prawej on, a jako operator wybieramy Matches. Czyli dalsze akcje zostaną wykonane jeśli zmienna %SCREEN będzie miała wartość on (ekran włączony).

Po powrocie do ekranu edycji tasku zajmiemy się przygotowaniem danych do naszego tostu. Dane te są przechowywane w zmiennej %WIFII. Można sprawdzić jakie dane są dostępne w zmiennej wybierając klawisz menu / More / Run An Action / Alert / Flash i w polu text wpisać %WIFII. Po dotknięciu klawisza wstecz wyświetli się tost z zawartością zmiennej %WIFII. Nam zależy na nazwie SSID sieci, przyznanym urządzeniu adresie IP oraz prędkości połączenia. Aby wyciągnąć potrzebne nam dane skorzystamy z akcji Variable Split jednak najpierw wartość zmiennej %WIFII musimy przekazać do innej tymczasowej zmiennej %wifiinfo, którą będziemy mogli edytować. Wybieramy klawisz + następnie Variables / Variable Set i w konfiguracji akcji w pole Name wpisujemy %wifiinfo, a do pola To %WIFII. Następnie naciskamy klawisz wstecz, klawisz + i wybieramy Variables / Variable Split. W konfiguracji akcji w pole Name wpisujemy %wifiinfo oraz zaznaczamy opcję Delete Base (czyli usuwamy zmienną %wifiinfo po jej podziale). Akcja Variable Split dzieli ciąg znaków na części oddzielone wybranym znakiem (Splitter). W naszym przypadku nie wybraliśmy splittera więc Tasker przyjmie spację jako znak podziału. Każde słowo z oryginalnego tekstu jest teraz dostępne w zmiennej %wifiinfoX gdzie X to numer słowa w tekście.
Wybieramy klawisz wstecz, następnie + i dodajemy akcję Alert / Flash. W konfiguracji tej akcji w polu Text wpisujemy następujący tekst:

Połączono z siecią: %wifiinfo4
Adres IP: %wifiinfo9
Prędkość: %wifiinfo13
oraz zaznaczamy opcję Long (by tost wyświetlał się dłużej).
Naciskamy teraz dwukrotnie wstecz i mamy gotowy profil. Powinien on wyglądać następująco:

Rozpisany profil

Profile: Połączone WiFi (91)
State: Wifi Connected [ SSID:* MAC:* IP:* ]
Enter: Anon (152)
A1: If [ %SCREEN ~ on ]
A2: Variable Set [ Name:%wifiinfo To:%WIFII Do Maths:Off Append:Off ]
A3: Variable Split [ Name:%wifiinfo Splitter: Delete Base:On ]
A4: Flash [ Text:Połączono z siecią %wifiinfo4
Adres IP: %wifiinfo9
Prędkość: %wifiinfo13 Long:On ]

Wideo

Pobieranie profilu

Profil Tost z danymi sieci WiFi po połączeniu [Tasker 4.4u2]

Aktualizacja

Jak kolega mrtur zauważył w komentarzach w przypadku gdy nazwa sieci będzie zawierała spację profil wyświetli niepoprawne dane. Dlatego poniżej przedstawiam poprawioną wersję.
Tym razem posłużyłem się akcją Variable Search Replace z wyszukiwaniem ciągu (?<=(\n)).*, który podzieli tekst na poszczególne linie, które trzeba poprzycinać do odpowiednich długości za pomocą kolejnych akcji Variable Search Replace z odpowiednimi wartościami pola Search.