遠隔管理システムの提案

IoTカメラを試作してきましたが、これを使ったシステムの提案書を作成してみました。
身近に水利組合の方がいて、その方用に、ポンプ小屋の遠隔管理システムを仮想提案して
みました。
提案内容はこちらからダウンロードできます。
数十カ所のポンプ小屋を一括で管理するシステム(提案)

カメラをサーバーにSSH接続する

IoTカメラを試作しています。なんとか、LANモデル(WiFi下で動作)を試作しましたが
IoTなので、インターネットにも接続させて、どこからでも制御できるようにしたいですね。
そこで、レンタルサーバーにSSH接続して、安心してデータを送受信できるようにすれば
実現できそうです。
ということで、SSH接続をしてみました。

サーバー言語PHPも使う

SSH接続したサーバーに、IoTのデータを扱うファイルをアップし、そのファイルを経由して
遠隔のパソコンとIoTカメラの交信をおこなうのですが、ファイルの読み書きに必要なのが
サーバー側言語になります。Javascriptでは サーバー側のファイルの読み出しはできるものの
書込みは無理なんですね。そもそも権利がないというか、それでセキュリティが保たれると
いうか。
で、サーバー側言語である、PHPも今回はつかいました。index.htmlファイルの代わりに
index.phpに変更して、PHP言語を埋め込みます。index.phpもIoTのファームに埋め込むので
サーバー側では特に設定は必要なく、IoTが起動したときに、サーバー側にディレクトリを作成
その中に、HTML(PHP)ファイル、Javasctiptファイル、各種データファイル、交信用ファイルを
転送します。
 出来上がってみると、すべてIoTのファームに記述されていて、これはこれでシンプルな
構造になっています。

LibSSH-ESP32 を使う

ESP32をSSH接続するために、LibSSH-ESP32を使いました。
公開鍵、秘密鍵は WinodwsのPowerShell を使って 作成、公開鍵をXサーバに設定しました。
で、デバッグを始めましたが、鍵の認証のところで、躓きました。

footerで失敗とあります。headerは通っているようでしたので、LibSSH-ESP32のソースを確認して
気になるところを修正してみました。

pki_container_openssh.cファイルのssh_pki_openssh_inport関数のfooterをチェックする部分で、
上記の赤枠で囲んだ部分、いらないような気がしたのでコメントにしてみました。
これで、無事通過です(下記の表示)

途中、spiffs関連の失敗がでていますが、これは 当ファームでは spiffsを使用していないためで、
無害なので無視します。

この通過で、SSHで入れることが分かり、続いてコマンド、ファイルのやり取りです。
ちょうど、サンプルコードが
1.シェルコマンド(戻り無)
2.ファイルの読み込み
3.ファイルの書き込み
が用意されていたので、参考にして、ESP32で実行しやすい形に変更して

ファイルの読み書きもできるようになりました。
不確定要素が解消されて、先が見えてきました。
やれやれです。


途中ですが、現時点のファームはこちらからダウンロードできます。

htmlとJavascriptは2組用意する

WiFi(LAN内)での操作画面とSSH接続した方の画面と2組を用意する必要があります。

それぞれのフォルダ内はというと

というように、htmlファイルとjsファイルとありますので、この辺の使用を楽にするために
一括変換プログラムをつくりました。
変換したいファイルを登録して、一括して変換、ヘッダファイルとして作成されます。

変換されたファイルでは const char 配列でつくられるので、wifi_index_htmlとして使えます。
できた配列をつかってSSHで接続したサーバーに書き込みます。
ESP32のSSH接続では CDコマンドが使えないので、すべてパスで指定して操作をすることに
なります。(下では絶対パスと書いてますが、ユーザーディレクトリからの相対パスですね)