SORACOM Beamを使用してSAP Cloud Platformへデータを送信


※2019年7月現在、SAP CPのNEO環境のIoTサービスは利用できなくなっています。

目的

SORACOMのサービスであるSORACOM Beamを使用して、SAP Cloud PlatformのIoTサービスへデータを送信する。

※詳細は以下のブログを参照
SORACOM Beamを使用してSAP Cloud Platformへデータを送信

手順

①SAP Cloud PlatformのIoTサービスの設定
②SORACOM Beamの設定
③Pythonファイルの作成/実行
④送信されたデータの確認

手順①SAP Cloud PlatformのIoTサービスの設定

SAP Cloud Platformにログイン。

Cloud Platform Cockpitより、「モノのインターネット」を選択
サービスが有効であることを確認し、「サービスに移動」を選択
メッセージタイプ、デバイスタイプ、デバイスを順に登録

②SORACOM Beamの設定

SORACOMの管理コンソールより、SORACOM Beamの設定
※「HTTPエントリポイント」を使用

青線箇所は任意の文字列で。

ホスト名は「iotmms(SAP CPアカウントID).hanatrial.ondemand.com」
※私のSAP CPアカウントはトライアルアカウントなので、「~trial」

パスは「/com.sap.iotservices.mms/v1/api/http/data/(デバイスID)」

これで完了。以下赤枠がエントリポイント

③Pythonファイルの作成/実行

beamscpiot.py
import time 
import json 
import datetime 
import urllib3 

#SAP CP 
#oAuth Device
oauth_credentials = (デバイスのトークン) 

#Message Type ID
message_type_id = (メッセージタイプID)

#URL
http = urllib3.PoolManager() 
headers = urllib3.util.make_headers(user_agent=None) 
headers['Authorization'] = 'Bearer ' + oauth_credentials 
headers['Content-Type'] = 'application/json;charset=utf-8' 

url = 'http://beam.soracom.io:8888/scpiot'
urllib3.disable_warnings() 


#send data
timestamp = int(time.time())
value = 'Python to SCP IoT test(SORACOM Beam)'

body = '{"mode":"sync", "messageType":"' + str(message_type_id) + '", "messages":[{"timestamp":'+ ' "' + str(timestamp) + '"'+ ', "value":'+ ' "' +  str(value) + '"'+ ' }]}' 
r = http.urlopen('POST', url, body=body, headers=headers) 

print(body) 
print(r.data) 

RaspberryPi側で「beamscpiot.py」を実行。

④送信されたデータの確認

メッセージ管理サービスコックピットよりデータの確認
「保存されたメッセージの表示」を選択

以下の名称でテーブルが作成されている
「T_IOT_(メッセージタイプID)」

送信したデータが登録されていることを確認