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

この記事を書いたメンバー:

SAITO Keita

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 -Uri $url -ContentType $ContentType -inFile .\PostiOSMessageType.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につなげられますね。

カテゴリー

この記事を書いたメンバー

SAPシステムや基幹システムのクラウド移行・構築・保守、
DXに関して
お気軽にご相談ください

03-6260-6240 (受付時間 平日9:30〜18:00)