Armadilloフォーラム

Armadillo IoT G3でSIMを使ったデータ通信量の情報取得方法

satoshi.sa.aoki

2024年6月25日 23時52分

お世話になっております。
表題の件での質問です。

データ通信制限に達しているかをチェックし、もしデータ制限を超えている、もしくは超えそうであるといった状態をチェックし、
例えば、大容量のファイルダウンロードが必要なアップデートなどを回避するなどの制御を実現したいです。
SIMのデータ使用量を把握する良い方法があればできるのかなと思っております。

ちょっと調べて以下のようなコマンドは試してみたのですが、上記のコマンドは実行できませんでした。

# mmcli -m 0 --3gpp
 
<出力結果例(stats RX/TXの部分)>
3GPP |           operator id: '310410'
     |         operator name: 'AT&T'
     |          registration: 'home'
     |    packet service state: 'attached'
     |       current PS attach bearer:
     |                        APN: 'internet'
     |                  IP family: 'ipv4'
     |               IP addresses: '10.0.0.1'
     |                 stats RX: '12345678'
     |                 stats TX: '87654321'

その他推奨の方法などもございましたら、ご教授いただけますでしょうか?

コメント

at_keitaro.takahashi

2024年6月26日 17時45分

高橋です。

SIMによっては、通信事業者が用意しているAPIを使用して通信量を取得できる場合があります。
例えば、SORACOMなどはSORACOM CLIを使用して通信量の取得などを行うことが可能です。

Armadillo-IoT G3の場合、以下の手順でSORACOM CLIをインストールできます。

wget https://github.com/soracom/soracom-cli/releases/download/v1.2.0/soracom_1.2.0_armhf.deb
dpkg -i soracom_1.2.0_armhf.deb

その後、以下ページを参考に認証情報を設定することで、Armadillo上からSORACOMのAPIを使用できるようになります。
https://users.soracom.io/ja-jp/tools/cli/getting-started/

以下は実行例です。

root@armadillo:~# soracom stats air sims get --sim-id "確認したいSIMのSIM ID" --period month --from 1717200000 --to 1719792000
[
        {
                "dataTrafficStatsMap": {
                        "s1.4xfast": {
                                "downloadByteSizeTotal": 195637,
                                "downloadPacketSizeTotal": 1397,
                                "uploadByteSizeTotal": 219176,
                                "uploadPacketSizeTotal": 1657
                        }
                },
                "date": "202406",
                "unixtime": 1717200000
        }
]
root@armadillo:~#

詳しい情報については、「SORACOM CLI 利用ガイド」をご確認下さい。
https://users.soracom.io/ja-jp/tools/cli/

他の方法としては、ifconfigコマンドの出力結果を定期的に監視する、などの方法があるかと思います。
(再起動などでリセットされるため、過去の値を保存しておく必要があります)

root@armadillo:~# ifconfig usb1
usb1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.15.122  netmask 255.255.255.0  broadcast 192.168.15.255
        ether 02:80:70:08:13:70  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1343 (1.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 25  bytes 2430 (2.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
root@armadillo:~#

satoshi.sa.aoki

2024年6月27日 18時47分

お世話になっております。
ご返信ありがとうございます。
理解しました。

やはりifconfigコマンドになりますか。

at_dominique.m…

2024年6月28日 10時46分

satoshi.sa.aokiさん

よこからすみません、

> やはりifconfigコマンドになりますか。

ifconfig / ip -s link で取得する情報は /sys/class/net//statistics/{rx,tx}_{bytes,packets} にあるので、コマンドの出力を parsing せずにファイルを読むだけで取得できます。
(同じく切断するとリセットしますので、その点はデバイスだけの情報としてどうしようもないです)

出例しました。