Remember the MilkのタスクをM5Paperに表示する
みんな大好きM5Paper。電子ペーパー端末なので、何かを表示したままにしておくことが得意です。
一定時間ごとに情報にアクセスし、電子ペーパーに表示、次の起動のタイマーをセットしてから電源を自分で切るという動作を繰り返すことで、数週間は充電なしで使用できます。今回はRemember the Milkのタスクを表示することにしました。
できたのはこれ
どういう作り方をするか見ていきましょう。
Remember the Milk
https://www.rememberthemilk.com
Remember the milkはオンラインのToDoリストサービスです。今は大体仕事用にはOutlook、私用ではAppleのリマインダーを使うので使ってなかったんですが、昔APIを使ったことがあるのでこれにしました。
Remember the Milkの認証
Remember the MilkのAPIについては公式サイトに詳しく書いてあります。
Remember the MilkのAPIにアクセスするアプリケーションはAPI KeyとShared Secretを発行してもらい、これを使用して認証を行うとauth tokenを受け取り、以降はauth tokenを付加してAPIを使用します。
APIを呼び出す時に必要なのがSigningです。URLにパラメータを渡すとき、?foo=bar&hoge=hogeのように入れていきます(API Keyもここに入れます)が、これを全て繋げ(foobarhogehoge)、前にShared Secretを付加した文字列からMD5のハッシュ値を計算し、最後のパラメータとして付加します。
今回M5Paperで最初のauth tokenを得るときには、M5Paper自身でWebサイトにジャンプして認証を行うことが難しいため、上記公式サイトの「User authentication for desktop applications」の手順を使用します。具体的には、
M5Paper側で認証なしのAPIを使用しfrobを取得する
frobを使用して認証用URLを生成する
認証用URLをスマホやPCで開き、アプリケーションにアクセスを許可する
M5Paperでauth tokenを取得し、認証付きAPIを呼び出す
という手順になります。M5Paperから外部にURLを渡す方法としてはQRコードが簡単そうなので、使用しました。
Remember the Milkでタスクのリストを取得する
APIは色々あるんですが、タスクのリストを表示するだけならrtm.tasks.getListだけで十分です。rtm.tasks.getListは基本的に全タスクを返すメソッドですが、filterという検索条件を指定することができるので、「完了していない」「○○というリストに属する」「○○というタグが付いている」などを指定すればこのメソッドだけでほとんどのことができます。
PaperRTMの使い方
PaperRTMはちょっと…ビルドしただけでは使えるようになっていなくて…色々下準備が必要です。まずは上記のように、自分用のAPI KeyとShared Secretを取得してくる必要があります。
API KeyとShared Secretを取得
https://www.rememberthemilk.com/services/api/keys.rtm
ルート証明書を取得
さらに、HTTPS接続をするためにはRemember the MilkのAPIサーバのルート証明書が必要です。私はFirefoxで取ってくることにしています。
フォントを取得
M5Paperでは好きなTTFフォントを使用して日本語を表示できます。私は「源真ゴシック」を使用しています。
settings.txtを書く
上記の情報やファイル名、接続するWiFiの名前とパスワードなどをテキストファイルに書いてmicro SDカードに置き、M5Paperはこれを読んで動くようにします。
中身はこんなふうになっています。
SSID:YOUR_SSID_OF_WIFI
PASS:YOUR_PASSWORD_OF_WIFI
fontName:/font.ttf
fontSize:32
smallFontSize:26
pemFileName:/pemFile.pem
timezone:9.0
RTM_apiKey:YOUR_API_KEY
RTM_sharedSecret:YOUR_SHARED_SECRET
filter:status:incomplete
PEMファイルやTTFファイルの名前もここで指定します。時間表示のためタイムゾーンを設定することもできるようにしています。
Remember the MilkのAPI key、Shared secretもここに指定します。filterとしてカスタムの検索条件を指定できるので、仕事用のリストだけ表示するようなこともできます。詳しくは下記を参照してください。
micro SDカードをM5paperに挿す
起動する
うまくWiFiに接続できると、なんかこんな感じでQRコードを表示します。(下図はダミー)
スマホでQRコードをスキャンするとRemember the Milkのサイトにジャンプし、そこで認証を行い、アプリケーションに権限を与えます。その後M5Paper側で「Next」ボタンを押すと完了です。
うまくいった場合
うまくいけば下図のように最大10個のタスクを表示します。毎時0分に更新され、その時だけ電源が入るようになっています。
未来へ…
こうして、Remember the Milkにさえタスクを入れておけば、スマホやPCを開かなくても数週間内容を表示し続ける専用の画面ができました。でもこれ、タスクじゃなくてもちょっとしたメモでもいいわけなので、自分専用掲示板みたいに使ってもいいかもですね。私のように手書きメモはすぐ無くす族は特に…