SORACOM Blog

ソラコムの最新情報をお届けします

SORACOM Interstellar - 40光年先の遠隔監視 -

皆様。新サービス SORACOM Interstellar はお使いいただけたでしょうか。今回の SORACOM Interstellar では、OpsDev チームは約40光年先の惑星に置いた LoRa Gateway を監視するという難易度の高い課題に挑戦することになりました。40光年先にあるということは、故障を検知してから現地に赴いたのでは、多分直る頃にはお客様に連絡が取れず、チケットをクローズできないという問題が発生してししまうため、遠隔監視システムの構築が不可欠でした。

システム構築で主に議論になったのが次の2点です。

  1. 遠隔監視用機材
  2. 遠隔監視方法

遠隔監視用機材

本来であれば宇宙放射線の影響なども考慮した機材を選択したかったのですが、弊社のリーダーシップ・ステートメントの Avoid Muda の精神に則って逸般的な誤家庭にあるハードウェアを使うことにしました。オフィスを見渡したところ幸いにも次のハードウェアを手に入れることができました。

  • Raspberry Pi 2 Model B
    • 2017-04-10-raspbian-jessie-lite.img1
  • SORACOM Air 端末
    • 3G モデム AK-020
    • 3G/LTE ルータ NEC Aterm MR04LN
    • FREETEL Priori3 LTE

Devices


AK-020

Raspberry Pi に刺してすぐに使えるようにするためには、幾つかの準備が必要になります。詳細な解説は他の方にお譲りして、今回は接続に必要なステップのみ記載します。

Firmware の更新

USB ポートに 1.2A の電力が無いと不安定になるため、rpi-update により libraspberrypi-bin-1.20161020-1 以降の firmware にアップデートします。アップデート出来ない場合は /boot/config.txtmax_usb_current=1 を追加します。

AK-020 接続時の Raspbian の動作設定

1.1 /etc/udev/rules.d 配下に 30-soracom.rules を作成し以下を記載

1
2
3
ACTION=="add", ATTRS{idVendor}=="15eb", ATTRS{idProduct}=="a403", RUN+="/usr/sbin/usb_modeswitch --std-eject --default-vendor 0x15eb --default-product 0xa403 --target-product 0x15eb --target-product 0x7d0e"
ACTION=="add", ATTRS{idVendor}=="15eb", ATTRS{idProduct}=="7d0e", RUN+="/sbin/modprobe usbserial vendor=0x15eb product=0x7d0e"
KERNEL=="ttyUSB*", ATTRS{../idVendor}=="15eb", ATTRS{../idProduct}=="7d0e", ATTRS{bNumEndpoints}=="03", ATTRS{bInterfaceNumber}=="02", SYMLINK+="modem", ENV{SYSTEMD_WANTS}="ifup@wwan0.service"

1.2 PPP を対話型で設定可能にする pppconfig のインストール

1
sudo apt-get -y install pppconfig

1.3 SORACOM Air PPP 接続設定の作成

1
sudo pppconfig soracom_ak-020

/etc/ppp/peers 配下の soracom_ak-020 が以下のようになるよう、関連する項目に対話式に入力します。切断時の再接続と、AK-020 を default gw にするために、ファイルの最後に persist と replacedefaultroute を手動で追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# This optionfile was generated by pppconfig 2.3.18.
#
#
hide-password
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/soracom_ak-020"
debug
/dev/modem
460800
defaultroute
noipdefault
user "sora"
remotename soracom_ak-020
ipparam soracom_ak-020

usepeerdns
persist
replacedefaultroute

1.4 APN 及びチャットスクリプトの設定

SORACOM Air を利用するために /etc/chatscripts 配下の soracom_ak-020 を次のように編集します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  # This chatfile was generated by pppconfig 2.3.18.
'' ATH
OK AT+CFUN=1
OK ATZ
OK 'ATQ0 V1 E1 S0=0 &C1 &D2'
OK AT+CGDCONT=1,"IP","soracom.io"
# Please do not delete any of the comments.  Pppconfig needs them.
#
# ispauth PAP
# abortstring
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
# modeminit

# ispnumber
OK-AT-OK "ATDT*99#"
# ispconnect
CONNECT \d\c
# prelogin

# ispname
# isppassword
# postlogin

# end of pppconfig stuff

1.5 PPP接続のためのインターフェース設定

/etc/network/interfaces の最後に以下を追加します。

1
2
3
4
allow-hotplug wwan0
iface wwan0 inet ppp
    provider soracom_ak-020
    pre-up sleep 10

1.6 自動接続の確認

再起動し自動で interface として ip addr コマンドを用いて ppp0 に IP アドレスが付与されることを確認します。 今回の場合 10.229.82.137 が付与されていることが確認できました。

1
2
3
4
4: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
    link/ppp
    inet 10.229.81.137 peer 10.64.64.64/32 scope global ppp0
       valid_lft forever preferred_lft forever

自動再起動

万が一宇宙放射線の影響によって Modem が hangup した場合に、Raspberry Pi の再起動を行う以下のスクリプトを cron で定期的に回すことにします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash -e

check_ppp () {
  if [ "$(/sbin/ifconfig ppp0 2>&1 | grep inet)" ]; then
    echo 0
  else
    echo 1
  fi
}

do_ppp() {
    /sbin/ifup wwan0 && /bin/sleep 60
    if [ "$(/sbin/ifconfig ppp0 2>&1 | grep inet)" ]; then
      return 0
    fi
    return 1
}

res=`check_ppp`
if [ ${res} -eq 0 ]; then
  exit 0
