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コンポーネントを配置します。
プロパティを設定
プロパティを設定します。
プロパティ | 値 | 例 |
---|---|---|
チャンネル | 投稿先のチャンネル、もしくはユーザー |
#general 、@ktamura
|
テキスト | 投稿したいメッセージ | Hello World! |
トークン | Slackで作成したアプリのトークン | |
テスト時には、自分のユーザーIDを指定しておくと自分のSlackbotに投稿されるので、他の人に迷惑をかけることはありませんw |
実行
実行ボタンで実行すると、下にコンソールが現れ、実行されます。
センサーからの値を埋め込む
センサーからの値をメッセージに埋め込むには Pre Mappings を使います。
Pre Mappingsはコンポーネントを実行する前に前処理を実行します。多くの場合は、コンポーネントのプロパティを生成したいときに使います。
このように、Slack Post Messageを選択した状態で、 Pre Mappingsの右にある「+」をクリックしてマッピングを追加し、左辺に cp.Text
、右辺に"現在の温度は" + tv.Data + "℃です"
と入力します。
左辺のcp.Text
のcp
はコンポーネントプロパティ(component property)で、Text
はそのプロパティ名です。入力が終わると左のPropertiesのテキストがグレーになったと思います。つまり、プロパティ テキストにこのマッピングを代入するよということです。
右辺にはプロパティに設定する式を指定してます。文字列を合成しているだけですが、 tv.Data
のtv
はトリガー変数(trigger variable)の意味です。トリガー変数のData
には、トリガーからこのアクションが実行されたときに、センサーのデータがセットされてきます。
実行すると、こんな感じ。Gravio Studioから実行するとtv.Data
にはダミーのセンサー値として0が渡されますので、これでOKです。
温度センサーをペアリングして、トリガーを設定する
実際の温度を埋め込んでみます。温度センサーをペアリングして、このように温度センサーのレイヤーにバインドします。センサーを有効にするのを忘れないでください。
トリガーはこのように設定します。エリア、キーレイヤーには温度センサーのエリア、レイヤーを指定します。Temperatureのところには「任意の値」を選んでおきます。センサーのデータを受信するたびにアクションが実行されます。アクション名には、上で作成したアクションを指定します。
保存して、トリガーを有効にします。
温度センサーの横のスリットに息を吹きかけたりして温度変化を与えてください。下のように温度がSlackに投稿されてきました。
Gravioの温度センサーは温度変化などがあったときにだけデータを送信します。変化がないときはほとんどデータを送信しませんので確認するときはセンサーを温めるなどするようにしてください。
ポイント
- Slackでメッセージを投稿するにはSlack Post Messageコンポーネントを使う
- メッセージを合成するにはPre Mappingsを使って
cp.Text
に渡す - センサーからの温度を使うには
tv.Data
を使う