【SenseCAP Indicator D1】手元でCodexの作業状況が見えるデバイスにしてみました

たまたま手元にあった SenseCAP Indicator D1 を使って、Codexの動作状態を表示するデバイスを作ってみました。

Codexに作業をさせた場合、処理が終わるまではたいていは自分は別の作業をしているのですが

その時に「作業中か」「承認待ちなのか」「エラーで止まっているのか」を、机の上に置ける小さなディスプレイに表示できたら便利そうな気がしたので

たまたま手元にあった SenseCAP Indicator D1 を使って、Codexの動作状態を表示するデバイスを作ってみました。

今回使ったのは、480×480ピクセルのタッチディスプレイを備えた SenseCAP Indicator D1 です。

**PC側でCodexの情報を取得するプログラム(API)**はCodexに作ってもらい、

SenseCap側の画面UI設計は、EEZ Studioという組み込み用のUI設計ツールを使って自分で画面のデザインを行いました。

EEZ Studioで編集中のCodex Monitor画面UI

SenseCapのファームウェアは基本的な動作部分はCodexが作り、画面UIや細かい部分の調整を自分で行う感じで行いました。

ファームウェアはArduino IDEで作成しました。

まずはLCDを動かすところから

SenseCAP Indicator D1は、ESP32-S3とLCDを搭載しています。(RP2040も搭載されていますが、今回は使用していません)

以前、SenseCapを使ってディスプレイ表示させるArduinoスケッチをつくったことがあったので、このときのディスプレイやタッチパネルの設定を再利用しながら、専用のArduinoスケッチを新しく作りました。

※SenseCapはESP32-S3マイコンを使ってディスプレイ表示させるのですが、内部の回路がI/Oエキスパンダ―を介してディスプレイ制御する必要があるという、一癖ある回路構成になっています

画面のUI表示にはLVGLというライブラリを使いました。

LVGLには基本的なUI部品があらかじめ用意されているので、下図のようなボタンやフォントを使ったテキストなどを比較的簡単に配置・表示させることができます。

SenseCAP Indicator D1に時計とPCのCPU・メモリ・GPU情報を表示した画面

PC側にCodex Monitor APIを用意

PC側に小さなサーバープログラムでAPIを用意し、このAPIがCodexのセッション情報を読み取り、SenseCAP Indicator D1はWi-Fi経由(HTTP通信)でその情報を取得します。

最初は、状態やモデル名、プロジェクト名、トークン使用量、利用枠などを返す構成にしました。

SenseCap側は5秒ごとにPCへHTTPでリクエストを送り、Codexの状態を確認します。

初期バージョン

Codexの実行状態、モデル名、プロジェクト名、トークン使用量を表示する初期画面

画面には、動作状態のほかにモデル名、プロジェクト名、入出力トークン数、利用枠なども表示するようにしました。

複数のCodexセッションを一覧表示

とりあえずイメージした通りにCodexの動作状況がわかるものができたので、これはこれで良いとは思ったのですが、使い続けるうちに、ひとつのセッションだけでなく、複数のCodexセッションをまとめて確認したくなりました。

基本的に承認待ちやエラーで止まっているタスクが確認できれば良いというコンセプトで、複数のタスクを表示できるように改良しました。

ついでに画面の見た目もだいぶ変更しました。

作業中・承認待ち・完了・エラーの複数タスクを表示するSenseCAP Indicator D1

**「作業中」と「承認待ち」と「エラー」**のタスクを優先して表示し、完了したタスクは完了後に一定時間表示させたのちに消えるようなっています。

SenseCAP Indicator D1の画面では、最大4つのタスクをカード形式で表示します。

プロジェクト名や開始時刻、経過時間、動作状態を表示し、承認待ちやエラーがあれば見分けやすくしました。

現状、タスクの詳細は最大4つまでしか表示できませんが、**「作業中」「承認待ち」「エラー」**のタスク数は画面上部で確認できるようにしています。

今後の機能拡張案

ひとまずは自分がやりたいことはできたので満足なのですが、さらにここから下記のような機能拡張もできそうな気もしています。

  • 現状タスクが4つまでしか表示できないので、画面をスクロールして複数タスクを表示可能にする
  • 複数のPC上のCodexの動作状況も表示できるようにする
  • Codexだけでなく、他のAIエージェントにも対応できるようにする

今後も、実際の使用感を見ながら表示内容や使い勝手を改良できればと思っています

広告