else
  res=`do_ppp`
  if [ $? -ne 0 ]; then
    echo "the server is shut down now!"
    /sbin/shutdown -r
  fi
fi
exit 0

NEC Aterm MR04LN

TRAPPIST-1 は残念ながら FOMA ハイスピードエリアの範囲ではないので、AK-020 ではアップロードの速度が 384kbps に制限されてしまいます。より高速なアップロードが必要な場合や AK-020 の様な設定を回避したい場合、 Aterm MR04LN(以下 Aterm)は有力な端末の一つになると思われます。今回 Aterm を次の様に設定しました。

  1. USB テザリング(設定 -> LAN 側設定 -> USB テザリング機能 ON) この設定をすることによって、Raspberry Pi 側には ethxx2 として認識され、特別な設定をすること無くインターネットに接続する事ができます。

  2. ポートマッピング設定 Aterm の特定のポート宛の通信を Raspberry Pi に転送するため、ポートマッピング設定を行います。Aterm を一旦パソコンにつないで、http://aterm.me/ にアクセスすると、クイック設定 Web にアクセスすることが出来ます。そして、左側のメニュー -> 詳細設定 -> ポートマッピング設定から以下の様に設定します。

Aterm クイック設定 Web

ここでは22番ポート(SSH)宛の通信を Raspberry Pi の22番ポートに転送する設定を行っています3

さすが専用の機種です。これだけで設定は終了です。


Priori3 LTE

Priori3 LTE(以下 Priori3)はコストパフォーマンスの良い SIM フリーのスマートホンとして注目を浴びました。

  1. USB テザリング (設定 -> もっと見る -> テザリングとポータブルアクセスポイント -> USB テザリング ON) この設定をすることによって、Raspberry Pi 側には usbx4 として認識され Aterm 同様、特別な設定をすること無くインターネットに接続する事ができます。

  2. ポートマッピング機能 Priori3 にはデフォルトではポートマッピング機能が無いので、今回は the port forwarding app を利用しました。

これによって通常のスマートホンでも Aterm と同様のことを実現出来ました。しかし、Raspberry Pi を再起動したところ次のような問題に直面しました。

  • USB テザリングが解除されてしまう
  • 割り当てられる IP アドレスが毎回変わる

残念ながらこれらを設定するためには Priori3 上での操作が必要なため、TeamViewer 等の画面共有アプリケーションを利用して、遠隔からスマートホンを操作することが必要になりそうです。

3機種の比較

今回の3種類の端末についてまとめると次のようになります。

対応する WAN 方式 定価 [円] 事前設定 メンテナンス
AK-020 3G 4,980
Aterm MR04LN LTE/3G/2G 28,598
Priori3 LTE LTE/3G/2G 13,824

遠隔監視方法

遠隔端末へのログイン

今回は遠隔地にある端末へログインして作業をする必要があるため SORACOM Gate(以下 Gate) を利用することにしました。Gate 利用することによって、Global IP アドレスを用いること無く、地球のサーバから遠隔地にある端末に対して閉域網を介してアクセス/ログインをすることが出来るようになります。

SORACOM Gate

また、VPG を利用していない場合には Publick Gate5 を利用することで、地球にある端末から遠隔地にある端末へアクセスすることが出来るようになります。

SORACOM Gate と Public Gate を比較すると次のようになります。

Gate Public Gate
アドレス 任意のアドレス ソラコムが指定
(10.128.0.0/9)
参加する端末の制御 選択可能 SORACOM Air を利用すれば誰でも参加可能
接続可能な
端末
SIM が搭載されていない端末も接続可能(Gate Peer) SORACOM Air搭載端末

通信断への対応

ソラコムにはネットワーク側からセッションを切断する セッション切断API を用意しています。万が一端末からのデータ転送が途絶えてしまった時に、こちらを用いることで再度セッションを確立することが出来る場合があります。今回の3機種でセッションを切断を試したところ、3機種全てで再度セッションが確立することを確認しました。


まとめ

今回は SORACOM Interstellar サービス提供に伴う OpsDev チームのチャレンジを投稿させていただきました。最近は Google の Site Reliability Engineering の様に、運用者についても開発者と同様のエンジニアリングスキルを用いての自動化等による効率的な運用を行っていくのが一般的になってきました。。今後も本ブログで OpsDev の活動の一端を紹介していきたいと思います。長文でしたが、最後まで読んで頂きましてありがとうございました。

OpsDev チーム


これらのコンテンツに含まれる情報につきましては、その内容および利用結果を保証するものではなく、ご利用は自己責任でお願いいたします。 なお、コンテンツをより正確にご利用いただくために、予告無く内容の変更を行う場合がございます。


  1. 本ブログ執筆中に更新があったので再度検証しました。

  2. 今回の環境では eth1 として認識されました。

  3. USB テザリングの場合、192.168.179.2 が割り当てられるようですが、こちらは環境に応じて変更して下さい。

  4. 今回の環境では usb0 として認識されました。

  5. 端末毎にSORACOM Air VPG 利用オプション料金が発生するため、必要のない場合は Group 設定を解除して下さい。

Nucleo(mbedマイコンボード)で開発を始める (HC-SR04 超音波 測距センサーを動かす)

先日行われたテクノロジー・カンファレンス “if-up 2017”では、IoTを体験いただくためのIoTお楽しみ袋という名のデバイスプレゼントがありました

ArduinoやRaspberry Piといったよく知られているデバイスの中に、STマイクロエレクトロニクス社の Nucleoシリーズのマイコンボード F411RE が入っていたのはご存知でしょうか?

