SORACOM Blog

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

料金見積もりツールが更新されました。

料金見積もりツールが更新され、ソラコムの各サービスにも対応しました! これまでも、soracom.jp に SORACOM Air の見積もりツールはありましたが、Air だけでなく、Beam、Funnel などの各サービスの利用料見積もりにもご使用いただけます!

見積もりツールはこちら

ソラコムでは、お客様がわずかな初期コストで使用開始でき、また継続的に安価に運用できるように、各サービスごとに異なる料金体系になっています。 たとえば、データ転送支援サービスである「Beam」やクラウドリソースアダプタ「Funnel」では、リクエスト数ベースの従量課金になっています。 プライベート接続サービスを提供する「Canal」や「Direct」などは、利用時間と使用するAir SIM数に応じた従量課金となっております。

このたびの見積もりツールの更新により、各サービスの見積もりがより簡単になりました。

Beamの見積もり

なお、当ツールは、現状では、日本向けAir SIMを利用したサービスを対象にしております。また、各サービスには、無料利用枠がありますが、当ツールでは適用していませんので、ご注意ください。

ぜひ、料金のお見積りにご使用くださいませ!

ソラコム江木

低トラヒック用途向け新料金体系 「Low Data Volume」の購入方法&使いどころ

5/10に発表された、1ヵ月の基本料金が 0.4 USD (約45円) となるグローバル向け Air SIMの新料金体系「Low Data Volume」

1ヵ月の基本料金が従来の約10分の1になるということもあり大変ご好評をいただいておりますが、5/16よりご注文いただくことができます!※ 「グローバル向け Air SIM」としていますが、実は Low Data VolumeのSIMは日本国内でもご利用いただけます!

ここでは「購入の仕方」に加え、通信料やユースケースに応じて、どのSIMを選んだらよいのかをご紹介します

※出荷は5月末から順次行います (5/21時点)

「Low Data Volume」のおさらい

プレスリリースにもありますが、Low Data Volumeの特徴をピックアップしました

  • 1 SIM毎(1回線)から契約可能
    • 初期費用は 5.0 USD/枚 (送料別)
  • 基本料金は 0.4 USD/月
    • 契約単位は月毎
      • e.g.) 6/10にデータ通信を開始しても、6/30にデータ通信を開始しても6月中の基本料として 0.4USDが課金されます。(日割りはありません)
  • データ通信料金は 0.5 USD/MB
    • 利用する国や地域によらず固定 (課金の単位は従来通り。例えば Japan の場合は 100KB単位 → 0.05 USD毎に課金されます)
  • お支払方法はクレジットカードのみ (5/17現在)
  • 決済通貨は USDのみ (5/17現在)
  • SIMの管理および購入は SORACOM Webコンソール / グローバル で行えます
  • 利用可能な国はアメリカ、ヨーロッパ、アジア各国 (詳細はグローバル向け Air SIM / プラン01 Low Data Volumeで確認ください)
    • 日本国内でも利用可能です!
  • 使用可能なデバイスはサポートをご覧ください

「Low Data Volume」対応 SIMの購入の仕方

購入は SORACOM Webコンソール から行うことができます

1. カバレッジタイプ=グローバル へ切り替え

Webコンソール右上の「日本」をクリックした後、「グローバル」をクリックします

(オプション). カバレッジタイプ=グローバルでのお支払方法設定

SORACOMでは、カバレッジタイプごとにお支払方法を設定していただいています そのため、カバレッジタイプ=グローバル でお支払方法が設定されていない場合は、下記のような注意書きが表示されます。表示に従い、支払方法を設定してください

カバレッジタイプ=グローバルでの支払方法が設定済みの場合は、次にお進みください

2. 発注

Webコンソールのメニューから「発注」をクリック

注意事項を確認の上、「新規注文」をクリック

購入商品一覧から「plan01-low_data_volume」を選びます。ここでは1枚注文しますので 1 SIM pack の数量を 1 としました 10枚や100枚といったまとまった単位をご購入する場合は、10 SIM pack や 100 SIM pack をご選択ください

ちなみに SIMはまとめて購入すると、大変お得です! 1枚ですと 5 USDですが、10 SIM pack(10枚入り) では 1枚あたり 4 USDに、一番最大の500 SIM pack(100枚入り) の時は 1枚あたり 2 USDまで単価が下がります!

商品が決まりましたら「次へ進む」をクリック

SORACOMでは、お支払方法の時同様に、カバレッジタイプごとにお届け先を設定していただいています そのため、カバレッジタイプ=グローバル でお届け先が設定されていない場合は、下記のように新しいお届け先を入力することになりますので、表示に従い、お届け先を設定してください

カバレッジタイプ=グローバルでのお届け先が設定済みの場合は、次にお進みください

お届け先が決まりましたら「次へ進む」をクリック

ご注文内容の確認画面となります。よろしければ「注文を確定する」をクリック

出荷は5月下旬を予定しています!

「Low Data Volume」の賢い選び方

まず日本向けAir SIMで一番金額の安い深夜時間帯と「Low Data Volume」を比較してみると、一か月あたり※の基本料込みでおおよそ 4,600KiB 以内 は「Low Data Volume」のほうが安いということがわかります

※一か月あたり = 30日 で換算

※1USD = 111.26円 で換算

