Top View


Author Yuhei Okazaki

IoTでオフィスの消耗品の減少を通知するためのボタンを作る

2022/07/15

システム構成

今回開発するシステムは下図のように、デバイス・SORACOM・AWS・Slackを組み合わせて構築しています。特筆すべき点として、デバイスからSORACOMプラットフォームへの接続にSORACOM Arcを使うことで、物理SIMを使わずにWi-Fi経由で接続するという特徴があります。

ボタンを押すとSlackには下図のような通知が来ます。リンクをクリックすると減少した消耗品の販売ページに飛び、そのまま発注ができる仕組みになっています。

必要な時間、概算費用

このボタンを作るために必要な時間、費用は以下の通りです。

  • 必要な時間: 約120分
  • 概算費用: 約7,500円

※概算費用とはSORACOMやAWSの利用料、ハードウェアの購入費用を概算しています。以下は考慮していません。

  • サービスの無料枠
  • インターネット通信料
  • 送料
  • Slack利用料

使用するサービス

SORACOM

AWS

Slack

  • Slackワークスペース

用意するもの

品名数量費用参考
M5Stack Basic15,300円
microSDカード11,000円M5Stackに挿してフォントデータを読み込ませるために使用するので、容量が少なくても大丈夫です
USB電源11,000円M5Stackへの電源供給に使用します

使い方

作業を始める前に、ソースコード一式を取得してください。

$ git clone git@github.com:fusic/dash-button.git
$ cd dash-button

Slack

本システムを使うためには予めSlack Appを作成しておく必要があります。以下ページより作成・インストールしてください。

アプリを作成したら、以下情報をメモしておいてください。

  • Slack AppBot User OAuth Token
  • Slack通知先チャンネルID (Slackのチャンネル名をクリックすると最下部に表示されます)
  • Slackメンション先メンバーID (Slackのプロフィール画面の「メンバーIDをコピー」をクリックすることで取得できます)

AWS

AWSの環境はAWS SAM CLIを使って、コマンドラインでデプロイできるようになっています。

こちら のドキュメントを参考にインストールした上で、以下コマンドを実行ください。

$ sam build
$ sam deploy --guided

Configuring SAM deploy
======================

        Looking for config file [samconfig.toml] :  Found
        Reading default arguments  :  Success

        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [fusic-dash-button]: fusic-dash-button # 任意の名前でOK
        AWS Region [ap-northeast-1]: ap-northeast-1 # 他リージョンに変更可
        Parameter SlackBotToken []: (Slack App Bot User OAuth Token) 
        Parameter SlackChannel []: (Slackの通知先チャンネルID) 
        Parameter SlackMensionId []: (Slackのメンション先メンバーID)
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [y/N]:  y
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]: y
        #Preserves the state of previously provisioned resources when an operation fails
        Disable rollback [y/N]: n
        Save arguments to configuration file [Y/n]: y
        SAM configuration file [samconfig.toml]: samconfig.toml
        SAM configuration environment [default]: default

SORACOM

SORACOMはコンソールにログインして作業します。

まずSORACOM Arcを使用するため、仮想SIMを作成します。以下ドキュメントを参考に作成してください。

次にデバイスからデータが送信されたときにAWSのLambda関数を実行させるため、SORACOM Funkを有効化します。以下ドキュメントを参考に設定してください。

最後に、デバイスが送信しているバイナリデータをJSONに変更するため、SORACOMのバイナリパーサーを設定します。以下ドキュメントを参考に設定してください。

今回は item:0:uint:32:little-endian というフォーマットを指定することで、デバイスから送信するメッセージをLambda関数で解釈できるようになります。

デバイス

デバイスのコンパイル、書き込みにはArduino IDEを利用します。以下ページよりお使いのOSに合わせてインストーラをダウンロードし、インストールしてください。

インストールが完了したら、device/main.ino をArduino IDEで開いて、マイコンボードに書き込んでください。

書き込みが完了したら、お手持ちのスマートフォンからM5Stack上で起動しているアクセスポイントへ接続し、M5StackをWi-Fi接続するよう設定します。詳細は以下記事を参照ください。

運用開始

ここまでの手順で準備は完了です。デバイスを消耗品の近くに設置しましょう。

弊社の場合は、社内に周知した上で以下のような張り紙をしておきました。

終わりに

弊社ではFusicダッシュボタンの運用を開始して以降、バックオフィスチームが消耗品を定期的に棚卸しなくても、社員から通知が上がってくるようになりました。(細かい振り返りは こちらの記事 にまとめています)

簡単に始められる社内DXの一例として、皆様の参考になれば幸いです。

Yuhei Okazaki

Yuhei Okazaki

Twitter X

2018年の年明けに組込み畑からやってきた、2児の父 兼 Webエンジニアです。 mockmockの開発・運用を担当しており、組込みエンジニア時代の経験を活かしてデバイスをプログラミングしたり、簡易的なIoTシステムを作ったりしています。主な開発言語はRuby、時々Go。