PHPで arduino-cli board listall --json を実行し、
取得したJSONを「オリジナル(raw)」と「整形済み(formatted)」として保存し、
整形済みJSONを標準出力に出す簡易ツールです。
上記に作成したページがあります。
arduino-cliがPATHで実行可能であること- PHP 8.0+ が利用可能であること
CLIから次を実行します:
php run.php成功すると、以下にファイルが保存されます(常に上書き)。
- オリジナル:
storage/raw/board_listall.json - 整形済み:
storage/formatted/board_listall.json
標準出力には整形済みJSON(pretty-print, UTF-8, スラッシュ非エスケープ)が出力されます。
整形済みJSONの内容は、取得データから抽出した「fqbn をキー、name を値」にしたマップです。例:
{
"arduino:avr:uno": "Arduino Uno",
"arduino:avr:pro": "Arduino Pro or Pro Mini"
}board listallで得た全てのfqbnに対して、arduino-cli board details -b <fqbn> --jsonを実行し、結果を保存します。- 保存先(常に上書き)
- オリジナル:
storage/raw/details/<safe-fqbn>.json - 整形済み:
storage/formatted/details/<safe-fqbn>.json
- オリジナル:
<safe-fqbn>はファイル名として安全な形に変換しています(英数字・._-以外は_に置換)。
- 取得したすべての FQBN についての details から、
nameとconfig_optionsのみを抽出し、fqbnをキーにしたマップを生成します。 - 保存先(常に上書き)
- 整形済み:
storage/formatted/board_details.json
- 整形済み:
- 標準出力: 上記の集約JSONを出力します。
- 例:
{
"arduino:avr:uno": {
"name": "Arduino Uno",
"config_options": [
{ "option": "Clock", "values": [ {"value": "16MHz", "is_default": true} ] }
]
},
"arduino:avr:pro": {
"name": "Arduino Pro or Pro Mini",
"config_options": []
}
}- ファイル:
web/index.html - 内容:
storage/formatted/board_details.jsonを読み込み、fqbnとnameの一覧を表示。 テキストボックスに部分一致の文字列を入力すると一覧がフィルタリングされます。- リスト項目をクリックすると検索欄にその
fqbnが入力されます。 - 検索欄の文字列が
fqbnに完全一致した場合、一覧はその1件のみ表示され、 直下にconfig_optionsをラジオボタンで選択できるUIが表示されます(該当が無い場合は非表示)。
- リスト項目をクリックすると検索欄にその
- まずデータ生成:
php run.php - 簡易サーバで配信(推奨):
php -S 127.0.0.1:8000 -t .- ブラウザで
http://127.0.0.1:8000/web/index.htmlを開く
注意: 直接 file:// で開くとブラウザの制約でJSON取得に失敗することがあります。上記の簡易サーバで配信してください。
- 環境変数
ARDUINO_CLI_CMDでarduino-cliコマンド名/パスを上書きできます。
例:
ARDUINO_CLI_CMD="arduino-cli" php run.php- JSONのデコードに失敗した場合でも、オリジナルは
storage/rawに保存します。 また整形済みはフォールバックとしてオリジナル内容をそのまま保存します。
- formatted への保存は廃止しました。
board_details.jsonはweb/board_details.jsonに直接保存・上書きします。- HTML ビューアは
web/board_details.jsonを読み込みます。
- 実行:
php libraries.php - 処理内容:
http://downloads.arduino.cc/libraries/library_index.jsonをダウンロード- ライブラリごとの最新バージョンを採用し、バージョン履歴は重複を除いて新しい順に整列
name,version,versions,author,maintainer,website,category,architectures,types,repository,dependenciesを抽出- 生成したデータを pretty-print で
docs/libraries.jsonに保存(同じ内容を標準出力にも出力)
- 前提:
- ネットワークにアクセスできること
- PHP の cURL 拡張(未インストールの場合は
file_get_contentsでフォールバック取得)