一か月あたり 4,600KiBのデータ送受信 でできること

一日当たりに換算すると 153.3KiBになります。一時間当たりでは 6.3KiBです 後述しますが、UDPで 1バイトのデータを送るとDNSの名前解決、UDPヘッダ含めて 377バイト/回となるので、その場合は 約3.5分に一回送信できます この中でできることを検討していくという形です

パケット調査の方法

Raspberry Pi 3のRasbian上にpmacctをインストールしてppp0のトラフィック量を計測しました (pmacctの使い方は別途ブログ書きます!)

DNSとNTPの通信量

通信量を検討するにあたり、まず最初に注意することがあります それは、システムを維持するための最低限のサービス DNS と NTP の通信量です

DNS

DNSは /etc/resolv.conf にリストされているサーバに照会します。通常はリストされている中の1サーバのみですが、dig等を使うと複数のサーバに照会することがあります

1サーバの名前解決で 上り 71バイト、下り 152バイト~回答内容に応じてのサイズ が発生します

名前解決については必須です。通信毎に発生することを忘れないようにしましょう nscd や UnBound を使って照会結果をキャッシュし、問い合わせ回数を減らす方法が考えられます。その場合はキャッシュ期間の調整を検討してください

NTP

NTPは /etc/ntp.confserver 毎に照会と応答をします

NTPを動かしていると 上り=76バイト、下り=76~152バイト が発生します poll interval の間隔で上記通信が発生します また、先に照会したDNSのパケットも発生するので、その分をお忘れなく

pmacctを動かしているとわかりますが、思った以上に通信が発生します。Rasbianの標準状態ですと、10秒~20秒に一回発生します そのため /etc/ntp.conf のpoll intervalを調整することが必須となるでしょう。また server の数も減らしたほうが良いです

時刻同期については、NTPの照会回数を調整する方法のほか、セルラー通信モデムから得られる時刻を使うといったことが考えられます。また、そもそもクロックをデバイスに持たせずに、上位で解決するといった考えも良いでしょう

SORACOM Beamを使って1バイトを送る例

socat を使って 1バイトを送信してみます

UDPの場合
1
$ echo "a" | socat stdin udp:beam.soracom.io:23080
1
2
3
4
5
$ sudo pmacctd -P print -r 10 -i ppp0 -c src_host,dst_host,dst_port
SRC_IP                                         DST_IP                                         DST_PORT  PACKETS               BYTES
RaspberyPi                                     SORACOM_DNS_Server                             53        2                     122
SORACOM_DNS_Server                             RaspberyPi                                     49154     2                     225
RaspberyPi                                     BEAM.SORACOM.IO                                23080     1                     30
  • 上り = 152バイト (内、DNS=122)
  • 下り = 225バイト (内、DNS=225)
TCPの場合
1
$ echo "a" | socat stdin tcp:beam.soracom.io:23080
1
2
3
4
5
6
$ sudo pmacctd -P print -r 10 -i ppp0 -c src_host,dst_host,dst_port
SRC_IP                                         DST_IP                                         DST_PORT  PACKETS               BYTES
RaspberyPi                                     SORACOM_DNS_Server                             53        2                     122
SORACOM_DNS_Server                             RaspberyPi                                     50941     2                     225
RaspberyPi                                     BEAM.SORACOM.IO                                23080     5                     270
BEAM.SORACOM.IO                                RaspberyPi                                     49348     3                     164
  • 上り = 392バイト (内、DNS=122)
  • 下り = 389バイト (内、DNS=225)

LoRaWANとの比較

少ないデータの送信と言いますと、すでにリリースされている SORACOM Air for LoRaWAN があります こちらのとの比較もしてみましょう

まずLoRaWANは 約4.4秒に1回、11バイトを送信でき※これを一か月あたりに換算すると、6,328KiBとなります

11バイトというのは純粋にユーザのデータで使うことができます。条件を「UDPにて 11バイトを送信」とすると、DNSの名前解決、UDPパケットヘッダ等含めて 1回あたり 387バイトとなります 一か月あたりの通信量を 4,600KiBに収める場合、約3.6分(216秒)に1回、387バイトを送信できることになるので、量や頻度ではLoRaWANの方が有利です

ただし、1回あたりのデータサイズが 11バイトで収まらない場合は、アプリケーション側で組み立てる必要が出てくるため、データサイズによっては「LoW Data Volume」のほうが使い勝手が良い場合もあります そして、現在のLoRaWANの下り通信は、上り通信の返りに乗せる形態(Class A)が主流であるため、即応性をもとめる場合にもセルラー通信である「Low Data Volume」が有利でしょう

LoRaWANの通信モジュールはセルラー通信モジュールに比べて圧倒的に消費電力が低いため、電源制約においてはLoRaWANの方が有利になるでしょう また、LoRaWANは自前で基地局となるLoRaWANゲートウェイを設置することができるため、セルラー通信の及ばない山間部等におけるネットワーク構成で有利となります

※LoRaWANを日本国内で運用するにあたっては、ARIBの規定上 SF=10の時は4.4秒よりも短い間隔でデータ送信が行えない等といった制約があります

