🔔

LaMetricを使って仕事中の状況を家族に知らせる

2022/01/15に公開

LaMetricを使って仕事中の状況を家族に知らせる

解決したいこと

  • 家族に打ち合わせ中など今の状況を伝えたい。
  • カレンダーの共有もしているが、打ち合わせが延長したりもするのでそれをリアルタイムに今の状況を伝えるのが難しい。
  • MessageやLINEなどで都度送るのもログが溜まり続けるのが気になる。

結論

  • LaMetricで現在の状況を表示することにした。
MTG中 作業中 OK
更新はAlfred Workflow経由でコマンドを実行

詳細

必要なもの

  • LaMetric
  • AlfredのPowerpack(有料)
    • Alfred Workflowを使わないのであれば不要

全体のフロー

  1. Alfred workflowでキーワードを入力
  2. スクリプトを実行
  3. JSONファイルを更新
  4. DropboxでJSONファイルを同期
  5. My Data DIYがJSONを取得(5秒間隔でポーリング)
  6. LaMetricの表示内容を更新

実装

1. My Data DIYのファイルを作成

{
    "icon": "<icon id or base64 encoded data>",
    "text": "UTF8 encoded text",
    "duration": <integer, time in seconds>,
    "goalData" : {
         "start" : <integer, start value>,
         "current" : <integer, current value>,
         "end" : <integer, goal value>
     },
     "chartData" : [ <array of integers> ]
}

各定義

  • MTG中
{
  "frames" : [ 
    {
      "icon": "184",
      "text": "MTG中"
    }
  ]
}
  • 作業中
{
  "frames" : [ 
    {
      "icon": "555",
      "text": "作業中"
    }
  ]
}
  • OK
{
  "frames" : [ 
    {
      "icon": "74",
      "text": "OK!"
    }
  ]
}

2. 各JSONファイルをDropbox内に置く

  • JSONファイルをDropboxに置き、共有リンクを発行。
    • 共有リンクのクエリを dl=1 にするとファイルに直接アクセス可能。
  • ファイル名は mtg.json, busy.json, ok.json にして、空の current.json も同一階層に保存しておく(以下のような形)。
.
├── current.json
├── busy.json
├── mtg.json
└── ok.json

3. ファイルの更新方法を用意

  • My Data DIYは1つのJSONファイルを元に表示を更新するため、今表示したい mtg.jsonok.json の内容を current.json に反映する必要がある。
  • 反映は cat ./mtg.json > ./current.json で行う。
    • 注意: cp だとファイル自体が変わってしまいDropboxのURLが変更されてしまうので使えない。
  • スクリプトの実行を簡単にするために以下のmakefileをJSONファイルと同階層に保存する。
    • make mtg を実行すると current.jsonmtg.json の内容が反映される。
MAKEFILE_DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
MAKEFILE_PATH := $(MAKEFILE_DIR)/Makefile
CURRNET_JSON_NAME := current.json

make := make -f $(MAKEFILE_PATH)

.PHONY: mtg busy ok
.PHONY: notify

default: notify

mtg:
	$(make) notify FROM=mtg.json

busy:
	$(make) notify FROM=busy.json

ok:
	$(make) notify FROM=ok.json

notify:
ifndef FROM
	@echo "FROM is undefined"
	@exit 1
endif
	cat $(MAKEFILE_DIR)/$(FROM) > $(MAKEFILE_DIR)/$(CURRNET_JSON_NAME)

4. My Data DIYの設定

  • 公式アプリのLaMetric TimeをiPhoneにインストール。
  • LaMetric Timeアプリ内でMy Data DIYを追加し、以下の設定を行う。
LaMetric Time.app > My Data DIY
  • Url: current.json のDropboxの共有リンクを設定
  • Poll Frequency: ポーリング間隔(Dropboxの同期時間もあるので5秒に設定しても10-20秒くらいかかることはある)
  • Sound: 更新時に音を鳴らしたい場合に設定

5. Alfred Workflowでmakeコマンドを実行

  • 単純にWorkflow内でmakeコマンドを呼んでいるだけなので実装の説明は割愛。完成したWorkflowファイルはこちら: LaMetric - Notify.alfredworkflow

  • Workflowのimport時に makefile_path は適宜ローカルのmakefileへのファイルパスを指定する。

Workflowの実行例

その他のアイデア

  • MTG中に部屋の前の照明を赤色とかに変更して伝えるのもいいなと思った(友達がやってた)。

Discussion