「WebSocket通信(概要)」の節で次のように書いた。「接続クライアント数、インターバル、データサイズの3つのパラメータが、ネットワークの負荷を決める」。
アクセスポイントとクライアントデバイスに動作状態出力ピンを設けた。この出力をオシロスコープで測定することにより、ネットワークのパフォーマンスが確認できる。まず、センサデバイスからのデータ送信時間が、データサイズによってどれだけ変動するかを調べた。ここでは、クライアントは1つのセンサデバイスのみである。





オシロスコープ画面上部(黄色)は、センサデバイスの送信開始でHIGH、送信終了でLOWを示している。画面下部(紫色)は、アクセスポイントの受信イベント発生でHIGH、受信データを専用バッファへ保管完了でLOWを示している。横軸(時間軸)の基本スケールは10msecで共通。
1byteと1024byteの送信時間は大差がなく約4msec。4096byteで約10msec、8096byteで約20msec、15360byteで約40msecとなっている。また、センサデバイスの送信終了からアクセスポイントのイベント発生までは、多少の変動があるものの数ミリ秒程度である。



上記3枚の画像は、以下の条件で撮影した。データサイズは、全て15360byteである。
- インターバル100msec, 接続センサデバイス1台, オシロ時間軸スケール50msec
- インターバル100msec, 接続センサデバイス2台, オシロ時間軸スケール50msec
- インターバル300msec, 接続センサデバイス2台, オシロ時間軸スケール100msec
アクセスポイントは、センサデバイス2台から15360byteのデータが100msec間隔で送られてくると、十分な対応ができなくなる。間隔が300msecに伸長されれば、対応に余裕が出てくる。
この章の冒頭で述べたように、ネットワークのパフォーマンスを決めるパラメータが3つあるので、その1つを固定して検討してみたい。センサ情報、すなわちデータサイズを4096byteに固定したとする。この場合、送信時間は約10msecである。アクセスポイントがWebSocket通信のみに対応できる稼働率を50%と仮設定する。残りの50%で、表示デバイスの更新、新規接続デバイスへの対応などを処理する。
単純に計算すると、インターバル100msecで最大5台のセンサデバイスが対応可能となる。逆にESP32の仕様から導き出された最大クライアント数14に対応するなら、インターバルは最小280msecである。データサイズ4096byte、WebSocket稼働率50%での例をまとめると次のようになる。
- 最大クライアント数14, 最小インターバル280msec
- 最大クライアント数10, 最小インターバル200msec
- 最大クライアント数5, 最小インターバル100msec
特定のアプリケーションに対応するためには、最適な3つのパラメータを導き出しセンサネットワークを構築する必要がある。