0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Codex CLI × MCPで始めるRaspberry Pi温湿度モニタリング(MiniViz MCP)

0
Last updated at Posted at 2026-08-04

はじめに

Raspberry Piで温湿度を測ってみたい。

やりたいことはシンプルです。でも実際には、送信APIの仕様確認、スクリプトの常駐化、ログ確認まで、コード以外の作業がたくさんあります。

そこで、PC上のCodex CLIを窓口にして、Raspberry Piのセットアップからデータ送信、動作確認、トラブル対応までを自然言語で進めます。

今回作るもの

Raspberry Piに温湿度センサーをつないで、測定値を定期的にMiniVizへ送ります。

やることはこんな感じです:

  • センサーから温度・湿度を取得
  • MiniVizへ定期送信
  • 再起動しても自動で動くよう常駐化(systemd)
  • MiniViz上で最新値や傾向をCodexから確認
  • データが止まったときの原因調査(Pi側のログとMiniViz側のデータを突き合わせる)

使う機材:

  • Raspberry Pi(実機のモデルは検証後に追記)
  • 温湿度センサー(DHT11など)
  • MiniVizアカウント
  • Codex CLI(Claudeや他のCLIでも可)

MiniVizとは?

MiniVizは、IoTデータを受け取り、保存・可視化するためのサービスです。Raspberry PiなどからHTTPで送った値を、まずはグラフで確認したいときに使えます。

Codex CLIとMiniViz MCPの役割

今回のポイントは、Codex CLIを窓口にすることです。

こんな構成になります:

あなた
  └─ 自然言語で依頼
       └─ Codex CLI
            ├─ SSH経由でRaspberry Piを操作
            │    ├─ センサー読み取り
            │    ├─ Python環境と送信処理
            │    ├─ systemd
            │    └─ サービス状態とjournalログ
            └─ MiniViz MCPで許可したprojectを参照
                 ├─ 最新値
                 ├─ 時系列・集計
                 ├─ チャート・ルールの要約
                 └─ MiniViz公式Docs

MiniViz MCPは読み取り専用です。データ送信・変更・削除、通知実行、秘密情報の取得などはできません。また、Raspberry Pi上のログを読む機能でもありません。

Pi側はSSH経由でCodexが確認して、MiniViz側はMCPで確認する。両方を一つの会話で扱えるのがこの構成のメリットです。

1. まずSSH公開鍵でPiへログインできるようにする

CodexがPi側の調査・実装・ログ確認を行うには、PCからSSH公開鍵認証でログインできる状態が必要です。passwordを会話へ貼り付けず、専用の公開鍵をPiのauthorized_keysへ追加します。

確認用プロンプト:

このPCからSSH接続できるRaspberry Piを使います。
構成は変更せず、OS、Python、GPIO関連ツールを確認して、結果を要約してください。
接続先は pi@raspberrypi.local です。

2. ソースコードの前に、GPIOで温度・湿度を取得できるか確認する

いきなり送信処理を書かせません。最初にDHT11から温度・湿度を取得できることを確認します。これで、後から「送信が失敗した」のか「そもそもセンサーが読めない」のかを分けられます。

確認用プロンプト:

DHT11はGPIO4(物理Pin 7)へ配線済みです。

まだMiniVizへの送信コードやserviceは作らず、まずPi上で温度と湿度を取得できることを確認してください。

センサー確認の結果、使ったGPIO番号、失敗した場合の原因候補を分けて報告してください。

3. MiniViz MCPとの連携

センサー値を取れることを確認したら、MiniViz MCPをCodex CLIへ接続し、MiniViz Docsから送信仕様を確認します。MCPのServer URLをMiniVizの「AI連携」画面でコピーし、次のように登録します。

codex mcp add miniviz --url "<コピーしたServer URL>"
codex mcp login miniviz

詳細はこちら

許可済みprojectを確認する

MCP連携後は作成したプロジェクトを確認できます。
image.png

MiniVizの仕様をMCP経由で確認する

MCP経由でAPI仕様などサービス仕様全般を把握させます。

image.png

4. 実装はCodexへ。確認ポイントだけ残す

GPIO取得とMiniViz仕様の確認が済んだら、実装と常駐化をCodexへ依頼します。
ここで大事なのは、コード全文を載せることより「何を判断して、何を確認したか」を残すことです。

