始めに
こんにちは!エンジニアのまるさんかくです。
先日LaMetricTimeという時計を購入しました。
この時計は外部からwebAPIを通すことで様々な情報を表示・通知することができます。
LaMetricTimeに通知を送るための第一歩として当記事を記載しました。
LaMetricTimeとは
粗めのドット表示が特徴的なデジタル時計
webAPIが充実しており、LaMetricTimeに対して様々な制御ができる。
機能としては大きく分けて3種類
- 表示(INDICATOR APP)
- ボタン実行(BOTTUN APP)
- 通知(NOTIFICATION APP)
INDICATOR APP
表示アプリ
特定のファイルから定期的に値を取得し、値を更新する
BUTTON APP
ボタン実行アプリ
LaMetricTimeのボタンを操作することで様々な動作を実行する
例:
LaMetricTimeのボタンをスイッチとしたタイマーアプリ
NOTIFICATION APP
通知アプリ
ローカルネットワークを通じて通知を直接送信する
音楽を流すことも可能
内容
PCからwebAPIを通じてLaMetric Timeに通知を送信する
アカウント登録
PC上で実行
URLにアクセス
SIGN UPから名前、メールアドレス、パスワードを入力して登録
デバイスの初期設定
スマホ上で実行
Google playからアプリをインストールし、デバイスの初期設定を実行
LaMetric TimeのIPアドレス確認
スマホ上で実行
アプリの通知送信時に使用するIPアドレスを確認
LaMetricアプリの設定アイコンからWi-Fiを選択
デバイスのAPIキー確認
ログイン後、ユーザー名→My devicesを選択
デバイスの初期設定が完了していれば、DEVICESにデバイス名とシリアルナンバー、APIキーが表示される
APIの仕様
API仕様は下記リンクの公式ドキュメントから確認可能です。
表示アプリ、ボタン実行アプリ、通知アプリを作成するためのチュートリアルとAPI仕様について記載されています。
ソースコード
公式ドキュメントのチュートリアルにはcurlコマンドを使用して一行でデータ内容を書く例が記載されていますが、送信データが長く内容を一行に書くのが大変でした。今回はデータ内容をjsonファイル、実行時の環境をshファイルに記載して使い回しやすくしました。
jsonファイルを変更することで表示する画像・テキストを変更可能
#!/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
{
"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ファイルに記載した内容を通知
$ ./sample.sh
最後に
今回はPCからLaMetric Timeに通知を送信するためのテンプレートを紹介しました。
ドキュメントは英語ですが内容は難しくないため、この内容を手始めに様々な通知を送信したり、他のアプリケーションのチュートリアルに挑戦していただければと思います。
参考URL