2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS IoT CoreとAWS Lambdaを連携して温度データをslackに送信する

Last updated at Posted at 2021-10-06

はじめに

raspberryPiで温度センサーのデータをAWS IoT Coreで受信してlambdaと連携しslackに送信する所までやってみようと思います。

AWS IoT Coreの作り方などは、前の記事で書いています.

開発構成

  • 構成イメージとしては、こんな感じです。
    image.png

検証環境

  • raspberryPi3B+
  • 温湿度センサー(DHT22)
  • AWS IoT Core
  • AWS Lambda

前提

  • デバイスから送られてくるデータをAWS IoT Coreで受信出来ていること

Lambdaの作成

  1. マネージメントコンソールにログインしてLambdaサービスを開き、「関数」→ 「関数の作成」をクリックします

マネージメントコンソール

image.png

  1. lambda作成に必要な項目を入力して「関数の作成」をクリックします
  • オプション:一から作成
  • 関数名:任意の名前
  • ランタイム:今回は、node.js 14x

image.png

  1. 関数の概要」をクリックして「トリガーを追加」をクリックします

image.png

  1. トリガーの追加で「AWS IoT」を追加します

image.png

  1. トリガーの設定で必要な項目を入力して「追加」をクリックします
  • IoTタイプ:カスタムIoTルール
  • ルール:新規ルールの作成
  • ルール名:任意の名前
  • ルールクエリステートメント:SELECT * FROM 'iot/topic'

image.png

  • これでIoT Coreとlambdaの紐づけることができました。
    • IoT Coreサービスを開いてルールに作成したルールが作成されている事が確認できます

image.png

image.png

slack webhook作成

  1. slackを開き「slackをブラウズする」→ 「App」をクリックする

image.png

  1. 検索欄に「Incoming Webhook」で検索してIncoming Webhookを追加します

image.png

  1. ブラウザーが立ち上がるので、「追加」をクリックします
    image.png

  2. チャンネルへの投稿」で**#general**を選択します

image.png

  1. Incoming Webhook インテグレーションの追加」をクリックします

image.png

  1. Webhook URL」をコピーしておきます

image.png

プログラム開発

  1. フォルダーを作成します
$ mkdir slack
  1. プロジェクトを作成します
$ cd slack
$ npm init -y
$ npm install
  1. モジュールのインストール
$ npm install --save-dev @slack/webhook
  1. ファイルを作成します
MACの場合
$ touch index.js

Windowsの場合
$ type nul > index.js
  1. index.jsファイルに以下のソースをペーストしてください
index.js
const { IncomingWebhook } = require('@slack/webhook');


exports.handler = async (event) => {

    const Channel = '#general';

    const hostName = event.deviceid;

    const text = `温度: ${event.temp} 湿度: ${event.humid}`;
    
    const webhook = new IncomingWebhook('-- web hook URL --');  //WebHook URLをペーストしてください
    
    const res = await webhook.send({
      text: text, //通知内容
      channel: Channel, //通知先チャンネル
      username: hostName, //通知時ユーザー名
      icon_emoji: ":ghost:", //アイコン絵文字
    });

    return res;
};

  1. 作成したプロジェクトをzipにして圧縮します
# 完成フォルダー
slack.zip
  1. lambdaを開き「アップロード元」をクリックして先ほど、zipフォルダーをアップロードします

image.png

  1. Deploy」をクリックします

image.png

動作テスト

  1. 実際にraspberryPiからデータをIoT Coreに送ってlambdaが正常に動作するか確認します。

raspberryPi側

pi@raspberrypi:~/sensor_aws $ node main.js 
connect
published message for 1 time
published message for 2 time
published message for 3 time
published message for 4 time
published message for 5 time


  • Lambda実行によりセンサーのデータがslackに送信されている事が確認できました。

image.png

まとめ

lambdaを使ってみましたが、使いやすくて他のAWSサービスとの連携もしやすいなと感じました。
今回は、IoT Coreとlambdaを連携してみましたが、他のサービスとも連携させてみたいと思います。

2
1
0

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
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?