2018年8月28日火曜日

Llamaからインテントを受信するTaskerプロファイル

Llamaからのチェックイン情報をAndroidインテントでTaskerへ送信するため、TaskerのプロファイルとLlamaの動作を作成する。
 
Intent_Received_Llama.prf.xml
Taskerのインテント受信部

ActionはllamaでExtraDataはllamain
LlamaのAndroidインテントは以下の通り

Llamaでチェックイン時に動作するタスク

checkLocation.tsk.xml

Llamaでチェックイン時に動作するTaskerタスク
  • ロケーションにチェックインしたことを知らせる。
  • 駅の場合は乗車駅、乗換駅、降車駅かをカレンダーイベントから判定し、該当する場合は次に乗る電車を案内する。
  • 駅以外の場合はどれくらい振りのチェックインかを判定し知らせる。
  • forsquareのTipsが取得出来たら知らせる。
  • 同じロケーションにチェックインした場合はステイと知らせる。

どれくらい振りのチェックインか判定する

getLocationCheckInTime.tsk.xml

ロケーションチェックイン時にどれくらい振りのチェックインか判定するタスク
チェックイン時にシステム時間をテキストファイルに記録し、次回チェックイン時の時間の差を判定する。
  • 最近
  • 1週間振り
  • 2週間振り
  • 3週間振り
  • 1ヵ月振り
  • 久し振り

現在地に合わせカレンダーの移動予定を取得する

checkCalendarMovingEvent.tsk.xml

現在地に合わせカレンダーの移動予定を取得するタスク
対応する形式はYahoo!乗換案内で登録した「移動」の予定。
以下の場合に次の電車と発車時刻を取得する。
  • 乗車駅にチェックイン
  • 乗換駅にチェックイン
  • 降車駅のチェックイン

getCalendarMovingEvent.tsk.xml

現在のカレンダーイベントタイトルが「移動」の場合、移動カレンダー用変数に代入するタスク

TaskerでforsquareのTipsを取得する

まずforsquareのロケーションページのURLを取得するタスクを作成する。

そしてforsquareのTipsを取得するタスクを作成する。

GitHub

TaskerでGoogleMapから現在地の住所を取得する

GPS座標をキーにGoogleMapから住所を取得するタスク
  • getGoogleMapLocationAddress

音量0の場合は音声読上げを実行しないように修正

音量0の場合は音声読上げを実行しない用に条件を修正した。
LINE投稿のみ行う。

IFTTT経由でLINEに投稿する

IFTTT経由でLINEに投稿するタスクを作成する。
音声読上げを聞き逃してもLINEで確認出来る。
まずはSO-04K用のLINEグループを作成し、LineNotifyをメンバーに追加する。

次にIFTTTのアプレットを作成する。
イベント名は「line_%MY_ID」にした。

そしてIFTTTのトリガー用パスを取得するタスクとメッセージ投稿用のタスクを作成する。
path/line_%key/with/key/%IFTTT_WEBHOOK_KEY?value1=%message
グローバル変数にはWebhook用のキーが入る。
タスク作成後にVariableに直接入力する。

最後に音声読上げタスクに追加して完了。

Amazon Echoで再生している曲名を読み上げるタスク

Amazon Echo(Alexa)で再生している曲名をIFTTTから受信し音声で読上げるタスク。
さらにアーティスト名でGoogle検索し、ヒットすれば追加情報として読み上げる。

まずはIFTTTでアプレットを作成する。

次にPushbullet受信用タスクに「AlexaPlayedSong」の分岐を追加する。
そしてアーティスト名と曲名を読むセリフを作って音声読み上げ。
最後に「getGoogleSearchResult」のタスクにアーティスト名を引数渡し、戻り値があったら読み上げる。
出力結果

GitHub

2018年8月27日月曜日

キーワードからWikipediaの概要を取得するタスク

Google検索するとWikipediaの概要が表示される。
その部分を取得するタスク(getGoogleSearchResult)を作成。

Webページから概要部分を切り出してるだけ。

IFTTTの天気予報に合わせて壁紙を変える

IFTTTの天気予報に合わせて壁紙を変更する。
まずはIFTTTでアプレットを作成。

次にTaskerで壁紙設定用タスクを作成。

引数はIFTTTから受信した天気。
僕は☔が降るかだけ知りたい。
なので☀と☁は晴れ用壁紙、☔は雨用壁紙の二択にした。
基本「Clear」「 Sunny」「Cloudy」「Rain」「Showers」でOK。
たまに珍しいのがあるので、その時はNotify通知で後から追加する。

さらにTaskerから現在時刻を取得し夜の場合は夜用壁紙を設定する。
なので壁紙は晴昼用、雨昼用、晴夜用、雨夜用の4枚。

壁紙の配置場所はTaskerフォルダの中に壁紙用フォルダを作成。
最後にPushbullet受信用タスクにWeather用分岐を追加して完了。

Pushbullet経由でIFTTTからRSSを受信する

IFTTTのRSSをPushbulletで送信してTaskerで受け取る。

Pushbullet受信用タスク(fromPushbullet)に分岐「RSS」を追加。
RSSで取得する情報は重要性が低めなので音声読み上げのみ。
そもそも情報量が多くトースト表示すると画面が埋まって邪魔(笑)
IFTTTを開きRSS登録したいサイトのFeedURLを登録。
Pushbulletは全体送信(ALL)で登録。
これでサイトに更新があるとTaskerに飛んでくる。