LoRaWANとの比較のまとめ

  • 数バイトのデータ送信をおこなうユースケースであれば、LoRaWANでも「Low Data Volume」でも同じ
  • 「Low Data Volume」が有利になる場合
    • (頻度は少ないが)一回当たりの通信量が12バイトを超える場合
    • 下り通信における即応性が必要となる場合
  • LoRaWANが有利になる場合
    • 省電力デバイスを必要とする場合 (セルラー通信モデムは消費電力がまだ高いため)
    • セルラー通信の範囲が及ばない山間部等での通信を必要とする場合 (自前でゲートウェイ(基地局)を設置できるため)

よくある質問

  • Q: SORACOM Web コンソールの「発注」に plan01-low_data_volume が表示されない!?
    • A: カバレッジタイプ=日本では販売しておりません。購入のしかたに沿って、カバレッジタイプ=グローバルに切り替えた後、発注してください。ご注文お待ちしています!
  • Q: すでにグローバル向け Air SIM(プラン01)を持っているが、このSIMを「Low Data Volume」に変更できないか?
    • A: 大変申し訳ありません、「Low Data Volume」は専用のSIMとなってるため変更できません。新たに「Low Data Volume」対応のグローバル向け Air SIMをご購入いただくことになります

ソラコム 松下

LCD キーパッドシールドを使った「LoRa お散歩セット」

起動

先週リニューアルした SORACOM LoRa Space(SLS) はもうご覧いただいていますでしょうか。

SLS の接続ポイントの情報は、LoRa 共有ゲートウェイ設置場所周囲のどの位置から LoRaWAN による通信に成功したかを表しており、ユーザーのみなさまに収集いただいたデータから作成しています。 接続ポイント

さて、接続ポイントの登録には GPS モジュールが必要となりますが、今回は、GPS モジュールと LCD キーパッドシールドを組み合わせて、位置情報の取得状況や通信状況を液晶ディスプレーに表示して、モバイルバッテリーで持ち運び時に便利な「LoRa お散歩セット」を作ってみましょう。

今回利用したモジュールは以下の2つです。GPS モジュールは今回は GettingStarted で紹介しているものとは別の製品を使っています。

GPS 受信キットは「みちびき」対応で、全天が見渡せる環境において、ホットスタートから1秒、コールドスタートから 42 秒で測位可能です。電源が入ると赤色 LED が点灯、位置情報を取得できるようになると同じ LED が点滅します。 上記店舗の購入画面より、配線を含む日本語説明書のほか、ライブラリーやサンプルプログラムを閲覧可能です。購入時価格は 2,200 円でした。

LCD キーパッドシールドには、バックライト付きの 16 行 × 2 列の LCD と、5 つのタクトスイッチがついています。LoRa シールド同様、ハンダ不要で Arduino にはめ込める作りになっており、LoRa シールドと合わせると三階建てになります。 リンク先の日本語説明書にて、組み立て後に使用できるピンの情報が記載されています。購入時価格は 1,060 円でした。

これらと LoRa Arduino 開発シールドを組み上げてモバイルバッテリーを繋ぐと、以下のようになります。

全体図

それでは、LCD に GPS 情報を表示する Arduino スケッチを書いていくわけですが、せっかくタクトスイッチつきなので、スイッチを押すごとに、表示する情報を切り替えられるようにしましょう。

表示モード一覧

SELECT直近で取得した位置情報データを表示
LEFT送信した位置情報を表示
UP / DOWN過去送信した位置情報を表示
RIGHTGPS モジュールから取得した NMEA データを表示
RSTスケッチを再起動(シールドデフォルトの動作)

今回のスケッチでは、Arduino library for LoRaWAN Device 同梱のサンプルスケッチで使用した SoftwareSerial、TinyGPS に加え、LCD 出力のため LiquidCrystal ライブラリーを使用しています。また、Standard C++ for Arduino も使っていますので、リンク先より zip ファイルをダウンロードし、「ライブラリーとしてインストール」してください。なお、Arduino IDE から Standard C++ ライブラリーをインクルードすると幾つかのヘッダーが追加されますが、このスケッチで使用しているのはソースに記載の2つのみです。

このソースでは GPS モジュールの TX から延ばしたワイヤ(Arduino の RX)は D16 ピン(A2)、GPS モジュールの RX から延ばしたワイヤ(Arduino の TX)は D17 ピン(A3)に接続しています。ピンを変更する場合は #GPS_TX_PIN および #GPS_RX_PIN を変更してください(D11, D12 は LoRa シールドが使用していることにご注意ください)。

ソースコード内の #ifdef により幾つかの機能や設定を切り替える仕組みを用意しています。 例えば、LoRaWAN の圏外でスケッチの動きを確認する場合は、#define USE_LORAWAN をコメントアウトしてください。 今回使用した LCD キーパッドシールドとは異なる LCD、キーを使用する場合は、define USE_LCD#define USE_KEY およびその周辺を更新するか、コメントアウトしてください。

LCD とは別に、シリアルにも幾つかのデバッグ出力を行なっていますが、#define PRINT_NMEA および #define PRINT_GOT_GPS のコメントアウトを切り替えることで、出力内容を変更可能です。 前者は、GPS モジュールから取得した NMEA0183 形式のデータを直接出力、後者はそれを解釈した位置情報および時刻情報を出力しています。

SLS_GPS_LCD_LoRa.ino

