0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

Gravio 4で温度をSlackに投稿してみる

Gravioでセンサーの値を確認するのにはSlackを使うのがとても便利です。Gravio Studioのデータビューアーでももちろん確認はできるのですが、Slackであればスマホでどこでも見ることができますからね。トリガーで条件を指定しておけばある条件を満たしたときだけ投稿するということも可能です。

Gravio 4では、メッセージの作り方が少し変わりましたので紹介しておきます。

使用環境

  • Windows 10 20H2 (19042.746)
  • Gravio HubKit v4.1.4049.0
  • Gravio Studio v4.1.5432.0

事前準備

Slackのワークスペースを作成し、メッセージを投稿するためのトークンを取得しておいてください。
(参考)
https://api.slack.com/authentication/basics
https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21

手順

Slack Post Messageコンポーネントを配置

新しくアクションを作成し、Slack Post Messageコンポーネントを配置します。
image.png

プロパティを設定

プロパティを設定します。

プロパティ
チャンネル 投稿先のチャンネル、もしくはユーザー
#general@ktamura
テキスト 投稿したいメッセージ Hello World!
トークン Slackで作成したアプリのトークン

テスト時には、自分のユーザーIDを指定しておくと自分のSlackbotに投稿されるので、他の人に迷惑をかけることはありませんw

image.png

実行

実行ボタンで実行すると、下にコンソールが現れ、実行されます。
image.png

Slackには、このように投稿されました。
image.png

センサーからの値を埋め込む

センサーからの値をメッセージに埋め込むには Pre Mappings を使います。
Pre Mappingsはコンポーネントを実行する前に前処理を実行します。多くの場合は、コンポーネントのプロパティを生成したいときに使います。

image.png

このように、Slack Post Messageを選択した状態で、 Pre Mappingsの右にある「+」をクリックしてマッピングを追加し、左辺に cp.Text、右辺に"現在の温度は" + tv.Data + "℃です"
と入力します。
左辺のcp.Textcpはコンポーネントプロパティ(component property)で、Textはそのプロパティ名です。入力が終わると左のPropertiesのテキストがグレーになったと思います。つまり、プロパティ テキストにこのマッピングを代入するよということです。
右辺にはプロパティに設定する式を指定してます。文字列を合成しているだけですが、 tv.Datatvはトリガー変数(trigger variable)の意味です。トリガー変数のDataには、トリガーからこのアクションが実行されたときに、センサーのデータがセットされてきます。

image.png

実行すると、こんな感じ。Gravio Studioから実行するとtv.Dataにはダミーのセンサー値として0が渡されますので、これでOKです。

温度センサーをペアリングして、トリガーを設定する

実際の温度を埋め込んでみます。温度センサーをペアリングして、このように温度センサーのレイヤーにバインドします。センサーを有効にするのを忘れないでください。
image.png

トリガーはこのように設定します。エリア、キーレイヤーには温度センサーのエリア、レイヤーを指定します。Temperatureのところには「任意の値」を選んでおきます。センサーのデータを受信するたびにアクションが実行されます。アクション名には、上で作成したアクションを指定します。
image.png
保存して、トリガーを有効にします。

温度センサーの横のスリットに息を吹きかけたりして温度変化を与えてください。下のように温度がSlackに投稿されてきました。
image.png

Gravioの温度センサーは温度変化などがあったときにだけデータを送信します。変化がないときはほとんどデータを送信しませんので確認するときはセンサーを温めるなどするようにしてください。

ポイント

  • Slackでメッセージを投稿するにはSlack Post Messageコンポーネントを使う
  • メッセージを合成するにはPre Mappingsを使って cp.Textに渡す
  • センサーからの温度を使うには tv.Dataを使う

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?