OpenBlocks IoTをWEBサーバにする

OpenBlocks IoT をWEBサーバにする方法です。
OpenBlocks IoT をセンサー類のゲートウェイとして使用し、さらにWEBサーバとすることができれば、OpenBlocks IoT 1台でセンサーからのデータを入力しモニターする等のシステムを稼働させることも可能となります。
![Screenshot from 2022-08-14 10-28-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/5b26ce5c-cdbb-4e5c-ea82-1b55f186c504.png)
FW4搭載の OpenBlocks IoT を対象とした解説です。FW4非搭載の OpenBlocks IoT については、汎用OSが裸で搭載されているため、それぞれのOSに応じた手段でWEBページの実装と配信が可能であり、それは難しいことではないためわざわざ解説する必要はないでしょう。

>FW4とは？という方はこのサイトを参照してください。
>[IoTゲートウェイソフトウェア FW4](https://www.plathome.co.jp/product/fw/fw4-application/)

一方、FW4搭載の OpenBlocks IoT の場合は、FW4 が HTTP/HTTPS を使用しており、ユーザがWEBページを実装しようとする場合に「さて、どうしたものか」と悩むかもしれません。

>FW4 にはNode-REDが付随しており、Node-REDを用いたWEBシステム実装が可能です。ただし、以下の解説では、Node-REDを使用せずにWEBシステムを実装する方法を述べています。

## FW4のHTTPサーバを利用する
前述のとおり、FW4 は HTTP/HTTPS を使用しています。FW4 のマンマシン・インターフェースはGUIですが、これはWEBで実装されています。このため、FW4 は自身のGUIを処理するためにHTTPサーバを使用しているはずです。

[Debian Linux FW4 WEB-UIガイド](https://docs.plathome.co.jp/docs/openblocks/fw4/webui/reference/index)

FW4 が使用するHTTPサーバをユーザも使用することができます。FW4 のHTTPサーバに相乗りするわけです。
OpenBlocks のメーカーがこれを公に許しているわけではありません。以下に述べる方法でWEBアプリケーションを構築する場合は自己責任でお願いします。

### FW4のGUIはどこにいるのか
FW4 の GUI に使用されているWEBページは、ファイル・システム中のどこにいるのか、これがわかれば FW4 のHTTPサーバに容易に相乗りすることができます。
これを探すのは簡単です。OpenBlocks の Debian にログインしコマンドを使用すればわかります。

>OpenBlocks の Debian にログインするには、FW4の設定でSSHを有効にする必要があります。
>[Debian Linux FW4 スタートアップガイド 初期設定](https://docs.plathome.co.jp/docs/openblocks/fw4/webui/initial/initial)

FW4 の GUI を処理しているのは PHP です。FW4 のログインのページを見ると、`login.php`となっています。
![Screenshot from 2022-08-14 16-36-58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/31b7fb11-856b-ecd4-0749-9d8d0d5cb98d.png)
`login.php`を探すと`/var/webui/docroot`と出てくる。わかりやすいですね。
``` console
root@obsiot:~# find / -name login.php -print
/var/webui/docroot/system/login.php
root@obsiot:~# 
```
### /var/webui/docroot
`/var/webui/docroot`はというと。
``` console
root@obsiot:~# ls -l /var/webui/docroot
total 112
-rw-r--r-- 1 www-data www-data  1524 Dec 21  2021 _ctrl_datacollect.php
-rw-r--r-- 1 www-data www-data  1284 Dec 20  2021 _file_del.php
-rw-r--r-- 1 www-data www-data  1412 Jan 26  2022 _nodered_ctl.php
-rw-r--r-- 1 www-data www-data  1076 Dec 20  2021 _ppp_con.php
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 airmanage
drwxr-xr-x 6 www-data www-data  4096 Apr 10  2020 apps
drwxr-xr-x 4 www-data www-data  4096 Apr 29 16:16 css
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 extension
drwxr-xr-x 4 www-data www-data  4096 Apr 29 16:15 images
-rw-r--r-- 1 www-data www-data 18740 Dec 20  2021 index.php
-rw-r--r-- 1 www-data www-data  4548 Dec 21  2021 index_datacontroller.php
-rw-r--r-- 1 www-data www-data  3652 Jan 26  2022 index_nodered.php
drwxr-xr-x 3 www-data www-data  4096 Apr 29 16:16 js
drwxr-xr-x 3 www-data www-data  4096 Apr 29 16:16 lib
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 maintenance
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 network
-rw-r--r-- 1 www-data www-data    21 Oct 12  2020 phpinfo.php
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 service
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:16 system
drwxr-xr-x 2 www-data www-data  4096 Apr 29 16:15 technical
drwxrwxrwt 2 www-data www-data  4096 Apr 29 17:54 tmp
-rw-r--r-- 1 www-data www-data   884 Dec 20  2021 unsupport.php
root@obsiot:~# 
```
`phpinfo.php`で見てみると。
![Screenshot from 2022-08-14 16-45-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/b44be55f-147a-7900-4289-0be0b21f7f8d.png)
万全の体制です。ユーザ用のディレクトリを作成します。その下にテスト用のページを作成します。
``` console
root@obsiot:/var/webui/docroot# mkdir hoge
root@obsiot:/var/webui/docroot# cd hoge
root@obsiot:/var/webui/docroot# vi test.php
root@obsiot:/var/webui/docroot/hoge# ls -l
total 4
-rw-r--r-- 1 root root 32 Aug 14 16:48 test.php
root@obsiot:/var/webui/docroot/hoge# cat test.php
<?php
	echo "Hello, World.";
?>
root@obsiot:/var/webui/docroot/hoge# 
```
![Screenshot from 2022-08-15 06-30-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/90cde593-21d8-5c6d-d871-806b3b4fd6f4.png)

狙いどおりです。