こちら ARM Cortex-M4 を搭載したマイコン(MCU)評価ボードです

Nucleo F411RE

mbedが動いており、豊富にライブラリが揃っているので、実はArduino並みに使うことができるMCUなのですが、、、残念なことに日本語の情報が少ない!!

ということで、こちらではゴールデンウィークの宿題時間つぶしとして、Nucleoボードの使い方を学んでみませんか?

mbed開発フローのおさらい

mbedが動くボードの開発フローは下記のとおりです

必要なもの: モダンなブラウザと、それが動くPC

  1. https://developer.mbed.org/compiler 上の「オンラインIDE」でコードを書き、オンラインでコンパイル、 .bin ファイルをダウンロードする
  2. mbedが動くボードをPCやmacにUSBで接続すると、USBドライブとして見えるので、そこに .bin ファイルをコピー

これだけです。なんということでしょう!

従来のマイコン開発を知っている方からすると、何が起こっているのかわからないくらいに環境が変わっています。 開発環境のインストールとか不要です。もう一度言います、開発環境はブラウザだけです!

.bin ファイルのデプロイ方法と仕様

オンラインIDE上で コンパイル ボタンを押すと .bin ファイルがダウンロードできます

オンラインIDE > コンパイル

これを mbedが動くボードにコピーしますが、下記の通りUSBドライブとして見えるので、そこにコピーするだけでデプロイ完了です コピーが終わり次第mbedボードのリセットが行われ、新しい .bin の内容で動き始めます

オンラインIDE > 新規

複数の .binファイル をデプロイした場合

最後にコピーが完了したファイルが動作対象になります。同じファイル名である必要はありません。ともかく最後にコピーが完了したファイルで動きます

オンラインIDEで、新規から開発する

それでは開発をしてみましょう

オンラインIDEから新規開発をしようとすると、いくつかテンプレートが存在します。 テンプレートを使った作業はいくつか紹介されているので、ここでは全くの新規から作る方法を紹介します

新規作成

オンラインIDEから 新規 を選びます

オンラインIDE > 新規

ダイアログは下記のとおりです

  • プラットフォーム: NUCLEO-F411RE (画面は F446RE ですが、気にしないでください)
  • テンプレート: 空のプログラム
  • プログラム名: 任意 (今回は my_first_mbed としました)

オンラインIDE > 新規 : ダイアログ

若干待たされますが、下記の通りになります

オンラインIDE

この状態では、まだ mbed のライブラリが読み込まれておらず、何もできないので、次の作業でそれを行います

ライブラリをインポートする

オンラインIDEから 右クリック > ライブラリのインポート… > ウィザードからインポート… を選びます

オンラインIDE > 右クリック > ライブラリのインポート... > ウィザードからインポート...

検索画面から mbed で探します。するとリストに mbed がでてくるので、選択した状態で インポート! をクリックします

オンラインIDE > 選択してインポート!

ライブラリのインポートダイアログは、特に変更することなく Import をクリックしてください

オンラインIDE > ライブラリ インポートダイアログ

若干待たされますが、下記の通りになります

オンラインIDE

この手順はほかのライブラリ追加の時にも同じように使える方法です。ぜひとも覚えてください。

最後に main.cpp を追加すれば、mbed開発の最小構成になります。 main.cpp を追加しましょう

main.cpp を追加する

オンラインIDEから 右クリック > 新しいファイル… を選びます

オンラインIDE > 右クリック > 新しいファイル...

ダイアログは下記のとおりです

  • ファイル名: main.cpp

オンラインIDE > 右クリック > 新しいファイル... : ダイアログ

ここまでの作業で、mbed開発における最小構成が揃いました

オンラインIDE > 右クリック > 新しいファイル... : ダイアログ

テンプレート = “Display a message on PC using UART” と同等にしてみる

テンプレート “Display a message on PC using UART” と同じコードを使って、コンパイルしてみましょう

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "mbed.h"

Serial pc(SERIAL_TX, SERIAL_RX);

DigitalOut myled(LED1);

int main()
{
    int i = 1;
    pc.printf("Hello World !\r\n");
    while(1) {
        wait(1);
        pc.printf("This program runs since %d seconds.\r\n", i++);
        myled = !myled;
    }
}

※オリジナルからの変更点:改行コードが \n だけだと、表示が崩れる可能性があるので \r\n としました

成功すれば、オンボードのLEDが点滅し始め、PCに接続したシリアルポートにはカウントが表示されます

LED

Terminal

超音波測距センサー HC-SR04 を使う

超音波測距センサー HC-SR04 と mbedボードを接続してみましょう! こんな感じになります

完成図

回路

※F466RE となってますが、F411REでも同じです

コード

豊富なライブラリの中にHC-SR04のライブラリがありますので、それを利用します

利用ライブラリ

Prabhu DesaiさんHCSR04 を使います

検索のときにはこんな感じで表示され、2番目でした

Prabhu DesaiさんのHCSR04

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "mbed.h"
#include "hcsr04.h"

Serial pc(SERIAL_TX, SERIAL_RX);
HCSR04 usensor(D4, D6); // Trigger(DO), Echo(PWMIN)

DigitalOut myled(LED1);

int main()
{
    pc.printf("Start!\n\r");
    while(1) {
        usensor.start();
        wait_ms(500);
        unsigned int dist = usensor.get_dist_cm();
        pc.printf("cm:%ld\r\n",dist );
        myled = !myled;
        wait(1);
    }
}
  • LEDは「動いてるかな?」を表現するためだけに使っているので、あまり意味はありません
  • 変数 dist に距離が格納されます

