技術検証
ChatGPTで家電を音声制御!自然言語×IoTの未来
投稿日:2025年05月16日
はじめに
シリーズ最終回となる第5話では、ChatGPTを使った自然言語での家電制御に挑戦します。
ESP32で赤外線リモコンを制御し、PythonサーバーとMQTTでつながったこのシステムに、
OpenAIのChat APIを組み込むことで「〇〇して」と話しかけるだけで家電が動く世界を実現します。
システム全体像
[Webブラウザ] ─→ inputtext/browser (MQTT)
↓
[Pythonサーバー(MCP)]
├ ChatGPT API にプロンプト送信
└ outputcmd/風呂/1 にMQTTパブリッシュ
↓
[ESP32] → IR送信
MCP(Model Context Protocol)とは?
本プロジェクトで用意した MCPクラス は、ChatGPTとツール(機能)を連携する「頭脳」部分です。
-
? コンテキストの管理(場所、時間、履歴など)
-
? コマンドの実行可能リストの保持
-
? ChatGPTに自然文で指示 → 適切なコマンドに変換
自然言語をどう処理してるの?
入力:「お風呂のテレビを10チャンネルにして」
ChatGPTに送るプロンプト構成:
{
"model": "gpt-4",
"messages": [
{"role": "system", "content": "あなたはツールを活用して家電を制御するAIです。"},
{"role": "user", "content": "お風呂のテレビを10チャンネルにして"}
]
}
ChatGPTの返答(例):
了解しました。お風呂のテレビを10チャンネルに設定するために、
「風呂_1_AMP_0_PANATUN_10」を使用します。TOOL[風呂_1_AMP_0_PANATUN_10]
この TOOL[...]
部分を解析してMQTTに送信します。
コマンドの登録はどうなっている?
前回紹介したスプレッドシート → JSON生成 → irsequence/
に保存
ここにある .json
ファイルのファイル名がそのまま ツール名 になっています。
-
ファイル名:
風呂_1_AMP_0_PANATUN_10.json
-
内容:対象デバイス、ポート、コマンド、delay などの一覧
MCPは起動時にこのファイル群をすべて読み取り、自動で .register_tool()
を行います。
MQTTでのコマンド送信形式
{
"cmd": "AMP_0_PANATUN_10"
}
-
トピック:
outputcmd/風呂/1
-
ESP32が受信し、対応するIR信号を送出します
ユーザーの体験
-
? Webページを開く
-
? 「テレビつけて」と入力して送信
-
? ChatGPTが判断し、ツールコマンドに変換
-
? MQTT経由でESP32へ送信
-
? 赤外線でテレビがON!
おわりに
この5話を通じて、ESP32とPython、MQTT、Google Sheets、ChatGPTを組み合わせて
「学習リモコン×クラウド×AI」 というスマートな制御システムを構築してきました。
学生や技術者にとっても、
-
MQTTやTTS、AI APIの活用例
-
実用性の高いIoTプロジェクト
-
フロントエンドと連携する実践的な構成
として学びが詰まった内容になっていると思います。
会社としての狙いと展望
この取り組みはあくまで社内実験プロジェクトですが、
-
社員のアイデアから始まり
-
実際にデモ機が動作し
-
採用広報や技術ブログとして活用でき
一石三鳥の成果を生んでいます。
今後は、LINE連携や音声認識による入力にも広げていく予定です。
? ご覧いただきありがとうございました!
技術的な相談やコラボレーションの提案があれば、ぜひお気軽にお問い合わせください。