メインコンテンツへスキップ
見出し画像

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」の手順を使用します。具体的には、

    1. M5Paper側で認証なしのAPIを使用しfrobを取得する

    2. frobを使用して認証用URLを生成する

    3. 認証用URLをスマホやPCで開き、アプリケーションにアクセスを許可する

    4. 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で取ってくることにしています。

    画像
    APIのURLを開き、鍵アイコンから認証局と詳細を表示します。
    画像
    「証明書を表示」をクリックして、一番右のルート証明書を表示します。
    画像
    「PEM(証明書」をダウンロードします。これをmicro SDカードに入れて使用します。

    フォントを取得

    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に挿す

    画像
    SDカードの中身はこんな感じになります

    起動する

    うまくWiFiに接続できると、なんかこんな感じでQRコードを表示します。(下図はダミー)

    画像

    スマホでQRコードをスキャンするとRemember the Milkのサイトにジャンプし、そこで認証を行い、アプリケーションに権限を与えます。その後M5Paper側で「Next」ボタンを押すと完了です。

    うまくいった場合

    うまくいけば下図のように最大10個のタスクを表示します。毎時0分に更新され、その時だけ電源が入るようになっています。

    画像
    画面の一番下は最終アクセス日時(HTTPのレスポンスから取得)、その下の黒いバーはバッテリー残量になっています

    未来へ…

    こうして、Remember the Milkにさえタスクを入れておけば、スマホやPCを開かなくても数週間内容を表示し続ける専用の画面ができました。でもこれ、タスクじゃなくてもちょっとしたメモでもいいわけなので、自分専用掲示板みたいに使ってもいいかもですね。私のように手書きメモはすぐ無くす族は特に…

    あなたへのおすすめ