LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

Organization

GravioのLINE WORKSコンポーネントを使ってCO2濃度が高くなったら「換気してね」と送ってみた

少し前に「CO2濃度が高くなったからGravioからLINE WORKSに「換気してね」と送ってみた」でGravioからLINE WORKSへ汎用のHTTP Requestコンポーネントを使ってメッセージを送る記事を書いてみた。
さて、先日、クリスマスプレゼントのようにGravio 4.4.2がリリース、 LINE WORKSコンポーネント が追加され、前記事より超簡単になった上にスタンプ、画像も送れるようになり、パブリックIPの固定も必要なくなった。これは試さずにはいられないので早速試してみる。

TL;DR

  • GravioでCO2センサーの値を拾います
  • アクション内のLINE WORKSコンポーネントをつかって「換気してね」とポストします。
  • CO2濃度が1000ppmを超えていたらトリガーでアクションを実行します

使用環境

  • Raspberry Pi 4 Model B w/4GB RAM
  • Ubuntu Server 20.04.3 LTS
  • Gravio HubKit v4.4.2-6958
  • Gravio Studio v4.4.4287.0
  • Gracio CO2センサー (Gravio Standardの契約が必要)
  • LINE WORKS

事前準備

  • https://line.worksmobile.com/jp/ から「LINE WORKS」にサインアップして管理者権限をもらっておいてください
  • Gravio 4とPower BIでCO2を可視化する」を参考にCO2データを取得できるようにしておいてください。
  • GravioからインターネットにでていくときのPublic IPアドレスを調べておいてください。下記のようなサイトで調べることができます。会社ネットワークの場合は、IT管理者さんなどに聞いてみてもいいでしょう。 https://www.cman.jp/network/support/go_access.cgi LINE WORKSコンポーネントのおかげで要らなくなりました!

手順

LINE WORKSでの設定

APIのトークンを発行する

LINE WORKSのDeveloper Consoleにログインします。
今回はAPIの2.0は使わずに従来バージョンを使いますので、「API」をクリックします。
image.png

まずはAPI IDを発行します。
image.png

API IDはコピーしてどこかに保存しておいてください。
image.png

次にServer API Consumer Keyを発行します。Service API Consumer Keyではないので要注意。
image.png
APIの利用範囲を指定します。今回、とりあえずすべてチェックしました。投稿だけであれば「追加」だけでいいと思います。
image.png
Tokenの設定をします。有効期限はとりあえず「365日」、自動延長も「はい」を指定しておきます。これも用途に応じて適切に指定してくださいね。

image.png

これまたKeyをコピーしてどこかに保存しておいてください。
image.png

ここから手順が以前と違います。Server List(ID登録タイプ)の「追加」ボタンをクリックしてください。
image.png

サーバー名に「Gravio」、Keyはさきほど生成したものを選択して保存してください。
image.png

IDが発行され、認証キーもダウンロードできるようになります。これらをどこかに保存しておいてください。
image.png

Botを作成する

Botメニューに移動します。
image.png

Botの設定をします。
プロフィール画像は適当に指定しておくとわかりやすいです。
Bot名、説明もわかりやすく入力しておきます。
API Interfaceには「従来のAPI」を選択します。
Callback URLには「Off」を選択します。Gravioの場合、ローカルネットワークに設置することが多くコールバックを受けることができないためです。そもそもGravio自身もコールバックを受ける仕組みがないですしね。
「複数人のトークルームに招待可」もチェックしておきます。ここは運用に応じて決めてください。
最後に管理者を決めて保存します。
image.png

できました。Bot Noをどこかに保存しておきます。
image.png

Developer Consoleはここまでです。

Botを追加する

LINE WORKSのサイトにログインして、管理者画面に移動します。
image.png

Botの登録及び管理者画面に移動します。
image.png

「Bot追加」をクリックします。
image.png

先ほどDeveloper Consoleで作成したBotが一覧に出てくるので、「追加」をクリックします。

