LaMetricTimeに通知を送信するためのテンプレート

# 始めに
こんにちは！エンジニアのまるさんかくです。
先日LaMetricTimeという時計を購入しました。
この時計は外部からwebAPIを通すことで様々な情報を表示・通知することができます。
LaMetricTimeに通知を送るための第一歩として当記事を記載しました。

# LaMetricTimeとは
粗めのドット表示が特徴的なデジタル時計
webAPIが充実しており、LaMetricTimeに対して様々な制御ができる。
機能としては大きく分けて3種類
- 表示(INDICATOR APP)
- ボタン実行(BOTTUN APP)
- 通知(NOTIFICATION APP)
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/a4645e13-2aae-9f67-e818-509391ca7698.png">


## INDICATOR APP
表示アプリ
特定のファイルから定期的に値を取得し、値を更新する

例：
    Xのアカウント数を常に更新・表示するアプリ
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/9c2883bc-79a1-35c6-b637-2a6a880c250d.png">


## BUTTON APP
ボタン実行アプリ
LaMetricTimeのボタンを操作することで様々な動作を実行する

例：
    LaMetricTimeのボタンをスイッチとしたタイマーアプリ
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/cdbc41f4-9428-d574-23a9-91e7e094df46.png">

## NOTIFICATION APP
通知アプリ
ローカルネットワークを通じて通知を直接送信する
音楽を流すことも可能

例：
    休憩を促す通知を送信するアプリ
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/dc0294eb-e33b-ff52-26a4-205c6910107f.png">

# 内容
PCからwebAPIを通じてLaMetric Timeに通知を送信する

# アカウント登録

:::note warn
PC上で実行
:::
URLにアクセス

https://developer.lametric.com/

SIGN UPから名前、メールアドレス、パスワードを入力して登録
    <img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/3deae9f0-8a73-cef1-1328-622b29c693ba.png">
    <img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/0183bf05-e204-9f8b-6f15-23a791f3ef31.png">


# デバイスの初期設定

:::note warn
スマホ上で実行
:::

Google playからアプリをインストールし、デバイスの初期設定を実行
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/cd7bf682-ce87-69ff-1846-031550024356.png">

# LaMetric TimeのIPアドレス確認

:::note warn
スマホ上で実行
:::
アプリの通知送信時に使用するIPアドレスを確認
LaMetricアプリの設定アイコンからWi-Fiを選択
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/fbb15489-5467-46c7-6ec6-a177ee3cf953.png">
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/d73bf63f-2500-d581-fa7f-52c6ba049c8d.png">

デバイスのIPアドレスが表示されている
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/b055bdce-77b0-0858-c873-58fe6ba68bea.png">

# デバイスのAPIキー確認
ログイン後、ユーザー名→My devicesを選択
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/084cac0e-af66-d799-36dd-e9e89767f7a8.png">
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/1f19e42e-ae8e-c508-dfe3-2d1da6ccda2a.png">
デバイスの初期設定が完了していれば、DEVICESにデバイス名とシリアルナンバー、APIキーが表示される
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/01a1a71d-f5d7-1dc7-d973-04472f64e366.png">

# APIの仕様
API仕様は下記リンクの公式ドキュメントから確認可能です。
表示アプリ、ボタン実行アプリ、通知アプリを作成するためのチュートリアルとAPI仕様について記載されています。

https://lametric-documentation.readthedocs.io/en/latest/index.html


# ソースコード
公式ドキュメントのチュートリアルにはcurlコマンドを使用して一行でデータ内容を書く例が記載されていますが、送信データが長く内容を一行に書くのが大変でした。今回はデータ内容をjsonファイル、実行時の環境をshファイルに記載して使い回しやすくしました。

:::note info
jsonファイルを変更することで表示する画像・テキストを変更可能
:::

```sh
#!/bin/bash
# jsonファイルのパス
json_file="<jsonファイルが保存されているディレクトリ>/sound_template.json"

# APIエンドポイント
api_endpoint="http://<LaMetric TimeのIPアドレス>:8080/api/v2/device/notifications"

# 認証情報
username="dev" # 変更の必要なし
password="<APIキー>"

# curlコマンドを実行
curl -X POST -u "$username:$password" -H "Content-Type: application/json" -d "@$json_file" $api_endpoint
```

```bash
{
    "priority": "warning",
    "model": {
        "cycles": 1,
        "frames": [
           {
              "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAUklEQVQYlWNUVFBgYGBgYBC98uE/AxJ4rSPAyMDAwMCETRJZjAnGgOlAZote+fCfCV0nOmA0+yKAYTwygJuAzQoGBgYGRkUFBQZ0dyDzGQl5EwCTESNpFb6zEwAAAABJRU5ErkJggg==",
              "text": "HELLO!"
           }
        ],
        "sound": {
            "category": "notifications",
            "id": "cat"
        }
    }
}
```

# 実行
sample.shを実行することでjsonファイルに記載した内容を通知
```bash
$ ./sample.sh
```

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3692990/bf3aada9-a3da-5463-f446-41d80885d65a.jpeg">


# 最後に
今回はPCからLaMetric Timeに通知を送信するためのテンプレートを紹介しました。
ドキュメントは英語ですが内容は難しくないため、この内容を手始めに様々な通知を送信したり、他のアプリケーションのチュートリアルに挑戦していただければと思います。

# 参考URL

https://qiita.com/mikawan/items/a8c5c0f518c3025a8d1c