BeeX Tech blog

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

SAP Cloud Platform : PowerShellを使ってMessage Management Service APIのPOSTとGET


本記事は、下記のデモ作成時に作成されたテーブルを例にしています。

SAP Cloud Platform を触りたい貴方へ、全部無償でiPhoneを使ったIoTストリーミングデモ作成

「デモ動きましたか?」
PaaSならではの動作、少しは理解いただけたかと思います。手順書の最後にデモで作成されたテーブル参照のPowershellを参考情報としてつけておりましたが、デモ自体は手順書通りに設定するだけなので、ちょっと面白くないでよね。
今回は、内部で使われているMessage Management APIを外から叩いてみましょう。
SAP CPのIoTサービスのドキュメントは下記リンクを参照してください。Message Management Service APIのところに色々と記載あります。

Message Management Service API

POST


sample
下記のようにトークン(apikey)とdeviceID。
jsonファイルにmessageTypeIDとmessageTypeの内容を記載してapiを叩くとPostできます。

urlは
https://<<Host>>/com.sap.iotservices.mms/v1/api/http/data/<<DeviceID>>
※<<Host>> : iotmms<UserID>trial.hanatrial.ondemand.com


$apikey = "<<トークン>>"
$headers = @{"Authorization"="Bearer"+ $apikey}
$url="https://<< Host >>/com.sap.iotservices.mms/v1/api/http/data/<<デバイスID>>"
$ContentType="application/json;charset=utf-8"
Invoke-RestMethod-url $url-ContentType-inFile.¥PostOSMessageType.json-headers $headers-Method Post

※<<Host>> : iotmms<UserID>trial.hanatrial.ondemand.com
PostiOSMessageType.jsonの中身

{
 "mode":"sync",
 "messageType":"<<MessageTypeID>>",
 "messages":[{
 "accelerometerx" : -0.3770751906558871,
 "audio" : 0.09188157,
 "gyroscopez" : 1.544760227203369,
 "timestamp" : 1494563020,
 "longitude" : 139.7731828210429,
 "latitude" : 35.68286075814957,
 "gyroscopey" : -18.41705703735352,
 "accelerometerz" : 0.1894988976418972,
 "accelerometery" : -0.416412353515625,
 "altitude" : 26.9791316986084,
 "device" : "PostTestDevice",
 "gyroscopex" : 8.429008483886719
 }]
}


GET

下記のようにSユーザとパスワードで認証を行いapiにクエリを投げるとxml形式でデータの取得ができます。

$user = "Sユーザ"
$pass = "パスワード" #認証情報処理 
$pair = "${user}:${pass}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) 
$base64 = [System.Convert]::ToBase64String($bytes)
$basicAuthValue = "Basic $base64" $headers = @{ Authorization = $basicAuthValue }
$url = "https://<<Host>>/com.sap.iotservices.mms/v1/api/http/app.svc/<<TableName>>"
$query = "?`$top=2"
#APIでテーブル取得
$getData = Invoke-RestMethod -uri "$url$query" -Headers $headers

※<<Host>> : iotmms<UserID>trial.hanatrial.ondemand.com
※<<TableName>> : T_IOT_~~
今回は誰でも使えるPowershellベースの説明でしたが、ここまでわかってしまえばSensorPhoneのような専用アプリがなくても、SAP CPにつなげられますね。