ChatGPTとプラグインを使ってIoTサービスのサンプルプログラムを作成する
2023年10月17日 火曜日
CONTENTS
IIJのIoTサービスをご利用の皆様、そして本記事に興味を持ってくださった皆様、こんにちは。
今回は、Gateway APIを活用してデバイスからのセンサーデータをIIJ IoTサービスに送信するプログラムをChatGPTに作成してもらう方法について解説します。
本記事に出てくる用語
Gateway APIとは?
Gateway APIは、デバイスからのセンサーデータを送信することで、IIJ IoTサービスが提供する多彩なプラットフォーム機能を利用するためのAPIです。
通信は、インターネットに出ない閉域網での接続、もしくはVPNプロトコルによる暗号化が行われているため、安全にデータを送信することができ、HTTP、FTP、TCP、UDP、MQTTといった多様なプロトコルを利用できます。
さらに、Gateway APIを経由することで、SIMの電話番号やIMSI、デバイスID、ラベル情報などのデバイス情報の取得や更新も可能となっています。ChatGPT / ChatGPT Plugins
こちらはみなさんがご存知の通りですが、一応御本人の自己紹介を聞いてみようと思います。私はOpenAIによって開発されたGPT-4というアーキテクチャを基にした言語モデル、ChatGPTです。私はテキスト情報を元に質問に答えたり、情報を提供したり、さまざまなタスクをサポートすることができます。
プラグインは、私(ChatGPT)の基本的な機能を拡張するための追加モジュールのようなものです。これにより、特定のタスクや機能を効率的に実行することができます。例えば、ウェブブラウジング機能や特定のAPIとの連携など、私の基本的な言語モデルだけでは実現できない機能を追加することができます。
今回利用するPluginsの1つであるBrowserOpについても教えてもらいました。
BrowserOpは私のプラグインの一つで、ユーザが指定したURLや検索クエリに基づいてウェブページの情報を取得することができます。具体的には、ウェブページの内容を取得したり、リアルタイムの検索エンジンの結果を取得することができます。これにより、最新の情報や特定のウェブページの内容に基づいて質問に答えることができます。
とのことです。
IoTサービスを使ってみる時の「面倒さ」
何をするにも最初の一歩は足が踏み出しにくいものだと思いますが、弊社のIoTサービスにおいても努力及ばずにそういったご意見をいただく機会があります。
そこで、サービスを利用いただく第一歩目である「説明書を読む+サンプルプログラムを作成する」をChatGPTに手伝ってもらおうと思います。
ChatGPTでPlugin機能を有効化する
※2023/09/27現在の操作となります。
※Pluginsの機能は、有料ユーザのみに開放されています。
※もし有料契約をされていない場合は、こちらのページを丸ごとコピー&ペーストしてみてください。大体同じことができますよ!
まずはChatGPTにログインします。
ChatGPTの画面左下にあるメールアドレスの隣、三点リーダーから「プラス設定&ベータ」というボタンを選択します。
そして、さらに「ベータ機能」から「プラグイン」をONにしてください。
画面上部のGPT-4の部分にPluginsという項目を選択します。
今回はBrowseOpというプラグインを使いたいので、Plugin Storeから探します。
※ちなみに、WebPilotなどの他のブラウジング系プラグインでも大抵動作しますよ!
インストールボタンを押下し、インストールしましょう。
画面上部がこのように表示されていたら準備完了です!
ChatGPTにお願いする
今回は「IoTサービスのサンプルプログラムを作成」するという目的でした。
どういうお願いをすれば上手く回答してくれるか、考えるのは面倒ですね。
PluginsのBrowserOpは、必要に応じて不明な用語は検索をしてくれる検索エンジンのようなことをしてくれるのですから、検索エンジンと同じように気軽にお願いをしてみることにしましょう。
Q:
IIJ IoTサービスのGatewayAPIを用いたサンプルプログラムをPythonを使って作成してください。A:
使用した BrowserOp
{
“link”: “https://www.iij.ad.jp/”
}BROWSEROPからのレスポンス
{
~中略~
}IIJ (インターネットイニシアティブ) の公式サイトを確認しましたが、IoTサービスのGatewayAPIに関する具体的な情報やサンプルプログラムは見当たりませんでした。
もし、特定のページやドキュメントを参照している場合、そのURLを教えていただけると助かります。また、IIJの公式ドキュメントや開発者向けのページにアクセスして詳細を調べることも可能です。
具体的な情報やリンクを提供していただけると、より詳しく調査してサンプルプログラムを作成するお手伝いをいたします。
さすがに気軽すぎたのか、IIJだけを検索してしまいましたね。
具体的な検索ワードを伝えて、より検索しやすいようにしましょう。
GatewayAPIというのを使うことになるので、お願いの中に具体的な用語を伝えてみます。
Q:
IIJ IoTオンラインマニュアル GatewayAPIと検索すればヒットしますA:
使用した BrowserOp
{
“link”: “IIJ IoTオンラインマニュアル GatewayAPI”
}BROWSEROPからのレスポンス
{
~中略~
}IIJのIoTサービスに関するGateway APIの情報を以下にまとめました:
Gateway API は、デバイスからセンサーデータを送信することで、IoTサービスが提供するプラットフォーム機能(デバイスモニタリング、データハブ、データストレージ、クラウドアダプタ)を利用できます。
対応プロトコル: HTTP、FTP、TCP、UDP、MQTT
通信はインターネットに出ない閉域網での接続なので、通信の暗号化を行うことなく安全にデータが送れます。
Gateway API 経由で SIM の電話番号、IMSI、デバイス ID、ラベル情報の取得や、ラベル情報の更新・削除も可能。
送信時の仕様:エンドポイント: gw.iot.iij.jp
HTTP/TCP/UDPテキストデータ送信例:
import requests
data = {“name”: “test_data”, “value”: 100.0}
response = requests.post(“http://gw.iot.iij.jp/v1”, json=data)バイナリデータ送信もサポートしており、その際のエンドポイントは gw.iot.iij.jp/v1/binary となります。
詳細な情報や他のプロトコルに関するサンプルは、公式のオンラインマニュアルで確認できます。
この情報を基にPythonでのサンプルプログラムを作成することができます。具体的な実装や他の詳細に関してもっと知りたい場合は、お知らせください。
今度は検索を進めてくれて、サンプルプログラムを作成してみてくれました。
では、IoTサービスに接続したデバイスから、問題なく動作するか確認をしてみましょう。
こんな感じで、そのままコピー&ペーストしてEnter。
・
・
・
このコードだと、なーにも反応やレスポンスがありません。
少し時間を開けて、同じことをもう一度行ってみます。
・
・
・
さて、これだけでデータが本当に届いているのか、IoTサービスのコントロールパネルから確認をしてみます。
デバイスモニタリングという機能で、データをグラフにしてくれるので、そのページに進みます。
すると、
ちゃんと表示されていますね!
ChatGPTにただお願いしたものを貼り付けただけで、グラフ表示を試すことができました!
こんなに簡単にできるのであれば、少し難しいこともお願いしてみたくなります。
ランダムな数値データを1秒毎に、30秒間送ってもらうとどうなるでしょうか。
そのままこのお願いをしてみましょう。
おお、先程と打って変わって長いプログラムが出てきました。
ではまたこれを貼り付けて、、、Enterっと。
おお?
たくさんデータが送信されている感じがしますね。
では、デバイスモニタリングでもどうなっているか確認してみます。
おおお!ちゃんと表示することもできました。
なんか、とってもそれっぽいです。
まとめ
実際は、プログラムの品質には気を配っていただく必要がありますが、
IoTのプログラム作成最初の一歩として、手軽に感じていただけたのではないでしょうか。
このようなChatGPTを使った便利機能の検証は他にも準備を進めています。
どこかで皆様にアナウンスできればと考えています。
IIJのIoTサービスは、多彩なプロトコルに対応したGateway APIを提供しており、デバイスからのデータ送信を簡単かつ安全に行うことができます。
今回のブログで紹介した内容を基に、ぜひ実際のデータ送信の実装に挑戦してみてください。