Cel i opis:
1. Gdy rano po raz pierwszy odblokujemy telefon, to on nam powie pogodę na ten dzień.
2. Dodatkowo zrobimy widżet - ikonkę, w którą jeśli tapniemy, to też telefon wymówi nam pogodę.
Wykonanie:
Poza Taskerem potrzebujemy skrypt PHP, który umieścimy na jakimś serwerze.
Skrypt PHP
Jest on potrzebny, żeby uniknąć parsowania źródła strony z danymi pogodowymi w samym Taskerze. Oczywiście można się pokusić o takie rozwiązanie, ale jest ono powolne. Gdy zastosujemy skrypt, który pobierze nam stronę z pogodą, wyciągnie interesujące nas info, to całość będzie dużo szybsza.
Ja wyciągam dane dla konkretnego miasta - w moim przypadku - Strzegom. Dane pochodzą ze strony
http://tvnmeteo.tvn24.pl
Wchodzimy na tą stronę, szukamy interesującego nas miasta i wchodzimy w pogodę dla tej miejscowości.
Kopiujemy adres. W moim przypadku jest to:
http://tvnmeteo.tvn24.pl/pogoda/polska,1/strzegom,44007.html
Następnie tworzymy skrypt PHP:
<?php
$kodowanie = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
<meta http-equiv=\"Content-Language\" content=\"pl_PL\" />";
$askGoogle = file_get_contents( 'http://tvnmeteo.tvn24.pl/pogoda/polska,1/strzegom,44007.html' ); //tutaj zmień na swój link do danych pogodowych!!!
$tablica1 = explode("<div class=\"weatherInfo\">", $askGoogle);
$tablica2 = explode("</span>", $tablica1[1]);
//pogoda
$tablica2[2] = str_replace("/", "", $tablica2[2]);
$tablica3 = explode("<strong>", $tablica2[2]);
$pogoda=$tablica3[1];
//temp
$tablica4 = explode("</span><span>", $tablica1[1]);
$tablica5 = explode("</span>", $tablica4[1]);
$temp = "Najwyższa temperatura ".$tablica5[0];
//wiatr
$tablica7 = explode("</span>", $tablica4[3]);
$wiatr = "Wiatr ".$tablica7[0];
//opady
$tablica6 = explode("</span>", $tablica4[5]);
$opady = "Suma opadów ".$tablica6[0];
$dzien_tyg = date("w");
switch($dzien_tyg)
{
case "1":
$dzien_tyg="W poniedziałek";
break;
case "2":
$dzien_tyg="We wtorek";
break;
case "3":
$dzien_tyg="W środę";
break;
case "4":
$dzien_tyg="W czwartek";
break;
case "5":
$dzien_tyg="W piątek";
break;
case "6":
$dzien_tyg="W sobotę";
break;
case "0":
$dzien_tyg="W niedzielę";
break;
}
echo $kodowanie."###Pogoda. ".$dzien_tyg." będzie ".$pogoda.". ".$temp.". ".$wiatr.". ".$opady.".###";
?>
Po co są znaki "###" na końcu skryptu, to się zaraz okaże.
Nie zapomnij tylko zapisać skryptu w kodowaniu utf-8, bo będą krzaki.
Następnie wrzucamy skrypt na jakiś serwer. Jeśli nie posiadasz, to bez problemu można założyć darmowy hosting, np. na cba.pl.
Sprawdzamy, czy działa wpisując w przeglądarce adres prowadzący do skryptu. Np. jakisserwer.pl/pogoda.php
Naszym oczom powinien się ukazać mniej więcej taki tekst na białym tle:
"###Pogoda. W piątek będzie Śnieg. Najwyższa temperatura -5°C. Wiatr 16km/h. Suma opadów 5.6 mm.###"
Dodatkowo dodaję drugi skrypt PHP. Można go użyć zamiast powyższego. Wyciąga on dużo więcej informacji, tyle tylko że z innego serwisu. Jest to pogoda dla biegaczy.
<?php
$kodowanie = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
<meta http-equiv=\"Content-Language\" content=\"pl_PL\" />";
//podmien na swój adres:
$link = file_get_contents( 'http://www.twojapogoda.pl/tematyczne/dla-biegaczy/polska/dolnoslaskie/strzegom' );
$tablica1 = explode("<h2>Prognoza 16-dniowa: ", $link);
$tablica2 = explode("<div class=\"foot\"></div>", $tablica1[1]);
$tablica2[0] = str_replace("/", "", $tablica2[0]); //tu są wszystkie potrzebne inf
$tablica3 = explode("<strong>",$tablica2[0]);
//dzien tygodnia
$dzien = "Dziś jest ".$tablica3[1];
//temp
$temp = ". Temperatura: ".$tablica3[3]." stopni Celsjusza";
//ubierz
$ubierz = ". Ubierz ".$tablica3[5];
$tablica4 = explode("\"",$tablica3[2]);
//pogoda
$pogoda = ". Będzie ".$tablica4[5];
$tablica3[6] = str_replace("<", ">", $tablica3[6]);
$tablica5 = explode(">",$tablica3[6]);
//warunki
$warunki = ". ".$tablica5[6];
//t. odczuw
$todczuw = ". Temperatura odczuwalna: ".$tablica5[20];
$todczuw = str_replace("°C", " stopni Celsjusza", $todczuw);
$tablica6 = explode("\"",$tablica5[33]);
//kierunek
$kierunek = $tablica6[1];
//wiatr
$wiatr = ". Wiatr ".$kierunek.": ".$tablica5[32];
//poryw
$poryw = " w porywach do ".$tablica5[46];
//chmury
$chmury = ". Chmury ".$tablica5[58];
$chmury = str_replace("%", " procent", $chmury);
//opady
$opady = ". Opady ".$tablica5[72];
$opady = str_replace("mm 12 h", " milimetrów na 12 godzin", $opady);
//cisnienie
$cisnienie = ". Ciśnienie ".$tablica5[84];
$cisnienie = str_replace("hPa", "hektopaskali", $cisnienie);
//wilgotność
$wilg = ". Wilgotność ".$tablica5[96];
$wilg = str_replace("%", "procent", $wilg);
//biomet
$biomet = ". Biomet ".$tablica5[108];
//termika
$termika = ", ale też ".$tablica5[122];
echo $kodowanie."###".$dzien.$temp.$todczuw.$pogoda.$termika.$warunki.$ubierz.$wiatr.$poryw.$chmury.$opady.$cisnienie.$wilg.$biomet.".###";
?>
Ten skrypt zwróci mniej więcej takie dane:
###Dziś jest Niedziela. Temperatura: -3 stopni Celsjusza. Temperatura odczuwalna: -9 stopni Celsjusza. Będzie prawie bezchmurnie, ale też mroźno i sucho. Warunki fatalne . Ubierz kurtkę i spodnie. Wiatr wschodni: 18 kmh w porywach do 40 kmh. Chmury 10-20 procent. Opady 0 milimetrów na 12 godzin. Ciśnienie 1026 hektopaskali. Wilgotność 66 procent. Biomet niekorzystny.###
Profile Taskera
1.
Nazwa: Powiedz Pogodę
Konteksty (będą dwa potrzebne dla tego profilu):
1. Event->Display->Display Unlocked
2. State->Variable->Variable Value. Name: %RANO, Op: Matches: tak
Taski (też będą dwa potrzebne):
1. Name: Pogoda (z tego Taska skorzystamy też żeby zrobić widżet)
-Tasker->Set Widget Icon. Name: Pogoda, Icon: Wybieramy jakąś ikonkę odświeżania (taka jaką byśmy chcieli zobaczyć po tapnięciu w widżet - ja mam dwie strzałki na okręgu)
-Net->HTTP Get. Server podajemy adres internetowy naszego skryptu PHP: jakisserwer.pl/pogoda.php, Output File wpisujemy pogoda.txt
-File->Read File. File: pogoda.txt, To Var: %POGODA
-Variable->Variable Split. Name %POGODA, Splitter: ### i zaznaczamy Delete Base
(dzięki rozdzieleniu zmiennej %POGODA na 3 części - zapobiegamy przeczytaniu niepotrzebnej części strony, takiej jak informacja o kodowaniu, czy ewentualne doklejone reklamy - jeśli mamy skrypt na darmowym hoście)
-Tasker->Set Widget Icon. Name: Pogoda, Icon: Wybieramy jakąś ikonkę pogody(taka jaka będzie widoczna gdy widżet jest w stanie spoczynku - ja mam chmurkę)
-Misc->Say. Text: %POGODA2 (2 nie jest błędem - bierzemy drugi element tablicy, jaką uzyskaliśmy przed chwilą), Engine:Voice: tu wybieramy dostępny u nas silnik głosu (ja mam SVOX)
Jeszcze musimy nadać ikonkę całemu Taskowi Pogoda, żeby można go było wybrać jako widżet (można to zrobić nad przyciskiem play, który testuje działanie Taska)
2. Tworzymy drugi task w tym samym profilu. Tego już nie musimy nazywać.
-Variable->Variable Set. Name: %RANO, To: nie
Teraz tworzymy drugi profil
2
Nazwa: jest nieistotna
Kontekst: Time: From 5:00 To: 5:00
Task: Variable->Variable Set. Name: %Rano, To: tak
Te dwa profile powodują, że każdego dnia gdy odblokujemy po raz pierwszy telefon po godzinie 5.00 to powie on nam pogodę (oczywiście z kilkusekundowym opóźnieniem - musi pobrać dane).
Widżet
Na koniec dodamy widżet, który umożliwi nam odsłuchanie świeżej pogody w dowolnej chwili - nie tylko przy porannym odblokowaniu telefonu.
Wybieramy spośród widżetów Task i wybieramy Pogoda. Po kliknięci w widżet ikona zmieni się do czasu pobrania danych, następnie powróci do poprzedniej ikony, a telefon wypowie pogodę
Podsumowanie
Oczywiście można skorzystać z danych pogodowych znajdujących się na innych stronach. Ale wtedy trzeba odpowiednio zmodyfikować skrypt PHP, który parsuje źródło strony.
Pozdrawiam i życzę miłego korzystania z dodanego przeze mnie profilu.
PS. Dodaję gotowy projekt Taskera do zaimportowania (trzeba tylko zmienić link do swojego skryptu i podać swój silnik syntezatora mowy):
Forum po zmianach, link nie działa