友人がコスパが良いノパソを欲しがっていたので中古のLet's noteをSSD化してみた。CF-NX4のi5モデル、メモリ8GB、SSD250GBにすればそこそこ使えそうだし。
SSDは変なもたつきがあると嫌なのでDRAMキャシュ付きでそこそこ安いやつを探していたらサムスンの860 Evoがやすかったのでこれの250GBにしてみた。
本当は500GBにしたかったところだったんだけど予算の関係で…友人がコスパが良いノパソを欲しがっていたので中古のLet's noteをSSD化してみた。CF-NX4のi5モデル、メモリ8GB、SSD250GBにすればそこそこ使えそうだし。
SSDは変なもたつきがあると嫌なのでDRAMキャシュ付きでそこそこ安いやつを探していたらサムスンの860 Evoがやすかったのでこれの250GBにしてみた。
本当は500GBにしたかったところだったんだけど予算の関係で…AliexpressでたまたまXiaomi Mijiaの温湿度計2が安かったので買ってみた。BLEに対応しているやつ。品番でいうとLYWSD03MMCで、小さくて安いやつ。送料込み400円ぐらいだった。
レビューに紹介画像より小さいっていうのが書いてあったのでサイズは確認していたんだけど、パッケージからして小さい。裏面には仕様も書いてある。電池はCR2032っぽい。インターネットに繋いだESP32からクラウドにデータを上げたりする分にはルータのポートを開けなくてもデータをサーバに蓄積することができるんだけど、ESP32-CAMのようにESP32自体をサーバにして運用するときはどうしてもルータのポートを開けないとインターネット越しにアクセスできない。
ESP32側から簡単にポートを開けられるようにUPnPでルータのポートを開けてみた。これならいちいちルータの設定画面を開かなくてもいいし、手軽に設置できるはず。
使用させてもらったライブラリはUPnP_Generic Library
これはArduino上のいろんなデバイスに対応しているUPnPライブラリで、ESP32とかESP8266用に開発されたTinyUPnPを改良して対応ボードを増やした形らしい。最近のルーターはだいたい対応していると思うけどポートを開けたい対象のルーターはUPnP対応ルータが必要。あと2重ルータになってたりするとうまくいかないかも。
SimpleServerESP32のサンプルスケッチを動かしてみたがポートがうまく開かない…
他のライブラリを使ってみたりとかはしてみたんだけども、どうにもルータのUPnPには到達できてるのにうまくポートが開かない。ルータ側で見ていると一瞬開いてるようにも見えるんだけどすぐ消えてしまう状態…
フォーラムを読んでいると同じようにハマっている人がいるようで、最終的にはLEASE_DURATIONを0にすることでうまく動かすことができた。サンプルスケッチのデフォルトでは36000(秒)に設定されていた。ルータとの相性もあるのかもしれないけど、DD-WRT環境化ではこれを0にすることでうまくポートが開けられるようになった。LEASE_DURATIONは有効期限なので、0にすると有効期限無しの設定になってしまうが、ESP32側から不要になったら消すようにすればいいかもしれない。
ルータ側で設定を削除した場合は、一旦UPnPを無効にして有効にし直すか再起動しないともう一回追加できなかった。これはDD-WRTの仕様かも。
あとはDDNSとかでIPアドレス変わったのに対応できればサーバとして一通りの機能が搭載できるんじゃないかな…
DDNS自体は定期的にURL読み込めば良さそうだし。