クルマは意外と賢かった、という話 Vol.3 - つなげた編
まだ、いろいろ道半ばだけれど
「クルマは意外と賢かった」一連のシリーズはこちらからご確認ください。
やりたいこと
クルマを運転していて、目的地に着く、というナビゲーションの次に必要になるのが「ガソリン補給をいつ、どこでやるか」ではないでしょうかね。
私はコンソールパネル表示でガソリンが残り1/4を切ったくらいで補給を考えます。生活圏内にはガソリンスタンドが4~5か所あり、どのタイミングでどこに行くかをよく迷うわけです。
結局は自宅近くのガソリンスタンドが一番手軽だし24時間やってるし入りやすいしでそこにすることが多いのですが、もし通勤途中に立ち寄れるスタンドがもっと安かったら?明日の出勤前にそこに寄るだけのガソリンは残っているわけだし、そっちの方が安く済むかもしれません。
この悩みを、Automaticとスマホを使って解決してみようと思っています。
なお、結果を先に行ってしまうと、この解決策はまだ完全には実現できていません。もしサクッと解決策だけ欲しい方は、このポストでは得られませんので悪しからず…。
とりあえず、できそうだが…?
色々と情報を調べた結果、残念ながらカンタンではないのですが、以下のような連携を取ることで何とか出来そうなことが分かりました。
- A. Automaticアダプターから、ガソリン消費量を入手する
- B. エンジンOffのタイミングで、AutomaticからIFTTTにガソリン消費量を投げる
- C. Numerousに、ガソリン消費量を溜めていく
- D. Numerousのガソリン総消費量が 11.925 を超えたらIFTTTにアラートする
- 注:私のクルマのガソリンタンク容量が15.9ガロンでして、その75%が11.925ガロンです
- E. アラートのタイミングでPushbulletにWazeを起動し近隣のガソリンスタンドを検索するURIを投げる
- F. Pushbulletの通知からWazeをワンタップで起動し、ガソリンスタンドを価格の安い順に表示する
…えーと、すでにこの時点でだいぶ負けてる気がしますが…
全然カンタンじゃないですね。スミマセン。でも、今のところこれしかやり方が見つかっていないんです。
構成要素の解説
さて、この仕組みの構成要素をカンタンにご説明します。
こちらは本連載のVol.1にて解説していますのでそちらをご参照ください。
2. IFTTT
イフト、と読みます。様々なWebサービス(GmailやGoogle docs、Yahoo Weatherなど)やスマートフォンアプリが対応していて、「もし○○があったら□□する」という、サービス・アプリ間の連携を行うツールです。
日本語ではこのあたりが詳しく解説してくれています。今回のサービス連携のキモです。
3. Numerous
いろーんな数字を集めて表示するだけのアプリ。なんでこんなのがあるんだろう、と思っちゃいますが、アメリカ人そういうの好きみたいです。
よく企業のWebサイトとかでも「75% - 弊社の社員のうち、ハンバーガーには必ずチーズを乗せる人の率」とか、そういう何でもない数字を見かけます。
もう少し実用的な使い方は、例えば株を持っているなら銘柄ごとの株価を表示するとか、Webマスターさんなら自社サイトの今日の訪問者数とか、ドル円の為替を表示するとか、そういう色々な数字を一か所にまとめてパッとみられる、ということでしょうかね。
4. Pushbullet
パソコン、スマホ等々に届く「通知」を一元化するツールです。日本語の解説はこちらとか。
Windows、Mac、iPhone/iPad, Androidなど主要OSはだいたい対応していて、例えばiPhoneにテキストメッセージが届いた通知をWindowsパソコンに通知するとか、社用パソコンにしかないカレンダーデータの10分前通知をスマホで受け取るとか、そういうことが出来ます。
また、パソコンからURLやファイルをスマホに送ったりもできます。ディナーのレストランのメニューをパソコンで調べてスマホに送る、なんてことも可能。これ単体でも結構便利です。
5. Waze
みんなで作る地図&カーナビ用スマホアプリです。
メンバー登録すると自分で道路やランドマークを地図に追加でき、間違えの修正、道路の変更などをみんなで行って地図を作っていきます。
また運転中の情報、例えば渋滞や道路工事、警察による検問、さらには交差点の監視カメラ(アメリカはけっこう多い)の情報なんかも通知してくれます。
Waze自身はURI APIに対応していて、例えば waze://?q=ramen というURIをWazeがインストールされたスマホでたたくと、Wazeが起動して近所のラーメン屋を検索してくれます。
仕組みの解説
次に、仕組みの解説です。いやー、苦労したの何の…。
1. Automatic
いきなりここでツマヅイタんですが、実はAutomatic、ガソリン残量は把握している(アプリで残量を見られる)ものの、その残量をIFTTT経由で外部に送信できないんです。
そもそもAutomaticがIFTTTのトリガーを引けるのは
- エンジンOn / Ignition turned on
- エンジンOff / Ignition turned off
- トリップ終了 / New trip completed
- 注:エンジンoffと似ていますが、こちらは当該運転の燃費や消費ガソリン量などを計算した後になるので、そうした情報を取れます。
- あるエリア内でエンジンOn / Ignition turned on in area
- あるエリア内でエンジンOff / Ignition turned off in area
- エンジンアラートランプOn / Check engine light turned on
- エンジンアラートランプOff / Check engine light turned off
- (Ford社のクルマ限定) Push to talkボタン押下 / Button pushed
のみ。つまり、運転中にIFTTTをトリガー出来ないんです。
利用者コミュニティを覗いてみると、どうもそれをするにはアプリの構造をイチから作り直さないといけないようで…対応予定はあるものの時期は未定だそうです。
まぁ、あまり頻繁にトリガーチェックするとクルマやスマートフォンのバッテリーに悪影響あるでしょうから仕方ないのかもしれませんが。
さらに、IFTTTに送れるガソリン関連情報は「トリップ終了」時の「当該運転で消費したガソリン量」のみ。なんと使いづらい…。
しかし、そこで挫けてしまってはHackではない!ということで、Numerousの出番です。
2. Numerous
トリップごとのガソリン消費量しか取れないのなら、それを蓄積していってガソリンタンク総容量の75%に達したことを検知すればいいんじゃね? ということで、やってみました。
実はまだAutomaticを買ってからそこまでクルマを運転していないのでトリガーまでは出来ていないんですが、少なくとも消費量の蓄積は出来ています。いいねー。
Numerousの画面。左下が消費ガソリン量の蓄積です。 ちなみに右下はラベルが間違っていてDailyじゃなくてWeeklyです。 |
そして別のIFTTTレシピで「消費ガソリン量の蓄積が11.975 (15.9ガロンの75%)を超えたらPushbulletに通知、というものを定義します。
3. Pushbullet
IFTTT経由でスマホやPCに何かを送りたいならこれが便利。ガソリン消費量が75%を超えたら、以下のようなURLをPushbulletで送ります。
http://waze.to/?q=gas%20station
このURLをWazeがインストールされたスマートフォンで叩くと、Wazeが起動し「Gas station」というキーワードで地図検索が走り、ガソリンスタンドをリストアップしてくれます。
ただしこれには難点があって、「現在地」を理解してくれません…。どういうわけかオクラホマのガソリンスタンドとか出てきちゃう。俺カリフォルニアに居るっつーの。
おそらく
http://waze.to/?q=gas%20station&ll=<現在地の緯度経度>
というURLにしてあげればうまく動くと思うのですが(手動でURL作るとうまくいく)、残念ながらIFTTTをトリガーする際に同時に複数の値を引っ張ってこられない。
はい手詰まりー。
…orz
結論
しかしながら、一文字たりともプログラミングせずにここまで出来ることが分かっただけでも収穫です。
IFTTTがもう少し色々なコンテクストを取得できるようになり、複数のトリガーを組み合わせて(例えば「Automaticからこの情報が届き、かつ現在地がこのあたりであれば、これをこうする」のようなレシピ、つまり and/or 条件を交えたもの)作れるようになるとさらに発展性がありそうですね。
期待して待ちたいと思います。
なお別件で、Automatic開発チームには「リアルタイムじゃなくていいから15分に1回とかガソリン残量でIFTTTをキックさせてくれ」という要望を出しており、「要望リストに入れておくよ!」というお返事も頂きました。こちらも期待して待ちたいと思います。
このポストに使っているピクトグラムは、flaticon.comから入手しました。感謝感謝。