MISSION:IoTサービスに登場したカスタムフォーマットの新たな使い方を創作せよ
2023年10月31日 火曜日
CONTENTS
【指令】
最近 IIJ IoTサービスのデータハブにカスタムフォーマットなる機能が登場したようだ。
このカスタムフォーマット機能を活用し新たな使い方を創造せよ。
・・・と言われた気がしたので、考えてみることにします。
本記事は半分ネタですが、カスタムフォーマットの使い方のヒントになればと思います。
What is カスタムフォーマット機能
カスタムフォーマットは、データハブの出力フォーマットをユーザ自身で自由に変更することができる機能です。
従来は、加工せずデバイスから送られたデータを HTTP に変換してサーバに転送するか、IoT サービス独自の JSON に加工してから HTTP サーバに転送するかの二択でした。
カスタムフォーマットは、その HTTP リクエストボディを自由に変更することができるようになり、サーバ側の API 仕様に合わせて IoT プラットフォームで変換できるようになりました。また、デバイスのデータは、パラメータとして与えられ固定のテンプレートを流用することが可能です。
つまり・・・🤔
任意の API サーバにデバイスのデータを送信できるということですね💡
少し試してみましょう。
X (旧Twitter) にポスト (旧ツイート) する
// いやぁ、このときはまだ Twitter だったんですよ。
X (旧Twitter) でリアルタイムにセンサーデータを公開する、というのはできそうですね。
Twitter API v2 にツイートする API が用意されているので、それをデータハブで呼び出すことができます。
ポストした結果がこちら。
データハブは、以下のように設定すると機能します。
データ送信は Raspberry Pi + モバイルアクセス で、curl コマンドだと以下のように送信しています。もちろん、単純なテキストメッセージだけでなく、JSON にして複数のデータをまとめて送り、カスタムフォーマットでそれぞれデータを分離することも可能です。
ただし難点があります。
まず、Twitter API を利用可能にするまでの道のりが大変です。X (旧Twitter) の開発者ポータルにて API の利用申請をして初めて API を触る権利が得られます。しかし、実際使おうとすると大変で、最初の山は認証認可の OAuth2.0 です。これを説明すると本当に長くなるのでここでは割愛しますが、OAuth2.0 認証を突破すると、API 呼出しに必要なアクセストークンを取得できます。
しかし、せっかく苦労してゲットしたアクセストークンは、たった 2 時間で期限切れになってしまいます。長く使うためには、定期的にアクセストークンを更新する必要がありますし、新しくしたアクセストークンをデータハブに再設定する必要もあります。
一応、この検証をした時は簡易的なスクリプトを作り、リフレッシュトークンを用いて定期的にアクセストークンを更新し、IoTサービスの WebAPI でデータハブ設定を更新するといったことをやっていました。結局のところ、運用するには専用の常時稼働ホストが必要になるので、まだハードルは高いです (ちなみにそのスクリプト (Node.js)、ご要望あれば公開します)
Microsoft Teams に投稿する
Microsoft Teams でリアルタイムで通知するということもできそうです。Teams にメッセージを送信するには Incoming Webhook を使用します。なお、ここでは Webhook 作成方法は割愛します。
データハブは以下のように設定します。
デバイスからデータを送信すると、こんな感じで通知が届きます。
Teams incoming webhook には Adaptive Card と呼ばれる記法が使用できまして、通知の見た目をかっこよくしたり、ボタンを付けたりと様々なことが表現可能です。以前は書くのが大変で大分ハードルが高かったのですが、最近は Web で簡単にデザインできるように専用のエディタができたので、気軽に書けるようになりました。
Adaptive Cards Designer: https://adaptivecards.io/designer/
なお、使用できる Card Elements はアプリケーションによって異なるので、Select host app を Microsoft Teams にして使用するのが良いです。
おわりに
最近リリースされたカスタムフォーマットの使い方ご参考になりましたでしょうか。
カスタムフォーマット機能により、任意の API サーバにリクエストを送信できるようになったので、使える幅が広がったと思います。本記事で新たな使い方のアイディアに繋がれば幸いです。
今後ともIIJ IoTサービスをよろしくお願い致します。