Taskerの音声読上げ(Say)をカスタマイズする

トースト同様に音声読上げ(Say)をカスタマイズする。
setメソッド

getメソッド

実際に音声で読上げるタスク

GitHub

Taskerのトーストをカスタマイズする

Taskerを使ってると色んな情報をトースト表示する。
でもゲームしてる時は非表示にしたかったりする。
そのためトースト表示の前に表示するか判定する処理を作る。

特殊なことはしない。トーストステートをon/offを切替るだけ。

setタスク

getタスク

実際にトーストを表示するタスク。
%par1が表示するメッセージ、%par2にforceと入れるとステートを無視して表示する。

8/28追記
各タスク名をToastからFlashに変更

GitHub

TaskerでPushbulletを受信する

情報の伝達や端末間の連携で使用してるPushbullet。
新しい端末で受信する設定をします。

電文の形式は以下の通り(セミコロンが区切り文字)。
  • 宛先;種別;内容


まずは受信後の仕訳タスク(fromPushbullet)を作成。
全体(ALL)又は自分(%MY_ID)宛以外は無視する様に分岐を設定。

次にプロファイルのPushbulletの受信設定。
受信後は通知を「クリア」する。
「削除」だと他の端末が受け取れないし「残す」だと通知に残り続けるので邪魔。
各端末で受信後クリアする設定にしてる。

プロファイルに最初に作った仕訳タスクを紐付ける。
なぜかnoteでlinkも受信出来る。
これで受信部の作成は完了。

GitHub

Taskerで初期設定用タスクを作成する

新しい端末を買ったので整理ついでにTaskerタスクメモ。

まずはTaskerの中で使用する初期設定タスクを作成。
端末の名前やIDなど「Taskerの中で使用する端末固有の情報」が対象。


「initDeviceData」と言うタスクを作成。
タスクの中で自身を識別するIDをグローバル変数に代入。

タスクを手動実行。

とりあえず完了。
前の端末では他にも設定してるのですが、今必要か分からないので保留。
必要に応じて初期設定タスクに追加し実行する感じ。

Taskerで"Sorry, no scan results available."エラー

TaskerでWi-Fiプロファイルを作成しようとしたらエラーが発生。

"Sorry, no scan results available."
データが取得出来ない様なのでTaskerの権限をチェック。



権限なし!
新しい端末にインストールしたので権限付与がされていませんでした。

位置情報の権限付与して無事解決。
なぜTaskerが権限要求しないのか謎ですが…

最近のAndroidはセキュリティ厳しいですね。
過去の感覚で操作してると?ってなっちゃいます(笑)

2018年8月12日日曜日

Llamaの基本的な使い方① ーロケーションの特定方法を考えるー


Llamaは現在のロケーションを特定しタスクを自動化するアプリです。
それ以外の事も出来ますが、私は特定のロケーションに入ったら、自動でタスクを実行するために使用しています。

例えば「家に帰ったらWi-Fiをオンにする」、「あのお店に行ったらポイントアプリを起動する」と言った動作を自動化します。


まずはトリガーとなるロケーションを特定する方法を考えます。
特定方法は携帯セルやWi-Fi、Bluetooth、GPSなど複数の方法あります。

私は主に携帯セルとWi-Fiを使っています。
GPSは携帯セルやWi-Fiより特定が遅いことと、頻繁に位置情報を更新するとバッテリーを消費し過ぎるため使用していません。


携帯セルとWi-Fiの特徴を記載します。

携帯セルは範囲が広いです。
そのためコンビニなど一軒家程度のロケーションの特定には向きません。
ショッピングセンターやビルなど大きなロケーションに向いています。

個人的にオススメなのは駅です。
私は駅の大小に関わらず駅は全て携帯セルで登録しています。
携帯セルは範囲が広いので駅に着く前にLlamaのタスクが実行されます。
そうすると「最寄り駅に着く前に携帯が振動して起こしてくれる」、「駅に着く前に乗り換え情報を教えてくれる」と言ったタスクが可能になります。

特定のロケーションに着く前に実行したい事がある場合は携帯セルが向いてると思います。


次にWi-Fiです。

Wi-Fiは携帯セルより範囲が狭いため一軒家程度のロケーションに向いています。
しかもWi-Fiにはお店の名前がついている事が多いため正確に特定する事が可能になります。

例えばファミマのWi-Fiの場合だと、Wi-Fiの名前(Famima_Wi-Fi)でTポイントアプリを起動し、Wi-FiのMAC(MAC=他とは被らない一意な情報)でforsquareにチェックインすると言った事が出来ます。

チェーン店の場合はWi-Fiの名前が共通の場合が多いので、Wi-Fiの名前でファミマに入ったと言うことを特定し、Wi-FiのMACでファミマのある店舗に入ったことを特定しています。

簡単に言うとWi-Fiの名前はチェーン店共通で実行したいタスク、Wi-FiのMACは特定の店舗のみで実行したいタスクのために使用しています。
ファミマの場合だとTポイントカードを提示するのは店舗に関わらず共通なためWi-Fiの名前、forsquareのチェックインはファミリーマート○○店まで情報が必要なためWi-FiのMACで特定しています。


私のロケーション特定方法は以上です。

ロケーションの特定方法は使用する人の生活スタイルや実行したいタスクによって異なります。
私自身も生活スタイルは日々変わっていくため、その変化に合わせ設定を変えていきます。