SORACOM LTE-M button for Enterpriseで出勤・退勤・欠勤ダッシュボードを作ってみる

#はじめに

1年ぶりの投稿です。

年末はSORACOMに関連したブログを書いて応募すると靴下がもらえることになっていまして、
去年も書いたらもらえたので、今年も靴下をもらうために書こうと思います。
https://pages.soracom.jp/201912_IoT_DIY_campaign_LP.html

今回はデモ用にSORACOM LTE-M button powered for EnterpriseとSORACOM Harvest/Lagoonを利用して、
出勤・退勤・欠勤ボタンを作った際の手順をお話します。

構成としては、非常にシンプルですが下記の感じです。

![Button.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/29873f13-165d-6491-f476-52af0e3d5a21.png)

#SORACOM LTE-M button for Enterpriseとは？

乾電池2本で動くデバイスで、シングル・ダブル・ロングの3つのクリックタイプをバックエンドのサーバーや任意のクラウドサービスに送ることが出来ます。
シングルを出勤、ダブルを退勤、ロングを欠勤に見立てて、見える化したいと思います。

#SORACOM Harvestとは？

SORACOMの通信サービスから任意のエンドポイントにデータを送ることで、
データを蓄積して可視化をしてくれるサービスです。

SORACOM LTE-M Button for EnterpriseからSORACOM Harvestにデータを送る手順は公式サイトに記載があるので、まずはこちらの手順を行ってください。
https://dev.soracom.io/jp/start/enterprise_button_harvest/

こちらの設定が終わった後にシングル、ダブル、ロングクリックをして、それぞれ図示すると下記のとおりとなります。

![スクリーンショット 2019-12-11 17.03.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/86544845-2c7e-ed05-5f61-bf089e0442f0.png)

シングルクリックはclickTypeが1、ダブルクリックは2、ロングクリックは3となっています。
（バッテリーの情報も載ってきていまして、満タンなのでbatteryLevelが1となっています。）

これを見ただけだとそもそも誰の状態を表しているのかわかりませんし、
1が出勤、2が退勤、3が欠勤と覚えてればよいですが、しばらく経った後に見たときには忘れてしまいそうです。

# SORACOM Lagoonとは？

Harvestに溜まったデータをいい感じにダッシュボード化してくれるサービスです。
これを使って出勤・退勤・欠勤を分かりやすく図示します。

SORACOM Lagoonにはいい感じのパネルがたくさんあります。
https://dev.soracom.io/jp/start/lagoon-panel/

で、このパネルのドキュメントをパッと見てどれで出来そうかなと考えて、イメージパネルかな…？と思いました。

イメージパネルはしきい値毎に画像を変える仕組みがあるので、
例えば背景画像にオフィスのフロア図を用意して、1であれば出勤の画像、2であれば退勤の画像、3であれば欠勤の画像を表示させるようにすれば、やりたいことは実現できそうです。

で、試そうと思ったんですが、画像は外部から参照の出来るURLに置く必要があります。
例えばS3などに画像を置けばいけそうなのですが、ちょっと試してみるにはめんどくさくて、他の方法でできないかなと思いました。

# Single Stat Panelでどうやら出来るらしい

Single Stat Panelはダッシュボードの中で一つだけ数字がどーんとでるタイプのパネルです。
例えば工場等でダッシュボードを表示させている際に、現在の計測値を表示するのにはとても有用なパネルです。
https://dev.soracom.io/jp/start/lagoon-panel/#singlestat_panel

これで本当に出来るの？と最初は思いましたが、値のマッピングという便利な機能があり、
それを使うことによってやりたいことは実現できます。

設定方法としてはまず下記のステップ1を完了し、Lagoonの利用を始めてください。（今回の用途ではFree版で大丈夫です）
https://dev.soracom.io/jp/start/lagoon-dashboards/#start

ログイン後、New Dashboardというところで新しいダッシュボードを作ります。

![スクリーンショット_2019-12-11_20_24_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/ff819b10-f65f-b965-dd66-cb8c6179e608.png)

次にパネルを選択します。ここでSinglestatパネルを選びます。
![SORACOM_Lagoon_-_New_dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/a1510cd1-4c9b-7c4d-8f90-ed4f3426e3cd.png)

次の画面でPanel Title → 編集をクリックします。
![SORACOM_Lagoon_-_New_dashboard-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/d81f542e-c70a-cdd9-ba63-5184a37e10ee.png)

メトリックの設定画面に移動するので、メトリックとしてButtonに相当するSIMにつけられている名前およびclickTypeを選択。
 （LTE-M button for EnterpriseはSORACOMコンソールではSIMとして登録されています。そのため、該当SIMの名前を選びます。）

![SORACOM_Lagoon_-_New_dashboard-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/4e81fab2-8d95-ded5-0d66-c8182293e15e.png)

またSingle Stat Panelには、しきい値によって背景カラーを変える機能もあります。
これを使うことで例えば1のときは緑、2の時は黄、3の時は赤みたいな設定ができます。
Click Typeは1, 2, 3という整数の値しか取らないので、しきい値は1.5, 2.5と設定をしてみました。
（これで1, 2, 3はそれぞれ別の条件の範囲として区別されるはずです）

オプションというタブで下記のように設定してください。

![SORACOM_Lagoon_-_New_dashboard-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/d1da234a-4d9b-a369-20a6-ed89d88f7459.png)

次に値のマッピングのタブから、値のマッピングの設定を行います。
今はButtonの現在値の3が出ている状況ですが、この値のマッピングという機能を使うことで
1 → 出勤、2 → 退勤、3 → 欠勤と変換ができますので、表示がうまく変わるはずです。

![SORACOM_Lagoon_-_New_dashboard-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/4ad72fa2-086a-29bc-f9fa-0e1b046ab9bf.png)

最後に全般タブから、このパネル自体に名前をつけます。
ここは実運用としては個人毎の名前をつけていく想定ですが、仮に「出勤 太郎」と名付けました。

![SORACOM_Lagoon_-_New_dashboard-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/70867cba-ec30-4bab-3db5-ac31904ec712.png)

これで設定としては完了です。
右上の保存ボタンをクリックして、名前をつけてダッシュボードを保存してください。
その後、右上の戻るボタンでトップ画面に戻ってください。

![SORACOM_Lagoon_-_New_dashboard-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/ba3fe537-dfbc-0552-6f42-161ca7368b8b.png)

一回押したら出勤

![SORACOM_Lagoon_-_New_dashboard-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/3a354fb8-25a2-c322-654b-a0880377af55.png)

二回押したら退勤

![SORACOM_Lagoon_-_New_dashboard-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/3e89e67a-f337-ec9e-b2f7-b70d7f441c34.png)

長押ししたら欠勤

![SORACOM_Lagoon_-_New_dashboard-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26468/071fd17b-af83-534e-39c1-90661032dc5c.png)

と言う形で想定通りに作ることが出来ました。

今回は一つのボタンでやりましたが、これを数十個設定すれば、メンバーの勤怠状況が見える化出来ますね。
1年越しでまたボタンのことを書いたので、来年はボタン以外のことも書こうと思います。