実行結果

シリアルポートに下記のように表示されます

1
2
3
4
5
6
7
8
9
10
11
Start!
cm:28
cm:29
cm:28
cm:29
cm:37
cm:37
cm:37
cm:37
cm:24
cm:24

あとがき

Nucleo(mbed)ボードはいろいろなサイズ・スペックで種類が多いです。基本的には同じコードが動くので、消費電力やI/Fのといった用途に合わせたボードが選べるのが魅力です

http://akizukidenshi.com/catalog/goods/search.aspx?search=x&keyword=nucleo&image=%8C%9F%8D%F5

また、Arduinoで使えるセンサーは、Nucleoボードでも使うことができます 日本語情報が少ないmbedではありますが、とても素直なC++のコードで書くことができるため、敷居はかなり下がるかと思います 私のように、いまだにポインタを理解していないような人でもライブラリを駆使すればセンサーの制御ができるようになりますので、せっかくのmbedボード、ぜひトライしてみていただきたいと思います!

ソラコム 松下

GWは SORACOM とラズパイで IoT電子工作に挑戦!

IoT システムを自分でも作ってみたいけど、何から手をつけていいかわからない。センサー使って測定してみたいけど、どれを選んだらいいの? ハードウェアや通信、センサー、クラウド、IoT 電子工作はハードルが高い・・・そんな方にとっておきのハンズオンテキストをご紹介します。

ぜひ今年のゴールデンウィークは電子工作にチャレンジしてみませんか?😁

ハンズオンテキストのご紹介

1. 超音波センサーを使って、距離を測定してみよう!

小型コンピューター Raspberry Pi 、USB 3G ドングル、超音波センサーを用いて、センサーが障害物を検知すると SORACOM Beam を経由してクラウドへデータを送信します。SORACOM Harvest を利用して、測定データを可視化できます。 超音波距離センサーハンズオン テキストはこちら こちらのキット一式は、ソラコムユーザーコンソールよりご購入いただけます。 >>購入方法はこちら

2. カメラを利用して、簡易監視カメラを作ろう!

Web カメラと Raspberry Pi 、SORACOM を利用して簡単に監視カメラを構築することができます。また定点観測しタイムラプス動画を作ることができますので、お好きなものの観察にも応用できます。

植物を定点観測し、タイムラプス動画にまとめたものです。

テキストはこちら こちらのキット一式は、ソラコムユーザーコンソールよりご購入いただけます。 >>購入方法はこちら

3. 赤外線センサー使ってDIYスマートホーム!

赤外線信号を Raspberry Pi で受送信し、インターネット経由で家電リモコンを操作します。LIRC(Linux Infrared Remote Control)を利用し、Linux 上での送信したい赤外線信号の解析および送信を行い、SORACOM Beam と MQTT を用いて赤外線信号を送信します。リモートからの家電の操作をお試しいただけます。

テキストはこちら

4. LoRa を使ってセンシングデータを飛ばしてみよう!

長距離通信、省電力のLoRa Arduino シールドを利用し、温度センサーから得られるデータをLoRaで送り、SORACOM Harvest で可視化までをお試しいただけます。 LoRa ゲートウェイがお近くにある方は誰でもお試しいただけます。LoRa 共有ゲートウェイの設置箇所はここからご確認ください。

テキストはこちら

>>LoRa Arduino シールドの購入方法はこちら

5. その他、様々なハンズオンテキストをご紹介

その他にも、ソラコム以外の方が書いてくださった「試してみる」BLOG 記事があります。参考にしてみてください。

Qiita の SORACOM タグの中には、様々なIoTテキストが紹介されています。IoT でこんなことやってみたかったが見つかるかもしれません。ぜひご覧ください。

IoT体験キットの購入方法

ソラコムのユーザーコンソールにログインし、発注画面より該当のキット、デバイスをお選びください。 ソラコムのアカウントをお持ちでない方は、アカウントを作成し、支払情報(クレジットカードもしくは請求書払い)を設定いただく必要があります。 詳細はこちらのアカウントの作成・支払情報の設定をご覧ください。

how-to-buy LoRa Arduino シールドのご購入を希望する方は、LoRaWANタブより選択ください。 IoT体験キットのご購入を希望する方は、その他(キットなど)を選択ください。

IoT はまず何かしら動くものを作ってみるところからスタート!ぜひこのゴールデンウィークを利用して、一度IoTを体感してください^^

ソラコム 熊崎

「IoTお楽しみ袋」デバイスの使い方ご紹介

先日 4/20 に行われたソラコムの技術者向けカンファレンス「if-up 2017」で、来場者の方全員にIoTにちなんだデバイスをプレゼントされました

当日はご協賛いただいたスポンサーからの熱いデバイス紹介LTも開催され、使い方や特徴など盛り上がりました!

せっかく手に入れたIoTデバイスですから、是非とも活用しましょう!ということで、簡単ではありますが利用方法をいくつかご紹介します

STマイクロエレクトロニクス / NUCLEO-F411RE

NUCLEO-F411RE

ARM Cortex-M4 が搭載されているマイコンです。ボード上にユーザが制御できるLEDやボタンがついてるので、これ一つだけでmbedの開発の雰囲気を感じることができます!

今回、かなりの方がこの NUCLEO-F411RE を手にしたのではないでしょうか。しかし、この基盤感がなんとも言えず、まだ電源すら入れてない方も多いのではないでしょうか?! まずは、どこのご家庭でも転がっている USB mini-Bケーブルを用意して、パソコンとつなげてみましょう! すると、まるでUSBメモリディスクのようにNUCLEO-F411REが見えるはずです。ここからmbedプログラミングの道は開けています!

