Closed alldonet closed 2 years ago
エラーになった原因を特定したいのですが、返されるコード(-1)だけでは判断つかないです。 https://github.com/SeeedJP/WioLTEforArduino/blob/dbf03c75895d41502891a1fd25087f2c646dd5f5/src/WioLTE.cpp#L1112
Debugを有効にして、エラー発生直前と直後のログを調べてもらえませんか?
今回の現象は実行時間と関係ないと確認しました。 この現象はランダムで、実行時間は長くなるほどエラー発生率は上がるわけです。
エラー復旧ロジックなし、連続にHTTP GET/POSTリクエストを発行すると、20~300回目の間にエラーが発生します。
HTTP通信エラーの際以下のロジックを実行するとエラーは復旧され、HTTP通信は長時間に続けれます。 現時点では、3000回以上の通信を確認しました。永久に実行できそうです。
Wio.PowerSupplyLTE(true);
Wio.TurnOnOrReset();
Wio.Activate("soracom.io", "sora", "sora");
DebugONで実行すると、以下のログは表示されました。
12:16:53.262 -> -> +QHTTPPOST: 0,200,2
12:16:53.262 -> - GET https://****
12:16:53.262 -> <- AT+QHTTPCFG="sslctxid",1
12:16:53.262 -> ->
12:16:53.262 -> -> OK
12:16:53.262 -> <- AT+QSSLCFG="sslversion",1,4
12:16:53.262 -> ->
12:16:53.262 -> -> OK
12:16:53.262 -> <- AT+QSSLCFG="ciphersuite",1,0XFFFF
12:16:53.262 -> ->
12:16:53.262 -> -> OK
12:17:03.262 -> <- AT+QSSLCFG="seclevel",1,0
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> <- AT+QHTTPCFG="requestheader",1
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> <- AT+QHTTPURL=59
12:17:03.262 -> ->
12:17:03.262 -> -> CONNECT
12:17:03.262 -> <- (binary)
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> === header
12:17:03.262 -> GET /**** HTTP/1.1
12:17:03.262 -> Host: ****
12:17:03.262 -> Accept: */*
12:17:03.262 -> Connection: close
12:17:03.262 -> User-Agent: QUECTEL_MODULE
12:17:03.262 ->
12:17:03.262 ->
12:17:03.262 -> ===
12:17:03.262 -> <- AT+QHTTPGET=60,136
12:17:03.262 -> ->
12:17:03.262 -> -> CONNECT
12:17:03.262 -> <- (binary)
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> ->
12:17:03.262 -> -> +QHTTPGET: 0,200,0
12:17:03.262 -> <- AT+QHTTPREAD
12:17:03.262 -> ->
12:17:03.262 -> -> CONNECT
12:17:03.262 -> -> (binary)
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> ->
12:17:03.262 -> -> +QHTTPREAD: 0
12:17:03.262 -> <- AT+CSQ
12:17:03.262 -> ->
12:17:03.262 -> -> +CSQ: 17,99
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> - POST https://****
12:17:03.262 -> <- AT+QHTTPCFG="sslctxid",1
12:17:03.262 -> ->
12:17:03.262 -> -> OK
12:17:03.262 -> <- AT+QSSLCFG="sslversion",1,4
12:17:03.262 -> ->
12:17:03.262 -> -> ERROR
12:17:03.262 -> ### TIMEOUT ###
12:17:03.262 -> ERROR! 1209
ログありがとうございます。 ログを確認したところ、SSL設定の箇所で、セルラーモジュール(EC21-J)内部でエラーが発生しているようです。(セルラーモジュールから"ERROR"が返ってきています。)
ログ抜粋:
12:17:03.262 -> <- AT+QSSLCFG="sslversion",1,4
12:17:03.262 -> ->
12:17:03.262 -> -> ERROR
思いつく回避策としては、
です。
確認ありがとうございました。 エラーの元と解決方法を了解しました。
こちらの負荷テストで以下の復旧ロジックにて 1万回以上の連続HTTP通信が確認できました。 これで永久実行ができそう。
Wio.TurnOnOrReset();
Wio.Activate("soracom.io", "sora", "sora");
回答なりました。 ありがとうございました。
以下の現象が発生しています。
連続HTTP通信の場合、定期的にWio. TurnOnOrResetとか呼ぶ必要があるでしょうか。
参考:HttpGet