setup() 内では、各デバイスの初期化を行います。LoRa ゲートウェイへの接続もここで行いますが、接続の成否は LCD にも表示します。

接続

SELECT を押すと、直近で取得した位置情報データを表示します。緯度経度情報は整数で、日時は分と秒のみを表示していますので、例えば下記の場合は、北緯35.6度、東経139.6度、時刻は 4 分 8 秒ということになります。 #define PRINT_GOT_GPS を有効にしていると、シリアルモニタでも同様の情報を確認できます。

GPS値

LEFT を押すと、最後にゲートウェイに送信した位置情報を表示します。SELECT を押した場合に表示される情報との違いについてですが、loop() 関数内を見ての通り、位置情報データは、前回送信後一定時間経過していない場合や、移動距離が少ない場合は送信されません。SELECT で表示されるデータは最新の位置情報データですが、LEFT は、実際に送信対象となったデータのみの履歴を表示します。更に、UP および DOWN を押すと、過去送信した位置情報を表示していきます(デフォルトでは過去10件まで)。

ただし、送信対象のデータであっても LoRa ゲートウェイまでの通信に失敗している場合もありますので、SLS での履歴情報と比較することで、送信に失敗したケースの位置情報を確認することができます。

履歴

RIGHT を押すと、GPS モジュールから取得した NMEA データを表示します。#define PRINT_NMEA を有効にしている時にシリアルモニタに表示される情報と同様ですが、 LCD では、表示できない文字を含む多量のデータが出力されますのでご注意ください。

ここに何も表示されない場合は、位置情報の測位に失敗している可能性や、コールドスタートで測位までに時間がかかっているなどの可能性、モジュールからの配線が正常ではない可能性があります。

NMEA値

これで、モバイルバッテリーがもつ限り、SLS への接続ポイントの登録が簡単にできるようになりました。暖かい日の多い季節になってまいりましたので、ぜひ「LoRa お散歩セット」を持って接続ポイントの登録をお試しください。また、LoRa デバイスと組み合わせて使えるスケッチなどを作られた方は、ブログ等でご紹介ください!

ソラコム 岩崎

IT Week 2017 春 IoT/M2M展 大盛況!ご来場頂いた皆様ありがとうございます。

先週5/10-5/13に東京ビッグサイトにてIT Week 2017春が開催されました。 ソラコムは16のパートナー企業の皆さんと一緒にIoT/M2M展に出展致しました。3日間で合計8万8000人の来場者を誇るIT Week、毎日大変多くの方にご来場いただき、熱心にお話を聞いてくださいました!来場頂いた皆様、誠にありがとうございます。ブースにお越しになれなかった方は、ぜひこちらのブログでブースの様子をご覧ください。 SORACOM Booth

新発表

IT Week 前日に新たに低トラフィック向けの新料金体系SORACOM Funnel 連携にパートナーアダプタの追加LoRa Spaceのリニューアルを発表をさせていただきました。

また2日目は、ソラコム代表の玉川が特別講演枠をいただき、お話しさせていただきました。 発表資料はこちらです。

ブースのご紹介

さて今回のブースではこちらの16社の皆さんと共同展示を実施し、IoTの実際の利用事例や導入方法を、いろんな切り口から聞けるそんな展示になっておりました。ここでは簡単ではありますが、ブースの様子の一部をご覧いただきます。

Partners

左から順番に、

  • 株式会社ウフル:社内で実施している社員の動線の可視化やLoRaWAN を利用したハッカソンの取り組みをご紹介。
  • 株式会社オプティム:IoT ×◯◯を進めていらっしゃるそうで、特に農業・水産・医療・建設領域でのIoT事例を展示。
  • 株式会社アイ・オー・データ機器:SORACOM 認定デバイスを始め、様々なデバイスを取り扱っています。デバイスに悩んだらぜひこちらへ
  • cloudpack(株式会社アイレット):介護現場を想定し、ベットに寝てる人のセンシングデータをクラウドに上げ、誰がどのいった状況かを可視化するというライブデモをインフォテリアさんと共同展示。
  • ウイングアーク1st株式会社:SORACOM Funnelとの連携を発表させていただいたMotionBoardクラウドご紹介。リアルタイムデータの可視化はMotionBoard!
  • デモ展示コーナー:カメラデータから男女や表情の可視化をアロバさんと、ブースにいらっしゃった来場者のカウントをウォークインサイトさんと、ドアセンサーを利用した見守りをプリンシパルさんと、太陽光発電所の遠隔監視のインフォミクスさんと、様々なライブデモを展示させていただきました。更に、今回新たにLoRaデバイスのオープン化を発表し、SORACOMで利用可能(予定含む)なLoRaデバイスも合わせて展示しました。

自社でIoTの取り組みを考えているか何から始めていいか分からない、もう少し多くの業界のケーススタディを知りたいなどのご要望もいただきました。 SORACOMでは、5/29にIoTの様々な導入事例をご紹介する「IoT導入事例セミナー」や、IoTビジネスの構成要素の解説に加えラズパイやセンサーを用いた実践的なトレーニング「IoT 実践トレーニング(センシング編)」を6/1に開催を予定しています。

まず何かしら作ってみることから始まるIoT、ぜひ御社のIoTの一歩のきっかけになれば幸いです。