こちらのページに、オンボードのLEDをチカチカ点滅させる「通称:Lチカ」を行う方法がかかれていますので、やってみてください Nucleo-F401RE(mbed)で遊ぶ01: Lチカ ※NUCLEO-F401RE向けにはなっていますが、内容は全く同じで大丈夫です

アルプス電気 / センサネットワークモジュール開発キット

センサネットワークモジュール開発キット

BLE(Bluetooth Low Energy)で通信をすることができる4つのセンサーを搭載したIoTセンサーです Androidスマートフォンでの活用もさることながら、コマンドガイドが公開されており、gatttoolからでもデータ取得&操作が可能です

アルプスのセンサネットワークモジュールをラズパイ3と3GPIで使ってみる(其の1 BLEパケット構造解析)を参考にトライしてみてください!

タブレイン / 3GIM V2.1(3GおよびGPSフレキアンテナ付き)

3GIM V2.1

これが当たった方。IoT通信生活を飛躍的に向上させる大チャンスです! 製品名は「スリー・ジム」と読む、タブレイン社の 3GIM V2.1です

情報は公式Wikiに集まっており、Arduinoから使う法のほか、Raspberry Piからの利用方法もあり、とても有意義に利用することができます しかも!ATコマンドだけでHTTPアクセスが可能ですので、是非ともマニュアル見ながらお試しを。

メカトラックス / anyPi

anyPi

Raspberry Pi本体に3G通信モジュール「3GPI」がついています。本来は別途用意する必要のあるシリアルコンソールも、標準添付されているPiConsole I/FのUSBインターフェイスで入ることができ、面倒な作業なく3G通信を確かめることができます

別途、温度センサーカメラを用意すれば、もっといろんなことができますよ

色々な組み合わせは メカトラックスのラズパイIoTスタータキット「anyPi(エニーパイ)」のPiConsole I/Fを使ってみた に掲載されています

ぷらっとホーム / OpenBlocks IoT BX1

OpenBlocks IoT BX1

このボディーにWi-Fi、BLE、そして3G通信まで入っているの?と驚くサイズです しかもOSはよくある組み込み系Linuxではなく、素のDebian GNU/Linuxが使われているのもポイント。ログインしてしまうと「あれ?サーバにログインしてたかな?」と疑うくらいの使い勝手です

マニュアルも完備されているうえ、最初からサポートされているセンサーデバイスの数も多くあります ※アルプス電気の「センサネットワークモジュール 開発キット」もサポート済み

あとがき

個人的にはNUCLEO推しですが、OpenBlocks IoTの使い勝手も好きです。 デバイスに触れる機会をもっと増やしていきたい思います

ソラコム 松下

IoT Technology Conference If-up 2017 満員御礼

4月20日、技術者向けのカンファレンス IoT technology conference if-up 2017 は、多くの方にご来場いただき、大盛況のうちに終了致しました。 今回のカンファレンスは、IoT 技術全般や最新動向を、様々なバックグラウンドを持ったエンジニアの皆様と議論し、これからのIoTムーブメントを創りあげていくことをテーマに開催しました。サービスの話だけではなく、設計思想、実際のアーキテクチャ、現場で直面する課題や解決手段などを実際にシステムを構築されたエンジニアの方にご登壇いただき、リアルな声を届けていただきました!

キーノートは前半では、IDC Japan 鳥巣様による IoT 市場とIoTテクノロジーの動向をご紹介、ソラコムCTO安川よりシステム全体の監視・運用のためのOpsDevエンジニアの存在や、疎結合非同期などSORACOMの技術の裏側のお話をさせていただきました。

キーノートパネルでは、アーム内海社長、LINE 砂金様、そして飛び入り参加ゲストとしてRuby開発者のまつもとゆきひろ様にご登壇いただき、「テクノロジーで潮目が変わる時」と題し、とても密度の高いお話をいただきました。 キーノートパネル資料はこちら

keynote_photo

参加者全員へのプレゼントとなった IoT お楽しみ袋は、最後の最後までプレゼントが増え計17種類のデバイスをプレゼントさせていただきました。初めて触るデバイスも多かったのではないでしょうか?これからゴールデンウィークですね!ぜひ使ってみて、感想聞かせてくださいー! プレゼントデバイス資料はこちら

ご参加いただいた皆様に、SORACOM へのリクエストで星空を作っていただきました★ 書いてくださったみなさま、本当にありがとうございます! 実際にSORACOMを使ってくださる方からのリクエストやフィードバック、大事に一つ一つ見させていただき、今後のサービスの参考にさせていただきます😶 request_star

さて午後からは2つのトラックに分け、機械学習、LPWA、デバイス、閉域網、GPS、カメラ、グローバルなど様々なテーマに沿って実際の生の声をいただきました。どのセッションもとっても濃いお話をしていただき、学びもとても多い時間となりました。 登壇資料はこちらをご覧ください

総合格闘技と言われるIoTの様々なノウハウや技術をぎゅぎゅっと詰め込んだ今回のカンファレンス、来場者の皆様と直接語り、学び、とても貴重な時間をありがとうございました。来るIoT時代を一緒に作りあげていきましょう!

ソラコム 熊崎

PCI Express Mini Card タイプの 3G/LTE 通信モジュールの販売取扱いを開始しました

4月20日、Quectel Wireless Solutions Co.,Ltd が製造した PCI Express Mini Card タイプの 3G/LTE 通信モジュール「UC20-G / EC21-J Mini PCIe」について、開発ボード・アンテナと共に、SORACOM のユーザーコンソール等での販売取扱いを開始することを発表いたしました。