GPIO取得とMiniViz仕様の確認結果を前提に、本実装へ進めて。

- 温度と湿度をセンサーから取得
- MiniVizへ60秒ごとに送る
- timestamp、label_key、temperature、humidityを適切な形式で
- project tokenをソースコードに直接書かない
- 送信成功、センサー取得失敗、HTTPエラーをログで区別できるように
- Raspberry Pi再起動後もsystemdで自動起動
- 作業後にサービス状態と直近ログを確認

秘密情報を画面やログに表示しないで。

Pythonやsystemd unitを手書きする必要はありません。
ただし、ブラックボックスにはせず、Codexが作った内容・設定理由・確認結果は必ず説明してもらいます。

あとで見返す4つの確認ログ

  1. 変更前にCodexが示した作業計画
  2. Pi側で確認したservice状態と送信ログ
  3. MiniViz MCPで確認した最新値・時系列
  4. 障害時のログ、切り分け、復旧後の受信確認

ログはそのまま貼らず、project ID、project token、IPアドレス、ユーザー名、認証情報、不要なpayloadはマスクします。
残すのは、判断に必要な時刻・service名・エラー種別だけで十分です。

送信成功ログの見せ方(サンプル)

値とevent IDは実測ではなく、MiniViz DocsのDHT11例と送信契約に合わせたサンプルです。

2026-08-04T18:00:00+09:00 miniviz-dht11[4217]: sensor_read temperature=26.1 humidity=58.0 gpio=4
2026-08-04T18:00:01+09:00 miniviz-dht11[4217]: event_sent status=200 event_id=<redacted> label_key=raspberry_pi_home
2026-08-04T18:01:00+09:00 miniviz-dht11[4217]: sensor_read temperature=26.0 humidity=58.0 gpio=4
2026-08-04T18:01:01+09:00 miniviz-dht11[4217]: event_sent status=200 event_id=<redacted> label_key=raspberry_pi_home

5. MiniViz MCPで送信結果を確認

MiniViz MCPをCodexに接続しておけば、別の管理画面や別のAIチャットに移らず、そのまま確認できます。

ここでは「送信処理が起動している」だけじゃなく、MiniVizまで値が届いて、会話から参照できることを完了条件にします。

MCPで受信データを確認する

image.png

欠損を厳密に追う場合や大量raw eventを確認したい場合は、MiniViz画面とPiログを併用してください。

6. あえて障害を起こし、PiログとMCPから原因を特定する

動作確認だけで終わらせず、意図的に1つ障害を起こして切り分けまで試します。
ここでは、DHT11 serviceを停止して再開するシナリオを使います(安全に元へ戻せるため)。

2026-08-04T18:10:00+09:00 systemd[1]: Stopping MiniViz DHT11 sender...
2026-08-04T18:10:00+09:00 miniviz-dht11[4217]: sender_stopped reason=operator_test
2026-08-04T18:10:00+09:00 systemd[1]: Stopped MiniViz DHT11 sender.

Codexには、原因を決めつけず事実ベースでの切り分けを依頼します。

温湿度データの更新が止まったみたい。
まだ修正せず、次の情報を確認して原因を切り分けて。

1. MiniViz MCPで対象projectの最新受信時刻と直近の傾向を確認
2. Raspberry Piのsystemd service状態と直近ログを確認
3. センサー取得、プロセス停止、HTTP送信、ネットワークのどこで失敗してるか整理
4. 確認できた事実、推測、追加確認が必要な点を分けて説明

原因と修正案を説明して、私が確認してから修正して。

見るポイントは、もっともらしい推測ではなく次の順序で確認できるかです。

  • MiniVizの最終受信時刻
  • Piのservice状態とログ
  • センサー取得 / HTTP送信 / ネットワークのどこで止まったか
  • その判断の根拠

修正後は、service復旧に加えてMiniViz MCPで新しい値の受信まで確認します。

まとめ

今回は、よくある温湿度モニタリングを題材に、ラズパイ構築から運用確認までをAIとMCPで自然言語ベースに進める流れを試しました。
Web開発だけでなく、組み込みLinuxまわりも少しずつ同じように効率化していけると感じています。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?