共同出展頂いたパートナー企業の皆様

  • ウイングアーク1st株式会社
  • cloudpack(運営:アイレット株式会社)
  • 株式会社アイ・オー・データ機器
  • 株式会社ウフル
  • 株式会社オプティム
  • 株式会社and One
  • 株式会社PALTEK
  • 株式会社コンテック
  • アクロクエストテクノロジー株式会社
  • ユーピーアール株式会社
  • 兼松コミュニケーションズ株式会社
  • 株式会社インフォコーパス
  • プラネックスコミュニケーションズ株式会社
  • 株式会社セゾン情報システムズ
  • 日置電機株式会社
  • 日本ユニシス株式会社

ソラコム熊崎

SORACOM Funnel の Partner Hosted Adapter で MotionBoard Cloud を試してみた

2017/5/10にリリースされたSORACOM Funnelの新機能 Partner Hosted Adapterは、もうお試しになりましたか?

発表の内容だけでは中々伝わりにくいと思い、ここでは ウィングアーク1st さんの MotionBoard Cloud へ、SORACOM Funnelを使ってデータを送信し、可視化するところまでをご紹介します!

MotionBoard Cloud

ウィングアーク1st社のBIクラウドサービスです。ブラウザベースで開発、そしてダッシュボード機能を備えているうえ、高速に動作しますのでストレスなくデータ分析ができます

MotionBoard Cloud

30日間の無償のトライアルライセンスがありますので、それを使いSORACOM Funnelとの連携を確かめていきます!

無償トライアルの申し込み

無償トライアルのフローhttp://www.wingarc.com/cloud/mbc/#flowLink より

無償トライアルの申し込みはここから行えます いくつか製品がありますが MotionBoard Cloudをお試ししたい方 を選択ください

無償ライセンスの到着

申し込み後、PDFにてMotionBoard Cloud試用開始のお知らせがPDFで届きます

MotionBoard Cloud試用開始のお知らせ

SORACOM Funnelで利用する際にポイントとなるのは テナントID です。これを忘れないようにしましょう

テナントID

設定をしていく

MotionBoard Cloudのライセンスが準備できましたら、早速設定をしていきます

今回の全体像はこんな形です

設定は以下の通り進めていきます

  1. MotionBoard Cloud
    1. リアルタイム連携(WEb API)の設定
    2. ボードの作成
  2. SORACOM コンソール
    1. 認証情報ストアの設定
    2. SORACOM Funnelの設定
    3. SORACOM Air SIMの所属グループ設定

MotionBoard Cloud / リアルタイム連携の設定

MotionBoardのリアルタイム連携機能の中に、WebAPI機能があります。SORACOM Funnel Partner Hosted Adapterは、WebAPIを利用しますので、それを有効化していきます

管理 > システム設定 > 接続/認証 > リアルタイム連携

管理>リアルタイム連携

「+」を押すと、テンプレートの新規作成になります

テンプレート作成

ダイアログは以下の通りにします

  • my_1st_realtime_datasource

テンプレート名

テンプレートの全般タブは以下の通りにします

  • WebAPI : 利用するにチェックする
  • 認証キー : 「自動生成」を押す → 生成されたキーを記録しておいてください
  • 永続化 : 利用するにチェックする
  • 保存先テーブル名 : my_1st_realtime_table
  • 実行ユーザー : 「検索」を押す → 適切な権限を持つユーザーが表示されます
  • 保存期間 : 指定するにチェックする
  • それ以外はデフォルトのまま

※設定項目数が多いのですが、漏らすと動きません。ご注意を

リアルタイム>全般

テンプレートのステータスタブを開き、新規作成を押します

リアルタイム>ステータス

ダイアログは以下の通りにします

  • ステータス名 : val0
  • MB IoT Agent : 未設定
  • データ型 : 数値

ステータス新規作成

OKを押した後、「保存」を押して完了です

MotionBoard Cloud / ボードの作成

MotionBoard Cloudの「ボード」とは、データの表示領域を指します。ここではボードを作り、そのデータソースに先ほど作ったリアルタイム連携のデータを指定します

スタートナビ から すべてを選択

スタートナビ>すべて

新規作成をクリック

新規作成

ダイアログは以下の通りにします

  • 名前 : my_1st_mbc_board
  • それ以外はデフォルトのまま

ボード名

アイテムウィザードが起動します。まずはデータソースの設定です

  • 接続先 : system datasources
  • ツリー : Realtime > StatusHistory と開き my_1st_realtime_datasource を選択
  • データソース名 : my_1st_ds

※この段階ではプレビュー画面には「該当データが存在しません」と表示されますが正常です

アイテムウィザード:データソース

この画面では「チャート」を選択し、次に行きます

アイテムウィザード:種類

データソースエディタでは、項目一覧からドラッグアンドドロップで項目を移動します

  • datetime → 行項目
  • val0 → 集計項目

アイテムウィザード:データソースエディタ

このダイアログは以下の通りにします

  • 名前を入力してください : my_1st_bar_chart
  • 棒グラフのアイコンを選択
  • それ以外はデフォルトのまま

これで my_1st_realtime_datasource をデータソースとした、棒グラフのチャートが作成されました

アイテムウィザード:アイテム名

ここからは作成したチャートを配置する設定です。クリックにて進めてください

ボード:レイアウト ボード:レイアウト