グローバル対応 3G 通信モジュール(UC20-G Mini PCIe) 販売価格:3,980円/台(税別・送料別)

UC20-G Mini PCIe

日本向け LTE Cat.1 通信モジュール(EC21-J Mini PCIe) 販売価格:4,280円/台(税別・送料別)

EC21-J Mini PCIe

いずれのモジュールもうれしいことに、USB/UART から AT コマンドだけで HTTP や TCP/UDP が送受信できます!

他にも、以下のような特徴があります。

  • 標準のインターフェース(USB / UART)
  • 広範なドライバ提供(Windows / Linux / Android)
  • 標準のフォームファクタ(PCI Express Mini Card タイプ)

メーカー提供ドキュメント(UC20-GEC21-J)も合わせてご確認ください。

当モジュールは、3,980円で、1台から、すぐに入手することができます。 スタートアップや企業の新規事業等に関わるお客様は、通信モジュールの調達から試作、ビジネスモデル検証を迅速にお試しいただけるようになります。

例えば…

  • 開発/検証は Mini PCIe+開発ボードで
  • 試作/セルラーをオプションで扱うといった場合は Mini PCIe で
  • 量産時は実装タイプを選択するとともにアンテナも小型のものを利用、3G⇔LTEも同一フォームファクタで提供

といった形で、通信モジュールに関するノウハウは引き継ぎながら、ビジネスのスケールに合わせて選択可能な通信モジュールです。ぜひご検討ください。

ソラコムは引き続き、企業も個人も利用できるIoTプラットフォームとして、世界中のヒトとモノをつなげ共鳴する社会を目指し、IoT プレイヤーの増加に貢献していきます。

ソラコム 高橋範

news

SORACOM Funnel で AWS Kinesis Streams を利用するときのオプションが追加されました

現状、SORACOM Funnel 経由で AWS Kinesis Streams にデータを送信する場合の Partition Key (どのシャードに振り分けられるかに影響するキー)は、ご利用の SORACOM Air SIM の IMSI または LoRa device ID に固定されていました。これは、もともと SORACOM Air SIM が 1 IoT デバイスに対応するユースケースを元に設計されていたためです。

このたび、複数の IoT デバイスを SORACOM Air に接続されたゲートウェイのネットワーク内に配置し、高頻度にデータを送信するユースケースでご利用いただいているお客様からのご要望を受け、この Partition Key をリクエスト毎にランダムな値に設定するオプションを導入いたしました。これにより、同一の SIM からデータを送信された場合でも、お客様の Kinesis Streams のシャードにデータが分散されるようになりました。

注意事項として、このオプションを有効にすると SIM / LoRa デバイス単位でのデータの順序保証ができなくなりますので、あらかじめご了承下さい。

この設定はユーザーコンソールならびに、API から設定いただけます。

これからも、ユーザー皆様の声を大切に、機能開発を進めてまいりますので、ご期待ください。

ソラコム 清水 

LoRa -> HTTP Proxy に署名が付けられるようになりました

本日は、LoRa に関する機能追加のお知らせです。 このたび、 LoRa -> HTTP(s) Proxy でも Cellular と同様にHTTPヘッダーに署名を付与いただけるようになりました。

  • HTTP(s) のヘッダーに x-soracom-lora-device-id: #{deviceId}, x-soracom-timestamp: #{unixtime(msec)}, x-soracom-signature: #{signature} が追加されます
  • signature を x-soracom-lora-device-idx-soracom-timestamp の値を使って検証することで、これらのヘッダーがソラコムのサーバーサイドで付加されていることを検証いただけます。

署名は下記のように計算され、x-soracom-signatureとしてリクエストに付与されます。

1
SHA256(${事前共有鍵文字列}+x-soracom-lora-device-id=${LoRa device id}x-soracom-timestamp=${timestamp})

例えば下記のような前提条件の場合

事前共有鍵: topsecret LoRa device id: 000b78fffe000001 timestamp: 1492414740191

具体的には以下のように計算されます。

1
SHA256('topsecret'+'x-soracom-lora-device-id=000b78fffe000001x-soracom-timestamp=1492414740191')

なお、LoRa デバイス ID は POST される payload に含まれていますが、今回の変更により、HTTPヘッダーからも取得いただけるようになりました。

さて、if-up 2017 がいよいよ今週の木曜日に開催されます。 ご好評につきチケットは完売していますが、ご購入された皆様と当日会場でお会いできるのを楽しみにしています!

ソラコム 清水

IoTテクノロジーカンファレンス If-up 2017 / 見どころ紹介 3

こんにちは!いよいよ今週に迫ってきたif-up2017から、いくつかのセッションの見どころをご紹介します。

B1:エッジヘビーコンピューティングと機械学習

こちらはPreferred Networksの田中様による、エッジヘビーコンピューティングについてのセッションです。IoTには様々なユースケースがありますが、車の自動運転に代表されるようなデバイスサイドでの高いリアルタイム性を持った判断が必要なもの、高解像度のカメラ画像/映像の分析のような非常に大容量のデータ転送を必要としセルラーネットワークではタイムリーな転送が難しかったり、クラウド側の処理量が大きくなりすぎてしまうものなど、デバイスサイドでの処理や工夫が必要なケースも多くあります。Preferred Networksでは、デバイス、ネットワーク、クラウドがそれぞれ協調して動作することによりボトルネックを排除し、レイテンシを下げていくためにエッジヘビーコンピューティングというコンセプトのもとにアプリケーションやシステムの開発を進めています。このセッションでは、ディープラーニングにおけるエッジヘビーコンピューティングについての話をして頂く予定で、ディープラーニングのおさらい、エッジヘビーコンピューティングについての紹介、デモ、そして今後の展望やネットワークへの要望という流れになる予定です。

