Armadilloフォーラム

SMSを連続送信した際に発生するエラー

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連続処理に関する制限等をご存じではないでしょうか。

以上、よろしくお願いいたします。


コメント

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件)まで連続で送ることができるようになっています。

以上、ご報告までに。

at_mitsuhiro.yoshida

2020年3月11日 8時16分

吉田です。

> <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

2020年3月16日 17時21分

吉田様

お世話になります。

> 3G/LTEを利用している以上、ネットワーク状況などでエラーや遅延は出ますので、
> リトライなどのリカバリー処理を入れておくといいかと思われます。
>
> よろしくお願いします。

幸い185件目のエラーが発生してもリトライで正常に発行可能ですので、そのように対処する事といたしました。
また、連続発行に際してはシビアな性能を求められていないので、
SIMカードの処理を見込んである程度ディレイさせることといたしました。

本件、ひとまずは本対応にて様子見としています。
レスポンスありがとうございました。