
ESP32でSPIFFSやSDカードの中身を確認したいとき、多くの開発者はシリアルモニターに頼る。だがシリアル接続が必要だし、ファイルの追加や削除にはコードの書き換えが伴う。もっと手軽にファイル操作できないか。
GitHub上で公開された「www_fs」は、ESP32をWiFi経由のファイルサーバーに変えるファームウェアだ。ブラウザからアクセスするだけで、内蔵フラッシュ(SPIFFS)やSDカードの内容を閲覧、ダウンロード、アップロード、削除できる。
ASP風の動的コンテンツ生成
このプロジェクトで注目すべきは、同じ開発者が作った「ClASP」というツールスイートを使っている点だ。ClASPはMicrosoftのASP(Active Server Pages)に似た構文で、C言語のコード内にHTMLテンプレートを埋め込める。
たとえば<%for(int i=0; i<10; ++i){%><br /><%}%>と書けば、10個の改行タグが出力される。<%=変数名%>で変数の値を埋め込むことも可能だ。生成されたCコードは、ESP-IDFのHTTPサーバーAPIを通じてそのままHTTPレスポンスとして送信される。
ClASPには3つのツールが含まれる。claspは動的な.claspファイルからCコードを生成し、clstatは静的ファイルをHTTPヘッダー付きで埋め込み、clasptreeはフォルダ全体をWebサイトとしてCヘッダーに変換する。圧縮やContent-Typeの自動検出にも対応している。
複数ボードに対応、NeoPixelでステータス表示
www_fsはESP-IDF/PlatformIO向けに書かれており、ESP32-C3、ESP32-C6、ESP32-S3、M5Stack Core2、TTGO T1など複数のボードに対応する。設定ファイルを編集すれば他のボードも追加できる。
NeoPixel搭載ボードでは、ダウンロード中は青、アップロード中は赤に光るステータス表示機能もある。WiFi設定は/data/wifi.txtにSSIDとパスワードを書いておくだけだ。
ESP32で手軽にWebベースのファイル管理が必要な場面では、参考になる実装だろう。ClASP自体もWin32やPOSIX環境向けのサンプルを含んでおり、組み込み以外の用途にも応用できる。