A2:コネクティビティのビジネス実装

訪日旅行者向けの通信プラットフォームを提供されているWAmazingの舘野様、Ninja Lockやスマート内覧などスマートロックデバイスやサービスを提供されているライナフの滝沢様、日月様によるセッションです。SORACOM Airでは様々なAPIや付加機能が提供されています。例えばAPIではSIMの購入から利用開始のようなフェーズも自動化が可能です。SIM単位でのトラフィックのモニタリングも提供されており、APIで数値を取れるようになっているので通信利用量/料の分析や制御を柔軟に実施することも可能です。更にイベントハンドラという機能を使うことにより「1日に1GB以上通信をしたら速度128Kbpsに速度制限をかける」といったような、イベントベースの通信制御も簡単に実装できるようになっています。このセッションに登壇頂く両社はこれらの機能を非常にうまく活用して、ビジネスの効率化をされています。現場でSORACOM Airを使っている生の声が聞ける、とても楽しみなセッションです。

A3:業務システムとの連携〜閉域網とクラウド〜

消費者向けのポイント付与システムなどにSORACOM Canalをご利用頂いているハンズラボの平井様、建設現場効率化のためのIoTソリューションであるスマートコンストラクションでSORACOM Doorをご利用頂いているコマツの根本様に登壇いただきます。SORACOMでは3種類の閉域網構築サービスを提供しており、接続先や接続方法によって、AWS VPCならSORACOM Canal、インターネットVPNを使った接続ならSORACOM Door、専用線を使った接続ならSORACOM Directという基準で選ぶことになります。今回のセッションでは実際のこれらのサービスを利用している2社の方に、解決したかった課題、SORACOMを選択に至った検討の経緯、今後の課題や要望などをお話しいただきます。

SORACOM Funnel AWS IoT アダプタの効果的な使い方

IoTはデバイス・通信・クラウドといった多くの技術要素から構成されていますが、日々進化するテクノロジに追従するのは並大抵のことではないことは、皆さんもよくご存じだと思います

その中でもソラコムは特に通信において少しでも皆さんの負担を軽減するため、今日ご紹介する SORACOM Funnel および AWS IoT アダプタ をサービスしています

こちらでは SORACOM Funnel AWS IoT アダプタAWS IoT を効果的に使う方法をご紹介します

12/21: SORACOM Funnel での設定を追記しました

SORACOM Funnel のおさらいと AWS IoT アダプタ

SORACOM Funnel※とは、デバイスからのデータを 特定のクラウドサービスに直接転送するサービス です

※読み方は「ソラコム ファネル」ですね

4/6にリリースされました SORACOM Funnel AWS IoT アダプタ によって、AWSが提供しているIoT向けクラウドサービス “AWS IoT” へ直接転送できるようになりました!

これによって SORACOM Funnel が対応している「直接データを転送できるようになったクラウドサービス」は4種類になりました

AWS IoTとは?

IoT向けのデータ収集とデバイス制御用のAWSのサービスです MQTTSやHTTP RESTでアクセスができ、収集したデータを各種AWSサービスへと転送します

AWS IoTのアーキテクト例

大きい図を開く

Amazon Kinesis StreamsおよびAmazon Kinesis FirehoseとAWS IoTの違い

  • Amazon Kinesis Streams
    • 大量のデータ通信向きのサービス
    • データ通信量の大小にかかわらず、ストリームの存在で課金される
    • Kinesis Streamsからのデータ取得にAWS LambdaやAmazon Kinesis Client Libraryを使ったプログラム(と実行場所)を準備する必要がある
  • Amazon Kinesis Firehose
    • Kinesis Streamsの特徴を持ちつつ、AWS IoT ルール&アクションのようにAWSのサービスにデータロードが簡単に行える
    • 東京リージョンでは利用不可能 (2017/4/14時点)
    • 振り分け先のAWSサービスがAWS IoTより少ない

このような面を検討しつつ、アダプタを選定していきます

SORACOM Funnel AWS IoTアダプタを使ってみる

SORACOM Funnel と AWS IoT を使い、フルマネージド NoSQLサービス “Amazon DynamoDB” にデータを格納するところまでをご紹介します

SORACOM Funnelにデータを送信すると、AWS IoTの to_dynamodb/# トピックを経由してAmazon DynamoDBへ保存されます

全体構成

大きい図を開く

※AWS IoTからAmazon SNSを呼び出しメール送信をする例は Getting Started でご紹介しています

手順

  1. AWS認証情報の確認
    • AWSアカウントに設定されてるアクセスキー及びシークレットアクセスキー(クレデンシャル)を確認&入手
  2. Amazon DynamoDBの設定
    • テーブルを作成
  3. AWS IoTの設定
    • ルールを作成
  4. SORACOM Funnelの設定
    • AWS認証情報の埋め込み
    • AWS IoTのエンドポイント(転送先URL)の設定

最後に確認していきます

1. AWS認証情報の確認

AWSコンソールからIAMのページを開き、AWSアカウントに設定されてるアクセスキー及びシークレットアクセスキー(クレデンシャル)を入手してください

AWS認証情報の確認

2. Amazon DynamoDBの設定

AWSコンソールからDynamoDBのページを開き、 テーブルの作成 をクリックしてDynamoDBテーブルを作成していきます