image.png

前の画面に戻って追加したBotの詳細を表示します。公開設定が「非公開」になっています。「修正」ボタンをクリックして変更します。
image.png

「公開設定」をチェックして簡単にトークルームに追加できるようにしておきます。
image.png

あとから戻ってくるので、管理者画面はそのまま残しておいてください。

トークルームを作成する

LINE WORKSに戻って、通知を送る先のトークルームを作成します。
image.png

通知に入れたいメンバーと上で追加したBotを選択して「OK」をクリックします。
image.png

トークルームができました。
image.png

トークルームIDが必要なのでこれから取得します。いろいろやり方はあるようですが、管理者権限があれば一番簡単な方法を紹介しておきます。

まず、トークルーム上でなにかトークします。
image.png

ここで開いておいた管理者画面に移動し、「監査」「トーク」を開きます。ここにはトークルームで発言した内容が表示されていると思いますので、その一番右に表示されている「トークルームID」をメモしておきます。

image.png

ちなみに、監査ログに表示されるまで少しタイムラグがあります。今回の場合、ポストしてから10分以内には表示されました。

LINE WORKSで取っておいたデータの一覧

さて、ここまでで準備が整いました。長かったですが、最終的にGravioでの投稿に必要となる情報は以下の情報です。
取り忘れてるものがないかチェックしておいてください。

  • API ID
  • Server API Consumer Key
  • Server ID
  • Server認証キー(ファイル)
  • Bot No.
  • トークルームID

Gravioでの設定

アクションを作成する

アクションは前回よりさらに簡単になりました。まずLINE WORKSコンポーネントを追加します。

image.png

プロパティには以下のように指定します。せっかくなのでスタンプも追加してみましょう。LINE WORKSで使えるスタンプは こちら から見ることができます。

プロパティ
パッケージID 1
スタンプID 3
送信先種類 「トークルームID」
送信先ID 監査ログで取得したロークルームID
API ID Developer Consoleで取得したAPI ID
Consumer Key Developer Consoleで取得したConsumer Key
Server ID Developer Consoleで取得したServer ID
API ID Developer Consoleで取得したAPI ID
認証キー 「ファイルを選択する」をクリックしてDeveloper Consoleからダウンロードしたファイルを選択するとキーが展開されます
Bot No Developer Consoleで取得したBot No

Pre Mappingsではヘッダとボディを次のように指定します。JSONじゃないので簡単ですね。ただし、変数名がHTTP Requestのときの cv.Payloadではなくcp.Messageなので注意してください。

cp.Message = "CO2が" + tv.Data + "ppmです。換気しましょう"

image.png
image.png

実行してみましょう。トークルームにメッセージがポストされましたね!アクションを直接実行しているので0ppmになってます。スタンプも送られているので、より危機感がでてますねw
image.png

トリガーで連携

さて、ここまできたらあとは簡単です。前回と同じくトリガーを作成して、CO2センサーの値が1000ppmを超えたときに上で作ったアクションを実行するように指定します。

CO2が1000ppmを下回るまでずっとメッセージが来るのはうざいので、「閾値によるトリガーを利用」をチェックしておきます。こうしておくと、1000ppmを超えたときに一度アクションが実行されるだけで、あとは値が1000ppmを下回るまではアクションが実行されません。
image.png

作成したら有効にするのを忘れないでくださいね。
image.png

結果の確認

CO2センサーに息を吹きかけてみましょう。どうですか?トークルームに値付きでメッセージが投稿されましたか?

image.png

だめなら設定を見直してみましょうね。

ポイント

  • LINE WORKSのAPI Tokenを取得するときにServer(ID登録タイプ)を選ぶ
    • HTTP Requestのときと同じく固定IPタイプを使うことも可能だが、選択するメリットはない(たぶん)
  • スタンプや画像も一緒に投稿することでより注意喚起できる
  • Gravioのトリガーでは「閾値によるトリガーを利用」をチェックしておく

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0