この記事は、Qiitaの「身の回りの困りごとを楽しく解決!【PR】Works Human Intelligence Advent Calendar 2021」カレンダー2の19日目の記事である。なお、同じカレンダー2の前日(18日目)はtakumiyoshikoさんの「【ゴロツク】語呂合わせ自動生成器を作ってみた」。カレンダー1の方の同日(19日目)はume-boshiさんの『「人造先生はチョークを投げるのか」システムを作った』である。定期的に暗証番号が変わるシステムに苦しめられた経験があり、一人だと集中力が続かないというのは私も同じだしと、両人には勝手に親近感を抱いてしまう。
さて皆さんの家には自家用車が有るだろうか。現代では公共交通機関は充分に発展しており、無くても困らない(維持費というコストの方が高く付く)場合も多く、「若者の車離れ」が起きているとか何とか。とはいえ様々な事情でそうではない人もまだ多く、当方もそちら側の身の上という事になる。
自動車について気に掛けるべき事は幾つも在るが、やらかしの発生しやすさに対し、地味にダメージがでかい物事に「バッテリーあがり」がある。何かの都合で車内灯を付け、それを一晩消し忘れてしまうと、次の日にはエンジンも掛からない巨大な鉄箱の一丁上がりである。ロードサービスに助けを求めるか、他の車のバッテリーと繋いで活を入れれば一時的に復活させられるが、そうなったバッテリーは大体交換を勧めれる。そしてバッテリーの値段も結構馬鹿にならない物なのである。
現代はモノがインターネットに繋がるIoTの時代である。最新の車には何らかの警告を送るシステムでも搭載されていたりするのだろうか?寡聞にして知らないが、何れにせよ手持ちの車にそのシステムが無いなら一緒である。という訳で、手元の車で実現できる範囲で、バッテリーあがりを防止する方法を考えた。幸い、搭載しているカーナビがBluetooth接続に対応しているので、これを使う。
IFTTT(ただし、Proプランへの課金が必要。手持ちのAndroidスマホにはIFTTTアプリを入れておく事)で、以下の要領でappletを作成する。
action側の、「Send a notification from the IFTTT app」と「Send me an email」には、ライトの確認を促すメッセージを設定する。
最後にFilter codeに、「カーナビのデバイスからの切断だったか否か」を判定する以下のコードを設定する。 【カーナビのデバイス名】
の部分を適切に変更する事を忘れないように。
const TARGET_DEVICE_NAME = '【カーナビのデバイス名】';
if (AndroidDevice.bluetoothDisconnected.DeviceName != TARGET_DEVICE_NAME) {
// skip
const MESSAGE_WHEN_ISNOT_CAR_DEVICE = `action skip: ${TARGET_DEVICE_NAME} is not car device.`;
IfNotifications.sendNotification.skip(MESSAGE_WHEN_ISNOT_CAR_DEVICE);
Email.sendMeEmail.skip(MESSAGE_WHEN_ISNOT_CAR_DEVICE);
}
最後にカーナビと自身のスマホをペアリングすれば完了。これで、車のエンジンを切りカーナビの電源が落ちると、スマホに注意を促す通知が飛ぶ。
メールでも通知を飛ばしているが、これは偶々スマホが電池切れを起こしていたり、誤って該当する通知を消してしまった時の安全策である。仮に、エンジンを切った瞬間の注意喚起に気づかなかったとしても、バッテリーがあがる前に気付く事が出来れば、余計な出費は抑えられる。スマホの通知で用を熟せていた場合は、重複する内容となるメールでの通知は若干ウザイが、バッテリー買い替えの金銭的ダメージと天秤にかけると、まぁ許容範囲かなと。人によっては、通知先のサービスは別の物にカスタマイズしても良いだろう。
照明を消す事を完全に自動化出来る物ではないが、それなりに役に立つシステムが完成した。素晴らしいのは、これの実現に殆どプログラムコードを書いていないことである。IFTTT万歳!