ushijima
2020年3月6日 12時08分
お世話になります。
Armadillo IoT G3 を用いたSMS自動送信プログラムを作成しています。
連続処理の負荷が要因と思われる現象が発生しましたので、既知の挙動であるか、
もしそうならば回避策をご存じないかと思い、投稿させていただきます。
キャリアによる制限(200件)の際の動作を確認するため、200件連続でSMSを送信する処理を行いました。
その際、185件目にてmmcliより下記<185件目で発生したエラー>が応答され、送信が失敗しました。
186件目以降は正常に処理され、200件目では想定通りのエラーを取得することができました。
<185件目で発生したエラー>
error: couldn't send the SMS: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.InvalidPduParameter: Invalid PDU mode parameter'
<200件目で発生したエラー>
error: couldn't send the SMS: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.Unknown: Unknown error'
mmcliに関する繰り返し処理は以下となります。
(1)SMS作成 :mmcli -m 0 --messaging-create-sms="number=00000000000,text='YYYY'
(2)SMS送信 :mmcli -s X --send
(3)SMSリストアップ:mmcli -m 0 --messaging-list-sms
(4)SMS削除 :mmcli -m 0 --messaging-delete-sms X
※送受信含め、(3)でリストアップしたすべてのSMSを繰り返し処理で削除しています。
上記処理の周期は概ね1secとなっています。
ただし、185件目がエラーで停止したのち手動で再開しましたので、185<->186の間は1分近く開いています。
自作プログラム側の要因は並行して調査中ですが、本機やmmcli側のSMS連続処理に関する制限等をご存じではないでしょうか。
以上、よろしくお願いいたします。
コメント
at_mitsuhiro.yoshida
吉田です。
> <185件目で発生したエラー>
> error: couldn't send the SMS: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.InvalidPduParameter: Invalid PDU mode parameter'
に関しては、ModemManagerの中でSMS送信処理中に不整合が発生してエラーとなっています。
ショートメールの送信には、スマートフォンなどでも1秒以上かかることはありますので、
(1)~(4)の処理を1秒周期で繰り返しているのであれば、
mmcliの応答が戻ってきていても、SIMカード内で処理中でエラーとなる可能性はあります。
3G/LTEを利用している以上、ネットワーク状況などでエラーや遅延は出ますので、
リトライなどのリカバリー処理を入れておくといいかと思われます。
よろしくお願いします。
ushijima
ushijima
2020年3月9日 12時05分
経過をご報告いたします。
自作プログラム側では、185件目に失敗となる要因が見つかりませんでした。
mmcliから先に、連続処理に耐えられない層があると考え、
対処療法ではありますが、繰り返し処理の末尾にsleepを入れて動作を確認しました。
> (1)SMS作成 :mmcli -m 0 --messaging-create-sms="number=00000000000,text='YYYY'
> (2)SMS送信 :mmcli -s X --send
> (3)SMSリストアップ:mmcli -m 0 --messaging-list-sms
> (4)SMS削除 :mmcli -m 0 --messaging-delete-sms X
> ※送受信含め、(3)でリストアップしたすべてのSMSを繰り返し処理で削除しています。
> 上記処理の周期は概ね1secとなっています。
上記、1sec周期の処理の末尾で0.4sec sleepさせて、1.4sec周期で動かしました。
結果、途中でエラーが発生することなく、キャリア上限(200件)まで連続で送ることができるようになっています。
以上、ご報告までに。