Fusic Tech Blog

Fusion of Society, IT and Culture

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

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

こんにちは。IoTチームの 岡嵜 です。

IoTチームではオフィスのIoT化に取り組んでおり、これまでも ストック番長サテライト番長 といったIoTシステムを社内ローンチしてきました。そんな我々が次に目をつけたのは「消耗品」です。

弊社ではバックオフィスチームがオフィスのあらゆる消耗品を定期的にチェックし、減っていたら発注をしています。バックオフィスチームの負担を減らせるよう、「減っていることに気づいたらバックオフィスにひと声かけようね」という周知はしています。

ただ、リモートワークの普及で会社に発注担当者がいなかったり、後でSlackで連絡しようと思っていたらそのまま忘れてしまったり、なかなか定期的なチェックをなくす、ということが難しい状況でした。

そこで今回、「消耗品の減少をお知らせするボタン」名付けて「Fusicダッシュボタン」を開発しました。

デバイス側、クラウド側のソースコードをGitHubで公開しています。

システム構成

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

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

必要な時間、概算費用

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

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

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

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

使用するサービス

SORACOM

AWS

Slack

  • Slackワークスペース

用意するもの

品名 数量 費用 参考
M5Stack Basic 1 5,300円
microSDカード 1 1,000円 M5Stackに挿してフォントデータを読み込ませるために使用するので、容量が少なくても大丈夫です
USB電源 1 1,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の一例として、皆様の参考になれば幸いです。

yuuu

yuuu

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