前回は「hostapdとudhcpdを使ってiPhoneが接続できるAPを作る」ところまで進みました。今回はWebサーバーとCGIの実装です。
Webサーバーを動かす
SX-IMAPP-SDKのbusyboxはデフォルトでWebサーバー機能が実装されています。「httpd –help」で簡単な使い方を調べることができます。
# httpd --help
BusyBox v1.19.4 (2014-08-05 19:14:14 PDT) multi-call binary.
Usage: httpd [-ifv[v]] [-c CONFFILE] [-p [IP:]PORT] [-r REALM] [-h HOME]
or httpd -d/-e STRING
Listen for incoming HTTP requests
-i Inetd mode
-f Don't daemonize
-v[v] Verbose
-p [IP:]PORT Bind to IP:PORT (default *:80)
-r REALM Authentication Realm for Basic Authentication
-h HOME Home directory (default .)
-c FILE Configuration file (default {/etc,HOME}/httpd.conf)
-e STRING HTML encode STRING
-d STRING URL decode STRING
取りあえずホームディレクトリー(/root)にindex.htmlを作成し、
This is SX-580 SDK HTTP test
Shellからhttpdを起動し、「ps」でhttpdが動作していることを確認してみます。
# httpd
# ps
PID USER VSZ STAT COMMAND
1 root 1204 S init
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
.
.
.
316 root 2224 S hostapd -B /etc/hostapd.conf
322 root 1192 S udhcpd /etc/udhcpd.conf
325 root 1196 S inetd /tmp/inetd.conf
326 root 1200 S -sh
335 root 1188 S httpd
341 root 1192 R ps
この状態でiPhoneをSSID IMAPP-SDKに接続し、ブラウザーで「192.168.99.1」を開けば先ほどのindex.htmlが表示されます(デフォルトではやたら字が小さいので、拡大しなければ読みにくいかも知れません)。

以上のように、「読むだけ」のWebサーバーを作るのは呆気ないほど簡単です。しかし今回のテーマは「iPhoneからWi-Fiで操作できる電気スタンド」ですので、Webブラウザーからの操作を受け付けなければなりません。Webブラウザーからの操作は「フォーム」と「CGI」という2つの要素によって構成されます。