LoginSignup
5
5

More than 3 years have passed since last update.

【NoCode 2020】 MQTTブローカーの shiftr.io と IFTTT の Webhook をつなぐ(shiftr.io の HTTP Interface)

Last updated at Posted at 2020-12-29

内容は表題のとおりで、IoT でよく利用される MQTT と HTTPリクエストベースの Webhook とをつなぐ、という話です。

IFTTT が絡むネタなので、後付けで NoCode Advent Calendar 2020 の 25日目に登録してみました。

MQTTブローカーの shiftr.io

IoT でよく利用される MQTT は、MQTTブローカーという仲介役を介してデータのやりとりを行います。自分自身も、過去に IoT関連の仕組みを使う際やデバイス・サービス間連携の試作をする中でよく利用している仕組みです(過去に書いた Qiitaの記事でも何度も登場しています)。

その仲介役になる部分は自前で用意する方法もあるのですが、クラウド上で提供されているサービスを利用することもできます。そのサービスの中の 1つがタイトルにも登場している「shiftr.io」です。現在は、クラウド上のサービスと、デスクトップ上で動くアプリの提供が行われていたりします(「そのあたりの話について書いた記事」もありますので、よろしければご覧ください)。

shiftr.io の HTTP Interface

今回は、この MQTTブローカーサービスの中で提供されている「HTTP Interface」の話です。

この話は、11月の中頃にサービスのリニューアルの話をチェックしていた際に、以下の内容を見かけて調べていました。

そして、直近で書いた記事では、以下の IFTTT を使った AIアシスタント連携機能と MQTTブローカーの間をつなぐために利用していたりします。IFTTT の出力側(アクション)を Webhook にして shiftr.io に HTTPリクエスト(POST)を送り、shiftr.io の HTTP Interface で受け取ったものを MQTT にして連携させていたデバイスへ送る、ということをやっていました。

●【スマートスピーカー 2020】 IFTTT で Alexa・Google Assistant を利用して IFTTT Pro の新機能(クエリー・フィルター)との組み合わせも試す - Qiita
 https://qiita.com/youtoy/items/ab6747622d137fcadead

公式ドキュメントの URL は以下となります。

●HTTP Interface - shiftr.io
 https://www.shiftr.io/docs/broker/http-interface/

そして、Publish を curl で行う場合のやり方が以下の部分に書かれています。

HTTP_Interface_-_shiftr_io.jpg

上の画像では記載が途切れていますが、この中の 1つ目は以下の内容となっています。

curl -X POST 'https://public:public@public.cloud.shiftr.io/broker/foo/bar' -d 'Hello World!'

あとは、上記の HTTPリクエスト(POST)を IFTTT の Webhook から送ってやれば OK という形です。

IFTTT の Webhook から shiftr.io の HTTP Interface へ

この記事の途中で紹介した、IFTTT の AIアシスタント連携機能を用いた記事の話で、Webhook の設定をした部分を掲載してみます。

こちらの「トリガーがAlexa連携」で「アクションが Webhook」というアプレットの、アクション側の設定の話です。
IFTTT_Alexa_Webhook.jpg

一部マスクしつつ、設定画面を掲載します。
IFTTTのアクション.jpg

以下の curl を使った例で太字にした部分は、上記の画像で赤で下線をひいた部分に対応する部分ですが、これらはご自身が shiftr.io で設定をする中で取得できる情報(@ 前後にあるそれぞれの部分)と、任意に設定する部分(以下の foo/bar の部分)になりますので、置きかえが必要です。

curl -X POST 'https://public:public@public.cloud.shiftr.io/broker/foo/bar' -d 'Hello World!'

あとは、上記の例では POST で、テキストを text/plain で送っているようなので、そのように設定します。
また、上記の -d 'Hello World!' で送っている内容は、送信されるメッセージで、自分は「Hello」という内容にしています。
(MQTT の受信側で、この「Hello」というメッセージを受け取る想定での処理を書いている部分があります)

全体構成を図にすると以下のようになります。
202012末_構成図を記事用に.png

まとめ

以上の仕組みを利用することで、サービス・デバイス間をつなぐ仲介役について、入力側は HTTPリクエスト(POST)による Webhook、出力側が MQTT となる構成をとることができました。

他サービスでも似た仕組みを提供しているサービスがありますが、その話はまた別の機会に。

5
5
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
5
5