BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

【詳細手順書公開】iPhone内蔵センサー情報をSAP Cloud PlatformのIoTサービスを使ってストリーミングする

参照ブログ

The Easiest Way to Stream your iPhone’s Sensor Data to SAP Cloud Platform [Updated]

Special Thanks to Author  Patrick Colucci !

Step1 Internet of Things Service Setup

SAP Cloud Platformのトライアル環境の利用開始

http://cloudplatform.sap.com/try.html を開きます

S-userでログオンします。

本記事ではSユーザーを利用していますが、個人でGmail等のアドレスを元にアカウントを登録することも可能です。この場合、Pユーザー(pから始まる)がアカウントとして設定されます。

現状のSAP CPの管理体系の最上位は、「Region」です。

Regionは、Neo又はCloud Foundryベースの違いで2種類の環境が存在し、前者はSAP社のデータセンターで稼働し、後者はAWSでは既にEUとUS EASTで本稼働、AzureではUS West(CA)でベータになっていることがわかります。

ちなみにNeoという名前は、SAP NetWeaver Cloud で使われていました。出たのが2012年ですからかれこれ5年経っていますので、時の経つのは早いです。

今回は無料のトライアル環境が存在するEurope(Rot) -Trialを選択します。

s***********trialという個人のお試しアカウントが登録されていることがわかります。画面の上部に水色でEurope(Rot) – Trialが選ばれていますね、この管理画面のことを、SAP Cloud Platform Cockpitと呼びますが、画面遷移が複雑なために迷子になります。この水色のエリアの表記エリアを見ることは多いので、覚えておきましょう。 

SAP Cloud Platform Cockpit Europe(Rot) – Trial

s***********trialをクリックすると、下記の画面になり、ようやく内部のシステム情報を見ることが出来ます。ちなみに、画面上部に水色でs***********trialが表示されていますね。

 

Internet of Thingsの有効化

Servicesタブを選択します。

 

internet of Thingsを選択します。 

Enableを選択します。 

有効化された後、Go to Serviceを選択してInternet of Things サービスコックピットへ画面を遷移させます。 

メッセージ管理サービスのデプロイ

Internet Thingsサービスコックピット MMSデプロイを選択します。

アカウント設定・ユーザ設定を入力してデプロイします。 

デプロイ完了

ロール割当

SAP Cloud CockpitのApplicationタブ Java Applicationを選択した後に、

iotmmsを選択します。

iotmms – overview 

Securityタブ ロールを選択します。 

Assignを選択します。 

対象となるSユーザを入力します。 

登録完了 

Step2 Adding your iOS Device in the Internet of Things Cockpit

Internet of Thingsサービスコックピットからメッセージタイプ登録

メッセージタイプを選択します。

+ボタンを選択しメッセージタイプを新規登録します。 

項目に下記情報を入力して、作成を選択します。

  • 名前:IOS Message Type

フィールド

名前 タイプ
timestamp date
device string
gyroscopex string
gyroscopey string
gyroscopez string
accelerometerx string
accelerometery string
accelerometerz string
altitude string
longitude string
latitude string
audio string

登録完了

もし入力を間違った場合は、いったん削除して、最初から入力し直して下さい。

Internet of Thingsサービスコックピットからデバイスタイプ登録

デバイスタイプを選択します。

+ボタンを選択して、デバイスタイプを新規登録します。 

項目に下記情報を入力して作成を選択します。

情報

  • 名前:IOS Device Type

メッセージタイプ

  • メッセージタイプ:iOS Message Type
  • 方向:元のデバイス

登録完了 

Internet of Thingsサービスコックピットからデバイスの登録

デバイスを選択します。

+ボタンを選択して、デバイスを新規登録します。

項目に下記情報を入力して作成します。

情報

  • 名前:iOS Device
  • デバイスタイプ:IOS Device Type

アクセストークンが発行されるので控えておきます。 

Step3 Setup your SensorPhone app to send sensor data to SAP Cloud Platform

sensorphoneアプリの設定

項目 設定値
URL https://<host>/com.sap.iotservices.mms/<version>/api/http/data/<device id>
Mode sync
Message Type メッセージタイプのID
Countent Type application/JSON;charset=utf-8
Authorization bearer  <<デバイス登録時に発行されたトークン>>

※AuthorizationでBearer <<トークン>>のようにbearerとトークンの間にspaceが入っている必要があるので注意。

POSTでデータ送信

POSTに成功すると、下記のようなポップアップが表示され、メッセージがSAP CP側で受け取られたことを確認します。

データ確認

Internet of Things サービスコックピットのMMSコックピットを選択します。

メッセージ管理サービスコックピットの保存されたメッセージの表示を選択します。 

T_IOT<<メッセージタイプID>>のテーブルを選択します。 

sensorphoneから送信されたデータを確認します。 

(参考)APIを利用してテーブルを参照する

Sユーザとパスワードで認証情報を作成。
認証情報とテーブル情報をAPIに渡すとxml形式で帰ってくる。
下記powershellからAPIを叩いたサンプル。

 

#トライアルで紐付けたSユーザとパスワード
$user ="Sユーザ"
$pass ="パスワード"

#認証情報処理
$pair ="${user}:${pass}"
$bytes =[System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 =[System.Convert]::ToBase64String($bytes)
$basicAuthValue ="Basic $base64"
$headers = @{ Authorization = $basicAuthValue }

#APIでテーブル取得
$tableData = Invoke-RestMethod -uri "https://<<Host>>/com.sap.iotservices.mms/v1/api/http/app.svc/<<Table Name>>" -Headers $headers

※<<Host>> : iotmms<UserID>trial.hanatrial.ondemand.com
※<<TableName>> : T_IOT_~~~