完成すると以下の通りとなります 最後に画面左下の「保存」を行い、「編集終了」をクリックして終了です

完成

SORACOM コンソール / 認証情報ストアの設定

ここからはSORACOMコンソール上の設定です 以下を用意してください

  • 「試用開始のご案内」PDF
  • MotionBoard Cloud / リアルタイム連携における下記情報
    • テンプレート名 (本ブログ内では my_1st_realtime_datasource となります)
    • 認証キー (本ブログ内では自動生成してますので、それを取得)

準備が整ったら、SORACOMコンソールのメニューから「セキュリティ」をクリック

「認証情報ストア」をクリック後、「認証情報を登録」をクリック

ダイアログは以下の通りにします

  • 認証情報ID : my_1st_mbc_cert
  • 概要 : my_1st_realtime_datasource向け
  • 種別 : WingArc 1st MotionBoard 認証情報
  • テナントID : 「試用開始のご案内」の中のテナントID
  • 認証キー : MotionBoard Cloud / リアルタイム連携設定の認証キー

登録に成功すると、以下の通り一覧に表示されます

SORACOM コンソール / SORACOM Funnelの設定

認証情報ストアの準備ができたら、SORACOM Funnelの設定に入ります

SORACOMコンソールのメニューから「SIMグループ」をクリック

「追加」を押した後のダイアログは以下の通りにします

  • グループ名 : my_1st_realtime_datasource_w_funnel

次のページでは「SORACOM Funnel設定」をクリックして開いた後、下記の通りにします

  • トグルスイッチ : ONにする
  • 転送先サービス : WingArc 1st MotionBoard
  • 転送先URL : (デフォルトのまま)
  • 認証情報 : my_1st_mbc_cert

「保存」を押すと、このグループに所属するSIMはSORACOM Funnelが使えるようになります

青枠の中には、SORACOM Funnel のエンドポイントが表示されているので、アプリケーション開発時の参考にしてください

SORACOM コンソール / SORACOM Air SIMの所属グループ設定

SIMをSORACOM Funnelが使えるグループに所属させます

SORACOMコンソールのメニューから「SIM管理」をクリック

  1. 所属させたいSIMのチェックボックスをオン
  2. 「操作」から「所属グループ変更」をクリック

その後のダイアログで、新しい所属グループを my_1st_realtime_datasource_w_funnel にしたあと、「グループ変更」をクリック

所属グループ変更に成功すると、下記の通り当該のSIMにグループ名が表示されます

curlコマンドでデータを入れてみる

さぁお楽しみの試験です 今回は SORACOM Air SIMで通信できるようにしたRaspberry Piから、curlコマンドでデータ投入してみます

1
2
3
4
5
$ curl -v -X POST -H "Content-Type: application/json" --data-raw '{"val0":78}' http://funnel.soracom.io
--snipped--
< HTTP/1.1 204 No Content
--snipped--
$ curl -X POST -H "Content-Type: application/json" --data-raw '{"val0":92}' http://funnel.soracom.io

成功していれば、下記の通りグラフが表示されています!

トラブルシュート

  • SORACOM コンソール
    • 認証情報ストアを再度確認してください
  • MotionBoard Cloud
    • リアルタイム連携の設定を再度確認してください。特に WebAPI、永続化、このあたりがキモになります
  • curl コマンド
    • -v オプションを付けて実行した際のHTTPレスポンスを確認ください。正常なら HTTP 204 No Content が返ります

まとめ

SORACOM Funnelのメリットを再度確認してみましょう デバイスの処理負担・コード実装を減らすことができ、デバイスをシンプルに保つことができる

  • HTTPSでなくHTTPで送ることができる
    • 暗号化処理をデバイスで行う必要がなくなる
    • 端末からSORACOMまではセルラー網でセキュアであるため、データの暗号化が不要だから
  • 認証のためのコードを書かなくても良い。また、処理を実行する必要もなくデバイスの処理負担が減る。しかも、認証情報をデバイスに保管せずに済む

今回は curlコマンド だけでいきなりMotionBoard Cloudにデータが表示されています。まさにメリットが100%出せている構成ですので、是非ともお試しください!

あとがき

本稿執筆にあたり、MotionBoard Cloudの使い方を聞きまくってしまいましたが、快くお応えいただいたウィングアーク1stの方々、ありがとうございました!

ソラコム 松下

新機能: SORACOM FunnelにPartner Hosted Adapterが追加

IoTデバイスのデータ収集に使うクラウドサービスとの連携をかなり簡単なものにするSORACOM Funnelに、新しいアダプタが増えました

その名も SORACOM Funnel “Partner Hosted Adapter” です

「すでにクラウドサービスを運営しているのだが、SORACOM Funnelの送信先に自社のクラウドサービスを組み入れたい」という声にお応えしました!

SORACOM Funnel全体像

SORACOM Funnel “Partner Hosted Adapter” とは

SORACOM Funnel は2016年1月のリリース以降、データ送信先としてAmazon Kinesis Streamsや、Azure Event Hubsといった計4つのクラウドサービスをサポートしてきました

今日ご紹介する “Partner Hosted Adapter” は、SORACOM Funnelの送信先として上記クラウドサービスだけでなく、他のクラウドサービスに向けて送信できる「アダプタ」と呼ばれる接続機能を提供します

