MISSION:IoTサービスに登場したカスタムフォーマットの新たな使い方を創作せよ

2023年10月31日 火曜日


【この記事を書いた人】
奥野 航平

電子工作からWeb開発まで広く興味を持つエンジニア。2020年からIoTサービスの開発に従事。趣味は、車でドライブ、望遠鏡で天体撮影など。

「MISSION:IoTサービスに登場したカスタムフォーマットの新たな使い方を創作せよ」のイメージ

【指令】
  最近 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サービスをよろしくお願い致します。

奥野 航平

2023年10月31日 火曜日

電子工作からWeb開発まで広く興味を持つエンジニア。2020年からIoTサービスの開発に従事。趣味は、車でドライブ、望遠鏡で天体撮影など。

Related
関連記事