Categories: 工作・開発

ESP32のファイルシステムをブラウザから操作、ASP風テンプレートエンジン「ClASP」で実装

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環境向けのサンプルを含んでおり、組み込み以外の用途にも応用できる。

関連情報

www_fs(GitHub)

ClASP Suite(GitHub)

FabScene編集部

FabScene編集部