2019年5月27日月曜日

ESP32-CAM 農業用カメラを作る 11shutter

IIJに接続できたので、早速FTPアクセスを試してみる。


https://simcom.ee/documents/SIM7100E/SIM7100_FTP_Application_Note_V0.01.pdf
を参考に。

まずはFTPサーバーに接続する設定。
-------------------------------------------
AT+CFTPSERV="server.url"
AT+CFTPPORT=21
AT+CFTPMODE=1
AT+CFTPTYPE=I
AT+CFTPUN="username"
AT+CFTPPW="password"
-------------------------------------------
サーバー名、ユーザーID、PASSは当然秘密。

全てOKになったらまずはFTPサーバー上の情報を
取得
lsコマンドに該当するコマンドを送信

-------------------------------------------

AT+CFTPLIST="/home/xxxxxx/"
OK

+CFTPLIST: DATA,1460
drwx------  29 xxxxx    users        4608 May 25 16:54 .
drwxr-xr-x 129 root     wheel        3072 Nov  1  2018 ..
-rw-------   1 xxxxx    users        2191 Apr 26 15:01 .bash_history

    中   略

drwx---r-x   2 xxxxx    users        1024 Dec  4  2016 yume
+CFTPLIST: 0
-------------------------------------------
無事に取得出来た。

次にサーバー上のファイルを取得してみる。
-------------------------------------------

AT+CFTPGET="/home/xxxxx/index.html"
OK

+CFTPGET: DATA,119
GET / HTTP/1.1
User-Agent: Wget/1.14 (freebsd9.1)
Accept: */*
Host: www.pipipi.net:20080
Connection: Keep-Alive



+CFTPGET: 0
-------------------------------------------
例としてTEXTファイルを取得したが、
BINの場合もそのまま垂れ流される?のだろうか。

そしていよいよバイナリデータを送信してみる。
サーバー上にtest.pngというファイルを作成する
前提です。

-------------------------------------------

AT+CFTPPUT="/home/xxxxx/test.png"
+CFTPPUT: BEGIN

OK
-------------------------------------------
OKを受信したところで、データを送信する。
ここで若干嵌る。


送信の終了を指示する方法として
0x1aを送信するのだが、データ中の0x1aと区別する
為に0x1aを送信する場合は前に0x03を付加する。
つまり
0x1aは 0x03 0x1aとなる。

又、この0x03を区別する為にデータ中に0x03が存在した
場合も前に0x03を付加する。
つまり

0x03は0x03 0x03となる。

単純に画像ファイルを送信すれば良いのではなく、
1バイト毎にデータをチェックして上記の変換を
行う必要がある。


最後に0x1a(CTRL + Z)を送信するとサーバー上にファイルが作成された。

0 件のコメント:

コメントを投稿