DynamoDBテーブル作成開始

DynamoDBテーブルは、下記の通りに設定し 作成 をクリックします

  • テーブル名: testing_awsiot
  • プライマリキー
    • パーティションキー: uuid
    • 型: 文字列
    • ソートキーの追加: チェックしない
  • テーブル設定
    • デフォルト設定の使用: チェックする

DynamoDBテーブル設定

下図のようにテーブルの作成が開始されます。作成完了までに5~10分程度かかりますので、待ちます

DynamoDBテーブル作成中

以上でDynamoDBの設定は完了です

3. AWS IoTの設定

AWSコンソールからAWS IoTのページを開き、 Get started をクリックしてAWS IoTの管理画面を開きます

AWS IoT Get started

AWS IoTの Settings から Endpoint を控えておきます

AWS IoT Endpoint

AWS IoTの Rules を開き、 Create a rule をクリックします

AWS IoT Create rule

Create a ruleは、下記の通りに設定し Add action をクリックします

  • Name: to_dynamodb
  • Description: (空)
  • Using SQL version: 2016-03-23
  • Attribute: *, timestamp() + '-' + newuuid() as uuid
  • Topic filter: to_dynamodb/#
  • COndition: (空)

AWS IoT Create a rule1

AWS IoT Create a rule2

Select an actionは、DynamoDBv2 を選択し Configure action をクリックします

AWS IoT Select an action1

AWS IoT Select an action2

Configure actionは、下記の通り設定し Create a new role をクリックします

  • Table name: testing_awsiot

AWS IoT Configure action

下図の画面が表示されるので、下記の通り設定し Create a new role をクリックします

  • IAM role name: testing-awsiot-put-to-dynamodb

AWS IoT Configure action

改めて IAM role name を先ほど作成した testing-awsiot-put-to-dynamodb を選択した後、 Add action をクリックします

AWS IoT Configure action

下図のように DynamoDBへのアクションが追加されたことが確認出来たら Create rule をクリックします

以上でAWS IoTの設定は完了です

4. SORACOM Funnelの設定

まず以下の情報がそろっていることを確認します

  • AWSアカウント
    • アクセスキー
    • シークレットアクセスキー
  • AWS IoT
    • カスタムエンドポイント (AWS IoT の管理画面で確認できます。本例では YOUR_AWSIOT_ENDPOINT.iot.us-west-2.amazonaws.com としています)

あと決めておく事としては 送信先のトピック です 今回は my_topic/bar/各SIMのIMSI というように設計します

4-1. 認証情報(AWS アカウントのアクセスキー)を SORACOM に保管

まず AWS IoT に接続するために必要な認証情報を SORACOM に保管します

メニューの [セキュリティ] > [認証情報ストア] > [認証情報を登録]

AWSアカウントの情報を入力し、登録します

この保管した認証情報を、次の SORACOM Funnel で指定して利用できるようにします

4-2. SORACOM Funnel の設定

SORACOM Funnelの設定画面から、上記情報を各自入力します 認証情報のところは、先ほど設定した認証情報を選んでください

非常に簡素ですが、SORACOM Funnelの設定はこれで完了です

SORACOM Funnel 設定

設定のポイント

転送先URL: 転送先URLは https:// + AWS IoT カスタムエンドポイント + 送信先のトピック になります そのため今回は

1
https://YOUR_AWSIOT_ENDPOINT.iot.us-west-2.amazonaws.com/my_topic/bar/#{imsi}

このような形です

転送先URLの中の #{...} について 紹介している #{imsi}プレースホルダ機能 といって、 SORACOM Funnel 内部で自動的に送信元のSIMのIMSIに置き換えられます LPWAでも使えるプレースホルダがありますが、詳しくは SORACOM Funnel Getting start をご覧ください

確認してみる

確認の方法は SORACOM Funnel AWS IoT アダプターを使用してデータを送信する / 確認方法 でご紹介している方法と全く同じです

実際には下図の通りに Amazon DynamoDB にデータが入っていることが確認できます

Amazon DynamoDBでデータを確認する

SORACOM Beamとの違い・使い分け

ソラコムではサービス開始直後から SORACOM Beam という SORACOM Funnel に類似したデータ転送サービスも利用可能です

AWS IoTはMQTTSで通信できるため、SORACOM BeamのMQTTSプロトコル変換機能をつかってもAWS IoTにアクセスすることができます。それぞれの使い分けは以下の通りです

  • SORACOM Funnelを使ったほうがいい場合
    • データ収集目的 (デバイス→クラウドの通信のみで、下りの通信が無い)
    • MQTT実装が不可能な場合
  • SORACOM Beamを使ったほうがいい場合
    • SORACOM Funnelが対応していない送信先へのデータ転送
    • AWS IoTのDevice Shadowのような、下りの通信(クラウド→デバイス)が必要

あとがき

最近ではモデム側にHTTPクライアントが実装されており、ATコマンドを経由してHTTP POSTができたりするため、UART制御さえできればHTTP通信ができる可能性も広がってきました

クラウドへデータ送信するにはMQTTやHTTPといったアプリケーションプロトコルやそれよりも下のレイヤーのTCP/UDPを使った実装が必須で、しかも各種クラウド・サービスに合わせた認証・ペイロード調整、加えてセキュアにデータを送るためにはTLS化と、通信にまつわる実装がデバイス開発の速度を遅らせてしまいます

デバイス側における通信の面倒ごとは極力減らし、本来のセンサーなどのハードウェア制御に集中できるお手伝いをこれからも行っていきます!

ソラコム 松下