仕組みの概要

SORACOMからは、連結部分となるAWS Lambdaを呼び出すようにしています

このAWS Lambdaはパートナーで運用&開発することができ、パートナーのクラウドサービスのクライアントとして稼働させることが可能です また、このAWS Lambdaは、利用する側からは見えません。そのため、利用者に対しては煩わしい操作を隠蔽化できます

連携するパートナー・クラウドサービス※

SORACOM Funnelの設定画面の “転送先サービス” で選べるようになるクラウドサービスです※

※一部は今後連携する予定のため、5/10時点で表示されないものもあります

SORACOM Funnel Partner Hosted Adapter 利用ガイド

Partner Hosted Adapterを利用するといった場合、二つのシーンがあります

  • Partner Hosted Adapterの利用者(=SORACOM Funnelの利用者)
  • Partner Hosted Adapterの開発者(=クラウドサービス運営側)

それぞれ解説していきます

Partner Hosted Adapterの “利用者”

パートナーが提供するクラウドサービスを利用する方向けです

Partner Hosted Adapterの利用者は、2つ作業をする必要があります

  1. クラウドサービスのセットアップ
  2. SORACOM Funnelの設定

それぞれ解説します

クラウドサービスのセットアップ

まず、各パートナーが提供しているクラウドサービスを利用できるように、セットアップします セットアップ方法は各パートナーが提供されているクラウドサービスの設定方法をご覧ください

2017/5/10時点で連携するクラウドサービス※の導入までの流れ

※連携予定含む (セットアップはオンラインで完結するものから数日かかるものまであります。詳しくはクラウドサービス提供者にお問合せください)

SORACOM Funnelの設定

クラウドサービスのセットアップが済みましたら、SORACOM Funnelの設定を行います とはいえ、いままでのSORACOM Funnelの設定方法と変わるところはありません

改めて解説しますと、SIMもしくはLoRaグループの設定画面の “SORACOM Funnel設定” で下記の通り設定します

  1. 転送先サービス : プルダウンから選択
  2. 転送先URL : 送信先のクラウドサービスから得てください
  3. 認証情報 : 認証情報ストアで別途設定したものを指定)
  4. 送信データ形式 : JSONが無難

以下はMotionBoard Cloudへの送信設定の例です SORACOM Funnel HPA 設定例

以上で転送が開始されます!

Partner Hosted Adapterの “開発者”

「すでにクラウドサービスを運営しているのだが、SORACOM Funnelの送信先に自社のクラウドサービスを組み入れたい」方向けです

Partner Hosted Adapterの開発を行うためには、大きく下記のような流れとなります

  1. 【貴社】SORACOM パートナースペース(SORACOMのパートナープログラム)にてSPS認定済みパートナー※となる
  2. 【貴社 / ソラコム】貴社クラウドサービスとの連携手法を調整
  3. 【貴社】AWS Lambdaの開発
  4. 【貴社 / ソラコム】提供、運用開始

まずは「SORACOM Funnel Partner Hosted Adapterの開発希望」としてお問い合わせください。当社のパートナー担当が応対いたします!

※SPS申請済パートナーではなく、認定済みパートナーである必要があります

Partner Hosted Adapter開発の技術情報

ここではPartner Hosted Adapterの技術情報を掲載しています 「AWS Lambdaの開発ってどのくらいの分量なんだろう?」「そもそも、なにを行えばいいんだろう?」といった目安にご参照ください

貴社クラウドサービスとの連携手法 調整内容

連携手法における調整では、主に下記について双方確認します

  • 貴社クラウドサービス接続に伴う認証に必要なパラメータ(SORACOM側で保管する必要のある認証情報)
  • 呼び出されるAWS Lambdaの設定(AWS IAMのrole assume等も含む)
    • AWS Lambda呼び出し時に渡されるJSON構造

これらの情報を基にソラコムでは貴社のAWS Lambdaを呼び出すように設定します

AWS Lambdaの開発 / 提供開始

調整が済めば、AWS Lambdaの開発に入ることになります

開発用I/Fとして、RESTのendpoint URLを認証キーと共に貴社にお渡しします このendpointに対してデータを送信すると、貴社のAWS Lambdaが呼び出される仕組みをご提供しますので、それを使って開発ください

双方での検証が整い次第、SORACOM上で利用できるようにします また、貴社AWS Lambdaの運用は貴社にてお願いすることになります

AWS Lambda 開発のポイント

SORACOMから貴社AWS Lambdaをinvokeする際の仕様で、特に注意するポイントは下記のとおりです

  • InvocationTypeを RequestResponse (同期) としてinvokeします
    • 貴社開発のAWS Lambdaの完了までにかかる時間が、ご利用者向けのUXに影響します
  • 引数 event の構造は、認証情報がストアされている Credentials と、データペイロードである Records をそれぞれトップとしたオブジェクトです
    • Records は配列であり、複数のデータが格納されている可能性があります

上記のことから Records で渡される配列の処理を順次処理をした場合、AWS Lambdaの完了時間が延びることになるため、実運用においてはRecords内の処理の並列化を強く推奨します

event オブジェクトの例

