Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@ghibi

ReekohでSigfoxメッセージをSlackにWebhookする

Reekohとは

Reekohとは、IoTデータをNode-REDのようにハードウェアデバイス/APIをオンラインサービスに接続したり、独自のダッシュボードを構築することができるクラウドサービスです。
ただ、フリーサービスではないので、Reekoh社及び代理店からの提供されるエンタープライズ向けツールです。

ReekohでSigfoxデバイスメッセージをSlackにWebhookする

大まかな流れは下記の通りとなります。

  1. Reekohでパイプラインを作成
  2. SigfoxクラウドでCallbackを作成
  3. SlackでIncoming Webhookを設定

Reekoh Pipeline Studioでパイプラインを作成

細かい操作方法は割愛しますが、作成するパイプラインは下図のようなものとなります。
image.png

左から下表のPluginを配置し、各Pluginを接続しています。

Plugin 説明
image.png Sigfox GW SigfoxクラウドからのCallbackを受け取る
image.png Converter 受け取ったデバイスデータをSlack Webhook用JSONに変換する
image.png Webhooks SlackにWebhookする

各Pluginの設定

Sigfox GW

SigfoxクラウドからのCallbackを受け取れるようReekoh社から提供されているPluginです。
特に設定する必要はなく、Saveすると、少し時間をおいて、Callback受信用のIPアドレスが発行されます。(下図赤字のところに表示されるので、この後のSigfoxクラウド側での設定に使います)
image.png

Converter (SigfoxデバイスデータからSlack用JSON)

次にConverterの設定をします。Converter設定のhandler.jsに変換ロジックをJavascriptで入力します。

handler.js
'use strict'

exports.handle = function (data, logger) {
  logger.log(data)
  return Promise.resolve({
    text: 'device=' + data.device + ' payload=' + data.payload,
    icon_emoji: ':globe_with_meridians:',
    username: 'reekoh'
  })
}

ここでは、Promise.resolveのところで、JSON用の連想配列を作っています。
slackのWebhookに投げるには最低{"text":"なんたらかんたら"}というJSONメッセージが必要ですので、
text: 'device=' + data.device + ' payload=' + data.payload,
の一行をいれています。上記のSigfox GWから送られてくるデータ、つまりSigfox Callbackで送るJSONデータは"data.xxx"という形で定義できます。
この場合、Sigfox Callbackでは、

{
 "device": "{device}",
 "payload": "{data}" 
}

と設定されたdeviceとpayloadを指定しています。

Webhook (SlackへWebhook)

ここでは、Webhook URLとして、slackで設定したIncoming WebhookのURLを入力します。
image.png

SigfoxクラウドでCallbackを作成

SigfoxクラウドでのCallbackの基本的な設定方法はこちらを見てください。
その上で、今回の設定例は下表のとおりとなります

項目 設定例 補足
Url pattern https://xx.xx.xx.xx:8080/data ReekohのSigfox GWのIPアドレスを入れます
Use HTTP Method POST
Body {"device": "{device}","payload": "{data}"} ReekohのConverter Pluginのhandler.jsで使います

SlackでIncoming Wehookを設定

基本的なIncoming Webhookの設定方法はこちらがわかりやすかな。

SlackでWebhookで受けたテキストメッセージを表示するChannelを作った後(今回は#reekohというチャネルを例にします)、下記URLからIncoming Webhookの設定をします。
https://slack.com/services/new/incoming-webhook
下記のページでChoose a ChannelというところでWebhookを受けるChannelを選択します。(今回は#reekoh)
image.png
Add Incoming Webhooks Integrationボタンをクリックすると自動的にIncoming Webhook URLが生成されますので、それをコピーして、上述の通り、Reekoh Pipeline StudioのWebhooks Plugin設定に入力してください。
image.png

最後に、ReekohのPipelineをSave&Deployすると、下図のようにSigfoxデバイスからのメッセージがSlackのチャネルに届きます。
図1.png

他にもReekohプラットフォームにはダッシュボード作成機能などもありますので、次に投稿します。
image.png

Sigfox Japan KCCS

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
1
Help us understand the problem. What are the problem?