パートナー側のAWS Lambda実行時の event には、下記のようなオブジェクトが渡されます 実際のデータは Records[].payloads に格納されています

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
30
31
{
    "Records": [
        {
            "operatorId": "OP0000000000",
            "timestamp": 1452791551499,
            "destination":
            {
                "resourceUrl": "https://example.com/path/to/resource",
                "provider": "custom",
                "service": "service-name"
            },
            "credentialsId": "my-credentials",
            "payloads":
            {
                "message": "Hello Service Name!"
            },
            "sourceProtocol": "HTTP",
            "imsi": "440XXXXXXXXXXXX"
        }
    ],
    "Credentials":
    {
        "OP0000000000":
        {
            "my-credentials":
            {
                // service dependent format
            }
        }
    }
}

開発にまつわるFAQ

  • Q: AWS Lambdaじゃないとダメですか?Azure functionsやGoogle Cloud Functionsは嫌いですか?
    • A: 仕組みとしてはSORACOM側もAWS Lambdaを使っており、またパートナー側のAWS Lambda呼び出しの際の権限設定にIAMを使用してる関係上、AWSプラットフォーム上である必要があります。そのため、AWS Lambdaで開発ください。Azure FunctionsやGoogle Cloud Functionsも好きですよ。

あとがき

ソラコムはパートナー・エコシステムをとても大切に想っています 今回のPartner Hosted Adapterは、SORACOMのご利用者と、パートナーのクラウドサービスとの橋渡しとしてリリースしました

これからも拡充をして、パートナーのクラウドサービスとSORACOMのご利用者との接点を増やし、お客様の課題にフィットしたクラウドサービスがご紹介できたらと思っています

すでにクラウドサービスをお持ちの方は、是非とも一度ソラコムへご相談ください!

ソラコム 松下

月額0.4 USD(約45円) 低トラヒック用途向け新料金体系を5月16日より提供開始

本日5月10日、月額0.4 USD(約45円)で利用できる低トラヒック用途向け新料金体系を発表しました。5月16日から提供を開始します。 また、これまでグローバル向け Air SIM はアメリカとEUで提供していましたが、この発表に合わせて日本でも提供を開始します。

GlobalSIM

IoT が注目されている背景に、クラウド技術とデバイスの進化と低価格化があります。少ない初期投資で迅速にデータを処理できる環境が整備された一方で、移動体の位置情報のトラッキングや遠隔監視、在庫確認など極めて少量のデータしか流さない用途にもセルラー通信を安価に使えないか?というお客様のフィードバックをいただいています。

今回の新料金体系は、数MB/月程度の利用に最適化されています。

  • 基本料金 0.4$/月 (45円/月注)
  • データ通信料金 0.5$ / MB
  • グローバルSIMのテクノロジーをベースに低利用料金を実現(2G, 3Gに対応)
  • SORACOMプラットフォームをすべて利用可能

初期費用を含む料金体系は以下のとおりです。

  • 初期費用:5 USD / 枚 (送料別)
  • 基本料金:
    • データ通信開始前 0 USD / 日 (1年間まで無料)
    • データ通信開始後 0.4USD / 月
  • データ通信料金 :0.5USD / MB(利用する国と地域によらず固定)

なお、使用可能なエリアは以下のとおりです。 エリア

私個人的には、たまに使用する電子工作用の Air SIM にもいいのではないかと思っています。 5月16日からの提供を予定していますので、今しばらくお待ち下さい!

ソラコム江木

SORACOM LoRa Spaceが生まれ変わりました

共有サービスモデルの LoRa ゲートウェイの設置場所情報を公開していたサイト SORACOM LoRa Space が、本日新たなドメイン lora-space.soracom.jp とともに生まれ変わりました。 LoRa ゲートウェイやデバイスを購入された方、購入を検討されている方が気になることの1つは、果たしてどの程度の距離から通信ができるのか、というものかと思います。

新しい LoRa Space では、それぞれの共有ゲートウェイの稼働状況を確認できるほか、 LoRa デバイスをお持ちの皆様にご協力いただき、地図上の各地点からゲートウェイへの接続状況、信号強度などの情報を集め、共有してまいります。 接続ポイントの登録にご協力いただける方向けに、開発者向けサイト内にGetting Startedを用意しています。 位置情報を登録するにあたり、LoRa デバイス、Arduino のほか、GPSモジュールが必要となりますが、最近は安価なモジュールも登場してきていますので、ぜひ多くの皆様にご参加いただきたいと思います。

LoRa Space の公開にともない、Arduino library for LoRaWAN Device もバージョンアップするとともに、LoRa Space への接続ポイント登録用のスケッチを同梱しています。こちらは一般に LoRaWAN を使用してデータ送信を行う場合の参考にもなると思いますので、あわせてご参照ください。

SORACOM LoRa Space に多くの接続情報が集まるとともに、LoRa デバイスを活用して多くのサービス、ソリューションがでてくることを楽しみにしています!
ソラコムは、5/10-5/12開催の2017 Japan IT Week 春に出展しています。 LoRaWAN の活用方法をお探しの方やご相談のある方、SORACOM LoRa Space についてご興味のある方、そして、もちろんセルラーを含めた SORACOM の様々なサービスにご関心をお持ちの方、ぜひソラコムブース(西14-77)までお越しください。

ソラコム 岩崎

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ボード、ぜひトライしてみていただきたいと思います!

ソラコム 松下