Empress M2M
レプリケーションマニュアル
Version 1.00

株式会社 EMPRESS SOFTWARE JAPAN

Page: 1

内容
Empress M2M レプリケーション 3
1.Empress M2M レプリケーションの説明

3

2.Empress M2M レプリケーションの機能

3

３.Empress M2M レプリケーションの特長

4

４.Empress M2M レプリケーションの構成図

5４.Empress M2M レプリケーションの導入

6

５.Empress M2M レプリケーションの API

10

外部関数一覧

10

外部関数仕様13

Page: 2

Empress M2M レプリケーション
1.Empress M2M レ プ リ ケ ー シ ョ ン の 説 明
Empress のレプリケーションは Empress のテーブル同士用のレプリケーションである「Empress レ
プリケーション」と Empress のテーブルと他社製のデータベースのテーブル用のレプリケーションである「M2M レプリケーション」と 2 種類あります。Empress レプリケーションは Empress 暗号化組
込みデータベースのエンジンにより実装されていますので詳細は Empress 組込みデータベースのマニュアルを参照してください。Empress M2M レプリケーションの実装は中機器のアーキテクチャー、連携先のデータベースがオンプレミスかクラウドに設置されるのかなどにより実装方法は異なります。例
えば X86 のアーキテクチャーでオンプレミスのデータベースにデータ連携される場合、中継器に連携するデータベース用の ODBC クライアントをインストールしデータ連携します。これに対して、X86 のアーキテクチャー以外やクラウドの場合などは REST API を使用します。本書では主に REST API を用いた Empress M2M レプリケーションについて解説します。

2.Empress M2M レ プ リ ケ ー シ ョ ン の 機 能中継器内の Empress 暗号化組込みデータベースに収集されたデータをオンプレミスやクラウド上のデータベースに人の手を介さずに M2M（Machine To Machine）でレプリケーションするソリューション
です。中継器内の Empress 暗号化組込みデータベースとオンプレミスやクラウド上のデータベースのデータ連携はアトミック性を保ったままでトランザクション処理されますのでデータの重複、欠損はな
くデータの整合性を保証します。Empress M2M レプリケーションの動作は設定ファイルにより動作が制御されます。

Page: 3

３ .Empress M2M レ プ リ ケ ー シ ョ ン の 特 長
Empress M2M レプリケーションの特長は以下の通りです。
１．Empress M2M レプリケーションは高速です。
２．ANSI SQL92、ODBC、JDBC サポートします。
３．断電、断線に強いレプリケーション機能を提供します。
４．Ｍ：Ｎの（複数 Master、複数 Slave）レプリケーションをサポートします。
５．サブセットレプリケーションをサポート（テーブル単位、Where 文単位）
６．暗号化データベースと SSL 通信により、すべてのデータと通信を暗号化することが可能です。
７．オンプレミス、クラウドの Oracle、Empress、SQL Server、MySQL、PostgreSQL などのデータベースに対応しています。
８．オンプレミス、クラウドの業務システム（ERP、CRM、SCM など）に対応しています。

Page: 4

４ .Empress M2M レ プ リ ケ ー シ ョ ン の 構 成 図
センサのようにローリソースで Empress 組込みデータベースを搭載できない機器は中継器内の Data
Collect API を使用し、中継器の Empress 暗号組込みデータベースにデータ登録後、M2M レプリケー
ションで連携先のデータベースにレプリケーションします。FA 機器のように Empress 組込みデータベースを搭載できる場合は、デバイスに保全されたデータを中継器まで Empress レプリケーションを用
いて Empress 暗号組込みデータベースにデータ登録し、データ登録後、M2M レプリケーションで連携
先のデータベースにレプリケーションします。

Page: 5

４ .Empress M2M レ プ リ ケ ー シ ョ ン の 導 入Linux にインストールする手順は以下の通りです。

インストールsudo cp lib/*.so /usr/local/lib
sudo ldconfig

Makefile の編集
restrepl: REST_API.o$(CC) -o bin/restrepl REST_API.o $(LIB_PATH) $(LIBS) $(M2MLIBS) $(EMPLIBS)$(EMPODBCLIBS)
rm REST_API.oclean:
rm -f *.o bin/restrepl/ect/odbcinst.ini ファイルの修正/ect/odbcinst.ini ファイルを下記のように修正します。

[Empress Driver 10.20 (UTF8)]
Driver=/home/atmark/Empress/v10.20/installation/shlib/libempodbcbcs.so/delivery/m2m_app/run/env.sh を cat し Driver の名称が/ect/odbcinst.ini ファイルの Driver と同じ名称であることを確認してください。

Page: 6

odbcinst.ini ファイルを編集後に env.sh を実行します。

Parameter.txt ファイルの修正
インストールされたディレクトリ（例えば m2mrest_demo）内に Restrepl、Parameter.txt、
replication_sample.xml、CreateConfigDB.sh、configdb にデプロイされていることを確認したうえ
で下記のように Parameter.txt を編集してください。
設定項目

設定値

EMP_BIN_PATH$EMPRESSPATH

EMP_LICENSE_PATH$EMPRESSPATH”/config”

EMP_LICENSE_USR

empcnsv ユーザ

EMP_LICENSE_PW

Empcnsv パスワード

EMP_SERVER_URL REST Server URL

rest server url

USER_NAME REST Server user accountrest server のログイン名

USER_PW REST Server user password

rest server のパスワード

SERVICE_TOKEN REST Server project token

rest server のプロジェクトのトークン名

WAIT_TIME

rest push all の実行間隔の単位は秒です。

CreateConfigDB.sh の編集パスを以下の通りに修正します。
<full_path>configdb

例： <full_path>/m2m_app/ configdb<full_path> RepConfigDB.sql

例：<full_path>/m2m_app/sql/RepConfigDB.sql

Page: 7

replication_sample.xml の編集
replication_sample.xml は M2M Replication container の REST の操作のための設定ファイルです。
IDM2M_Server remote server
IDM2M_ServerUserName

empress データベースのユーザ名

IDM2M_ServerUserPWD

empress データベースのパスワード

IDM2M_ContainerName container

任意の Container 名を設定出来ますが、Container 名は重複できません。

IDM2M_RemoteTableName/IDM2M_LocalTa
bleName
IDM2M_RepDirection

0（0 は push を意味します）

src/REST_API.c の修正パスを以下の通り修正します。
#include "include/idm2mlib.h"#include "include/idm2m_restc.h"#define PARAMETER "Parameter.txt"// "Parameter.txt" へのパスです。

プログラムの実行
以下の手順で Empress M2M レプリケーションを実行します。
. env.sh/*env.sh を実行します*/./restrepl BUILD/* restrepl をビルドし、CreateConfigDB.sh が実行され configDB が作成されます。configDBがすでに存在する場合は作り直されます。*/./restrepl IMPT/* replication_sample.xml 内に記載されている設定情報が configDB に登録されます。*/./restrepl PUSH BIND

Page: 8

/*始めて実行する場合は./restrepl PUSH BIND を実行します。2 回目以降は./restrepl PUSH
を実行します。*/

Page: 9

５ .Empress M2M レ プ リ ケ ー シ ョ ン の API
外部関数一覧
M2M REST Client ライブラリが提供する関数です。
int IDM2M_RESTC_SUCCESS = 0

param

ユーザリクエストが成功、もしくは関数実行が成功場合のリターン値
int IDM2M_RESTC_FAIL = -1
ユーザリクエストが失敗、もしくは関数実行が失敗場合のリターン値
int IDM2M_RESTC_REQUEST_CHANGEPWD = 2
ユーザリクエストが成功、パスワード変更必要場合のリターン値
int IDM2M_RESTC_REQUEST_USER_LOCKED = -2
ユーザリクエストが成功、アカウントロックした場合のリターン値
int IDM2M_RESTC_REQUEST_TIMEOUT = -10
ユーザリクエストがタイムアウト場合のリターン値
int IDM2M_RESTC_PUSH_REQUESTSIZE_OVERFLOW = -20
ユーザリクエストが設定値を越えた場合のリターン値
int IDM2M_RESTC_CLEAN_NO = 0
ローカルデータをクリーンしない場合のリターン値
int IDM2M_RESTC_CLEAN_YES = 1
ローカルデータをクリーンする場合のリターン値
int IDM2M_RESTC_OPERATION_SUCCESS = 0;
ユーザ操作が成功場合リターン値
int IDM2M_RESTC_OPERATION_FAIL = -1;
ユーザ操作が失敗場合リターン値
int IDM2M_RESTC_OPERATION_EXECUTING = 1;
ユーザ操作が実行中場合リターン値、少々待ってもう一度確認してください。
int IDM2M_RESTC_OPERATION_UNKNOWN = -2;
ユーザ操作が存在していない場合リターン値
int IDM2M_RESTC_OPERATION_UNRECOGNIZED = -9
ユーザ操作が不明場合リターン値
char* IDM2M_RESTC_SERVERURLRESTAPI のサーバアドレスです、内部用引数です、ユーザが自由な設定できないに実装します。
char* IDM2M_RESTC_JSESSIONID
サーバでログイン状態を維持するため、使用の SessionID です、内部用引数です、ユーザが触れな
いに実装します。
M2M

RESTC

共有 API

Page: 10

IDM2M_RESTC_init
M2M RESTC 初期化

IDM2M_RESTC_end
M2M RESTC 終了
IDM2M_RESTC_skip_verfiypeer
https 接続用、接続側で証明書検証をしない
IDM2M_RESTC_init_maxJsonLength
M2M RESTC 初期化、最大 JSON 長を設定
エラー関連関数

IDM2M_RESTC_getError
エラーメッセージを取得します

M2M

RESTC

認証用 API

IDM2M_RESTC_setUserInformation
ユーザ情報を設定します
IDM2M_RESTC_setToken
プロジェクトトークンを設定します
IDM2M_RESTC_bindDevice
デバイスを登録します
IDM2M_RESTC_login
ユーザログインIDM2M_RESTC_logout
ユーザログアウト
IDM2M_RESTC_getEmpLicenseKey
ログイン成功したら、Empress のライセンスキーを取得します。
IDM2M_RESTC_getEncryptionKey
ログイン成功したら、サーバ側で発行の EmpressDB 暗号化キーを取得します。
IDM2M_RESTC_getCleanupStatus
ローカルすべてデータをクリーンするの状態を確認します。
IDM2M_RESTC_updatePassword
ユーザパスワードを更新します。
IDM2M_RESTC_getOperatingID
ログイン成功したら、サーバ側で発行の操作 ID（唯一 ID です）を取得します。毎回実行されば、新しい操作 ID を発行します。
IDM2M_RESTC_validateOperatingID
ログイン成功したら、操作結果を確認します。
optoken を使用しての関数を使用する場合のみ有効です。

M2M

RESTC

IDM2M_RESTC_REPL_getServerTimestamp

レプリケーション

サーバの現在 GMT 時間を取得します。

用 API

IDM2M_RESTC_REPL_pullUpdatedData
サーバから差分データを取得します。
IDM2M_RESTC_REPL_pushUpdatedData
ローカルの差分データをサーバに送りて同期
IDM2M_RESTC_REPL_getContainerInfo
サーバから Container 情報を取得します。(まだ実装していません)

Page: 11

IDM2M_RESTC_REPL_uploadConfigToServer
サーバにレプリケーション情報を一括登録します。(まだ実装していません)
IDM2M_RESTC_REPL_cleanConfigFromServer
サーバのレプリケーション情報を全部クリーンします。(まだ実装していません)
M2M

RESTC

RDBC 用 API

IDM2M_RESTC_RDBC_execQuery
サーバの DB でクエリーを実行します。
IDM2M_RESTC_RDBC_batchUpload
サーバの DB で SQL バッチを実行します。

ファームウェア用

IDM2M_RESTC_getFirmwareVersion

API

サーバからファームウェアのバージョン番号を取得します。(まだ実装していません)
IDM2M_RESTC_downloadFirmware
サーバからファームウェアをダウンロードします。(まだ実装していません)

ファイル管理用

IDM2M_RESTC_FILE_getFolderInfo

API

サーバからフォルダツリーを取得します
IDM2M_RESTC_FILE_createFolder
サーバからフォルダを作成します
IDM2M_RESTC_FILE_deleteFolder
サーバからフォルダを削除します
IDM2M_RESTC_FILE_upload
サーバからファイルをアップロードします
IDM2M_RESTC_FILE_download
サーバからファイルをダウンロードします
IDM2M_RESTC_FILE_deleteFile
サーバからファイルを削除します
IDM2M_RESTC_FILE_getFileLines
サーバからファイルの行データを取得します

IoTHub クライ

IDM2M_RESTC_IoTHub_getConnectionInfo

アント用 API

IoTHub に関する接続情報を取得する
IDM2M_RESTC_IoTHub_registerDevice
IoTHub に関するデバイス情報を登録します
IDM2M_RESTC_IoTHub_editDeviceIp
IoTHub に関するデバイス IP を修正する
IDM2M_RESTC_IoTHub_getDeviceInfo
IoTHub に関するデバイス情報を取得する

デバイス死活監

IDM2M_RESTC_devmonitor_updateStatus

視用 API

デバイスの状態を更新する
IDM2M_RESTC_devmonitor_getInstruction
サーバから指示を確認する
IDM2M_RESTC_devmonitor_getCheckInterval
デバイスの監視時間間隔を取得する

Page: 12

ファームウェア更IDM2M_RESTC_firmware_getList

新用 API

ファームウェア一覧を取得
IDM2M_RESTC_firmware_getLastVersion
指定ファームウェアの最新のバージョン情報を取得
IDM2M_RESTC_firmware_getFmwFiles
指定ファームウェアのファイル情報を取得
IDM2M_RESTC_firmware_downloadFileByName
ファームウェアの指定ファイル(by name)をダウンロード
IDM2M_RESTC_firmware_downloadFileByFileId
ファームウェアの指定ファイル(by file if)をダウンロード
IDM2M_RESTC_firmware_downloadFileByUniqueId
ファームウェアの指定ファイル(by unique id)をダウンロード
IDM2M_RESTC_firmware_downloadFileCheck_md5
ダウンロードしたファイルの MD5 ハッシュ値チェック
IDM2M_RESTC_firmware_sendDownloadResult
ファームウェアファイルのダウンロード結果をサーバに報告

外部関数仕様M2M RESTC 共有関数
HIDM2M_RESTC IDM2M_RESTC_init (char* serverUrl,
int requestTimeout)機能M2M RESTC 初期化します引数

serverUrl：サーバのアドレス
requestTimeout：タイムアウト時間（単位：秒）

戻 り 値

M2M RESTC ハンドル異常の場合には、NULL

異

常

備

考

注意事項
関連関数

int IDM2M_RESTC_end(HIDM2M_RESTC hIDM2M_RESTC)機

能Page: 13

M2M RESTC 終了します

引

数

戻 り 値

hIDM2M_RESTC：M2M RESTC ハンドル
IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

M2M RESTC ハンドルが解放されます

注意事項
関連関数

HIDM2M_RESTC IDM2M_RESTC_skip_verfiypeer(HIDM2M_RESTC
hIDM2M_RESTC)機

能https 接続用、接続側で証明書検証をしない

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値
異

常

備

考

M2M RESTC ハンドル

注意事項
関連関数

HIDM2M_RESTC IDM2M_RESTC_init_maxJsonLength (char* serverUrl,
unsigned int maxJsonLength,
int requestTimeout)機能M2M RESTC 初期化、最大 JSON 長を設定。

引数

serverUrl：サーバーのアドレス
maxJsonLength：最大 JSON 長
requestTimeout：タイムアウト時間（単位：秒）

戻 り 値

M2M RESTC ハンドル異常の場合には、NULL

異

常

備

考

注意事項
関連関数

Page: 14

M2M RESTC エラー関数
const char* IDM2M_RESTC_getError(HIDM2M_RESTC hIDM2M_RESTC)機

能

エラーメッセージを取得します

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値
異

常

備

考

注意事項

エラーメッセージ
エラーなしの場合は、Null を戻ります。
1.すべて関数実行失敗されば、この関数をコールして、エラーメッセージを取得できます
2.この関数は最後実行した関数のエラーメッセージしか返しません
3.関数成功されば、エラーメッセージは NULL です

関連関数

M2M RESTC 認証関数
int IDM2M_RESTC_setUserInformation (HIDM2M_RESTC hIDM2M_RESTC,char* userName,char* userPassword)機

能ユーザ情報を設定します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
userName：ログイン用ユーザ名
userPassword：ログイン用ユーザパスワード

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

注意事項

二回目実行が発生されば、IDM2M_RESTC_JSESSIONID をクリーンします

関連関数

IDM2M_RESTC_Login

int IDM2M_RESTC_setToken (HIDM2M_RESTC hIDM2M_RESTC,char* token)機

能Page: 15

プロジェクトトークンを設定します。

引

数

hIDM2M_RESTC：M2M RESTC ハンドル
token：プロジェクトトークン

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

注意事項
関連関数

IDM2M_RESTC_Login

int IDM2M_RESTC_setProductID (HIDM2M_RESTC hIDM2M_RESTC,char* productID)機

能プロダクト ID を設定します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
productID：プロダクト ID

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

プロダクト ID は数字、英字で組み合わせた 12 バイトの文字列。例：
ABC001abc999

注意事項

プロダクト ID の長さが 12 でない場合は、>12：前頭の 12 文字を使用、<12：後に「0」で補足

関連関数

IDM2M_RESTC_Login、IDM2M_RESTC_bindDevice

int IDM2M_RESTC_bindDevice (HIDM2M_RESTC hIDM2M_RESTC)機

能デバイスを登録します。

引

数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

注意事項
関連関数

Page: 16

int IDM2M_RESTC_login (HIDM2M_RESTC hIDM2M_RESTC)機

能

ユーザログイン。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_USER_LOCKED: Locked
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

[IPAddress]/device/auth/login を参照します
ログイン成功されば、ハンドル中のユーザ名とユーザパスワードを”**********”に書き込みします。

注意事項

Locked が発生されば、IDM2M_RESTC_JSESSIONID をクリーンします

関連関数

IDM2M_RESTC_setUserInformation
IDM2M_RESTC_logout

int IDM2M_RESTC_updatePassword (HIDM2M_RESTC hIDM2M_RESTC,char* oldPassword,
char* newPassword)機

能ユーザパスワードを更新。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_USER_LOCKED : Locked
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

[IPAddress]/device/auth/upd_pwd を参照します

注意事項
関連関数

IDM2M_RESTC_login

int IDM2M_RESTC_logout (HIDM2M_RESTC hIDM2M_RESTC)機

能

ユーザログアウト, IDM2M_RESTC_JSESSIONID をクリーンします引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

Page: 17

異

常

備

考

[IPAddress]/device/auth/logout を参照します

注意事項
関連関数

IDM2M_RESTC_login

char* IDM2M_RESTC_getEmpLicenseKey (HIDM2M_RESTC hIDM2M_RESTC)機

能ログイン成功したら、ライセンスキーを取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

Empress のライセンスキー

異

常

未ログイン

備

考

[IPAddress]/device/auth/login を参照します

注意事項

ログイン時に、ハンドルに登録して、ログイン後にハンドルから参照します。

関連関数

IDM2M_RESTC_login

char* IDM2M_RESTC_getEncryptionKey (HIDM2M_RESTC hIDM2M_RESTC)機

能ログイン成功したら、サーバ側で発行の EmpressDB 暗号化キーを取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

暗号化キー

異

常

未ログイン

備

考

[IPAddress]/device/auth/login を参照します

注意事項

ログイン時に、ハンドルに登録して、ログイン後にハンドルから参照します。

関連関数

IDM2M_RESTC_login

int IDM2M_RESTC_getCleanupStatus (HIDM2M_RESTC hIDM2M_RESTC)機能

ローカルすべてデータをクリーンするの状態を確認します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

IDM2M_RESTC_CLEAN_NO: No clean
IDM2M_RESTC_CLEAN_YES: clean local data
IDM2M_RESTC_FAIL:失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

Page: 18異常タイムアウト
未ログイン
アカウントロック備考[IPAddress]/device/auth/cleanup_status を参照します

注意事項
関連関数

IDM2M_RESTC_Loginchar* IDM2M_RESTC_getOperatingID (HIDM2M_RESTC hIDM2M_RESTC)機

能ログイン成功したら、サーバ側で発行の操作 ID（唯一 ID です）を取得します。毎回実行されば、新しい操作 ID を発行します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

操作 ID

異

タイムアウト常未ログイン
アカウントロック備考[IPAddress]/device/auth/op_token を参照します

注意事項
関連関数

IDM2M_RESTC_login

int IDM2M_RESTC_validateOperatingID (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID)機

能ログイン成功したら、操作結果を確認します。
optoken を使用しての関数を使用する場合のみ有効です。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID

戻 り 値

IDM2M_RESTC_OPERATION_SUCCESS :成功
IDM2M_RESTC_OPERATION_EXECUTING :実行中
IDM2M_RESTC_OPERATION_FAIL:失敗
IDM2M_RESTC_OPERATION_UNKNOWN:操作 ID 存在しない
IDM2M_RESTC_OPERATION_UNRECOGNIZED:不明の原因失敗しました。
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

Page: 19

異

常

備

考

[IPAddress]/device/auth/op_ret を参照します

注意事項
関連関数

IDM2M_RESTC_login

M2M RESTC レプリケーション用 API

char* IDM2M_RESTC_REPL_getServerTimestamp (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID)機

能サーバの現在 GMT 時間を取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

サーバの現在時間

異失敗

常タイムアウト備考[IPAddress]/device/replication/db/current_timestamp を参照します

注意事項
関連関数

IDM2M_RESTC_login
IDM2M_RESTC_getOperatingID

char* IDM2M_RESTC_REPL_pullUpdatedData (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* containerInfo,char* localCurrentTimestamp,
int maxRecord)機

能サーバから差分データを取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID
containerInfo：container 情報、複数可能

Page: 20

例：{container:[{"container_name":"ci1","db_id":"serverdb1","server_table_name":"tab1","server_field_timestamp":"EMPRESS_TIMESTAMP","server_field_del":"EMPRESS_LOGIC_DELETED","server_field_ownerlabel":"EMPRESS_OWNER_LABEL","local_db_id":"localdb1","local_table_name":"tab1","rep_last_time":"20150215120628123456","rep_direction":0,"subset":"groupid>10"},{次の container 情報},...]}
localCurrentTimestamp：ローカルの GMT タイムスタンプです、DB で
gmt_now()実行して取得します
maxRecord：取得するレコード概数です。
戻 り 値

サーバの差分データ,json 文字列

異

失敗

常

タイムアウト備考[IPAddress]/device/replication/diffdata を参照します

注意事項
関連関数

IDM2M_RESTC_login
IDM2M_RESTC_getOperatingID

int IDM2M_RESTC_REPL_pushUpdatedData(
HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* containerInfo,char* diffdata)機

能ローカルの差分データをサーバに送りて同期します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID
containerInfo：container 情報
例：{"container_name":"ex","localDBPath":"","localDBEncryptKey":"","localDBCipher":"","localDBBrand":1,"localTableName":"test","remoteDBPath":"/opt/testdb","remoteDBEncryptKey":"","remoteDBCipher":"","remoteDBBrand":1,"remoteTableName":"test",

Page: 21

"remoteFieldTimestamp":"EMPRESS_TIMESTAMP","remoteFieldDel":"EMPRESS_LOGIC_DELETED","LastRepTime":"20170101010101000000000","repDirection":1,"subset":""}
diffdata：ローカルの差分データ,json 文字列
戻 り 値

IDM2M_RESTC_SUCCESS:成功
IDM2M_RESTC_FAIL:失敗異常

タイムアウト備考[IPAddress]/device/replication/sync を参照します

注意事項
関連関数

IDM2M_RESTC_login
IDM2M_RESTC_getOperatingID

M2M RESTC RDBC 用 API

char* IDM2M_RESTC_RDBC_execQuery (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* querySQL)機

能サーバの DB でクエリーを実行します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
querySQL：クエリーSQL、ex：{"sql":["select * from tab1","select * fromtab2",…]}。

戻 り 値

クエリーの実行結果
attrs：列名
rows：対応するデータ
ex"attrs": [{"id":”int”},{"data1":”char”}, {"data2":”text”},…],"rows" :[ {1,"xxx","xbox"},{2,”yyy”,”ps4”},…],

異

常

成功
失敗

Page: 22

タイムアウト
備考[IPAddress]/device/db/sql/query を参照します

注意事項
関連関数

IDM2M_RESTC_Login

int IDM2M_RESTC_RDBC_batchUpload(
HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* batch,
int transactionFlag,
int continueFlag)機

能サーバの DB にレコードを更新します。

引

数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
tableName：テーブル名前。
batch：サーバに送るバッチ文字列、JSON。
ex: batch:[{"op":"insert","table_name":"t1","data":{"attrs": [***,...],"rows" :[{1,....},{2,....}]}},{"op":"delete","table_name":"t2","query":"id=2","data":null},{"op":"update","table_name":"t2","query":"id=2","data":{"attrs": [***,...],"rows" :[{1,....},{2,....}]}}],

Page: 23

transactionFlag：トランザクション起動フラグ,1 は起動します、0 は起動しません。
continueFlag：トランザクション起動していない時に、エラー発生されば、続けて実行フラグ、1 は続けます、0 は続けません
戻 り 値

IDM2M_RESTC_SUCCESS:成功
IDM2M_RESTC_FAIL:失敗

異

常

備

考

[IPAddress]/device/db/batch を参照します

注意事項
関連関数

IDM2M_RESTC_login

M2M RESTC ファイル管理用 API

char* IDM2M_RESTC_FILE_getFolderInfo (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* folderPath)機

能サーバからフォルダツリーを取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
folderPath：フォルダの URI

戻 り 値

フォルダ以下のファイルやフォルダ情報のツリー形式,json 文字列

異

失敗

常

タイムアウト備考[IPAddress]/device/filectl/dir/info を参照します

注意事項
関連関数

IDM2M_RESTC_getOperatingID

int IDM2M_RESTC_FILE_createFolder (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,

Page: 24char* folderPath,char* folderName)機

能サーバからフォルダを作成します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
folderPath：フォルダの URI
folderName：作成するフォルダの名前

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

[IPAddress]/device/filectl/dir/create を参照します

注意事項
関連関数

IDM2M_RESTC_getOperatingID

int IDM2M_RESTC_FILE_deleteFolder (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* folderPath)機

能サーバからフォルダを削除します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
folderPath：フォルダの URI

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

[IPAddress]/device/filectl/dir/delete を参照します

注意事項
関連関数

IDM2M_RESTC_getOperatingID

int IDM2M_RESTC_FILE_upload (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* filePath,

Page: 25

char* serverFileName,char* serverFolderPath)機

能サーバからファイルをアップロードします。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
filePath：ローカルのファイルパス
serverFileName：ファイルの名前
serverFolderPath：フォルダの URI

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

[IPAddress]/device/filectl/file/upload を参照します

注意事項
関連関数

IDM2M_RESTC_getOperatingID

int IDM2M_RESTC_FILE_download (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* downloadPath,char* serverFileName,char* serverFolderPath)機

能サーバからファイルをダウンロードします。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
downloadPath：ダウンロードしたファイルのパス
serverFileName：ファイルの名前
serverFolderPath：フォルダの URI

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

[IPAddress]/device/filectl/file/download を参照します

注意事項
関連関数

Page: 26

IDM2M_RESTC_getOperatingIDint IDM2M_RESTC_FILE_deleteFile (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* filePath)機

能サーバからファイルを削除します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
filePath：ファイルの URI

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

[IPAddress]/device/filectl/file/delete を参照します

注意事項
関連関数

IDM2M_RESTC_getOperatingID

char* IDM2M_RESTC_FILE_getFileLines (HIDM2M_RESTC hIDM2M_RESTC,char* operatingID,
char* filePath,char* lineSeparator,
int startPos,
int lineCount)機

能サーバからファイルの行データを取得します。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
operatingID：操作 ID。
filePath：ファイルの URI
lineSeparator：行のセパレータ
startPos：行の開始位置
lineCount：取得する行数

戻 り 値

ファイルデータの行情報,json 文字列

異

失敗

常

タイムアウト
備考

注意事項

Page: 27

[IPAddress]/device/filectl/file/lines を参照します

関連関数

IDM2M_RESTC_getOperatingID

M2M RESTC IoTHub クライアント用 API

char **IDM2M_RESTC_IoTHub_getConnectionInfo(
HIDM2M_RESTC hIDM2M_RESTC,char* IoTHubName)機

能IoTHub に関する接続情報を取得する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
IoTHubName：IoTHub 名。

戻 り 値

六つの要素を持つ配列‘status’ 、’pk’、’sk’ 、’ device_id’、’connection’、’hostname’

異

常

失敗
タイムアウト備考[IPAddress]/device/iothub/conninfo を参照します

注意事項
関連関数

int IDM2M_RESTC_IoTHub_registerDevice(
HIDM2M_RESTC hIDM2M_RESTC,char* authToken,
char* deviceId,
char* deviceIp)
機

能IoTHub に関するデバイス情報を登録します。

引

数

hIDM2M_RESTC：M2M RESTC ハンドル
authToken：認証トークン。
deviceId：デバイス ID
deviceIp：デバイス IP

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異常Page: 28

備

考

[IPAddress]/device/iothub/device/register を参照します

注意事項
関連関数

int IDM2M_RESTC_IoTHub_editDeviceIp(
HIDM2M_RESTC hIDM2M_RESTC,char* authToken,
char* deviceId,
char* newDeviceIp)
機

能IoTHub に関するデバイス IP を修正する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
authToken：認証トークン。
deviceId：デバイス ID
newDeviceIp：新しいデバイス IP

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

[IPAddress]/device/iothub/ip/edit を参照します

注意事項
関連関数

char **IDM2M_RESTC_IoTHub_getDeviceInfo(
HIDM2M_RESTC hIDM2M_RESTC,char* authToken,
char* deviceId,
char* deviceIp)
機

能IoTHub に関するデバイス情報を取得する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
authToken：認証トークン。
deviceId：デバイス ID
deviceIp：デバイス IP

戻 り 値

三つの要素を持つ配列‘status’、‘deviceid、’deviceip’

Page: 29

異常失敗
タイムアウト備考[IPAddress]/device/iothub/device/info を参照します

注意事項
関連関数

M2M RESTC デバイス(DTC)死活監視クライアント用 API

int IDM2M_RESTC_devmonitor_updateStatus (HIDM2M_RESTC hIDM2M_RESTC,int status)
機

能デバイスの状況を更新する。

引数

hIDM2M_RESTC：M2M RESTC ハンドルstatus：デバイスの状況

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

Status の値は下記の通り：-1:error;
0:dead;3:shutdown;

1:live;4:cleardata

2:reboot;

5:in update[IPAddress]/device/devmonitor/updstatus を参照
注意事項
関連関数
int IDM2M_RESTC_devmonitor_getInstruction (HIDM2M_RESTC hIDM2M_RESTC,int *cmd)
機

能Page: 30サーバから指示を確認する。

引

数

hIDM2M_RESTC：M2M RESTC ハンドル
cmd：サーバからの指示

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

cmd の値は下記の通り：
0 : do nothing
1：reboot
2：shutdown
3：cleardata[IPAddress]/device/devmonitor/getcmd を参照

注意事項
関連関数

int IDM2M_RESTC_devmonitor_getCheckInterval (HIDM2M_RESTC hIDM2M_RESTC,int *chkintsec)
機能

死活監視の時間間隔を確認する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
chkintsec：確認間隔時間(秒)戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗
IDM2M_RESTC_REQUEST_TIMEOUT:タイムアウト

異

常

備

考

注意事項
関連関数

Page: 31

[IPAddress]/device/devmonitor/getfreq を参照

M2M RESTC ファームウェア更新クライアント用 API
char **IDM2M_RESTC_firmware_getList (HIDM2M_RESTC hIDM2M_RESTC)機

能ファームウェア一覧を取得する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

戻 り 値

成功：ファームウェア名(文字列)の配列
失敗：NULL

異

常

備

考

戻り値の例：[“fmwname1”, “fmwname2”, …, “fmwnamen”]

注意事項
関連関数

int IDM2M_RESTC_firmware_getLastVersion (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int *version,char *releasedate)機

能指定ファームウェアの最新のバージョン情報を取得する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアの最新バージョン [OUTPUT]
releasedate：リリース時間 [OUTPUT]

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

ファームウェアのバージョン(version)は数字(1, 10, 999 等)、
リリース時間(releasedate)は年月日時分の文字列(“201705051234”等)

注意事項
関連関数

Page: 32

IDM2M_RESTC_firmware_getList

char **IDM2M_RESTC_firmware_getFmwFiles (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int version,char *path)機

能ファームウェアのファイル情報を取得する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアのバージョン
path：ファームウェアのサーバ側のパス（NULL で固定）

戻 り 値

成功：ファームウェアのファイル情報一覧(文字列)の配列
失敗：NULL

異

常

備

考

戻り値の例：[“name:fnm1,fileid:1,size:10”, “name:fnm2,fileid:25,size:400”, …]

注意事項
関連関数

IDM2M_RESTC_getError

int IDM2M_RESTC_firmware_downloadFileByName (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int version,char *path,char *filename)機

能ファームウェアの指定ファイル(by name)をダウンロードする。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアのバージョン
path：ファームウェアのサーバ側のパス（NULL で固定）
filename：ダウンロードするファイル名

戻 り 値

Page: 33

IDM2M_RESTC_SUCCESS: 成功

IDM2M_RESTC_FAIL: 失敗
異常

失敗した時に下記のエラーメッセージを DM2M_RESTC_getError で取得できる
１．「The file could not be downloaded.」
２．「A component of the path does not exist.」

備

考

注意事項

Path を NULL で設定した時に、サーバのディフォルトパスからファームウェアのファイルをダウンロードする

関連関数

IDM2M_RESTC_getError

int IDM2M_RESTC_firmware_downloadFileByFileId (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int version,char *path,char *fileid)機

能ファームウェアの指定ファイル(by file id)をダウンロードする。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアのバージョン
path：ファームウェアのサーバ側のパス（NULL で固定）
fileid：ダウンロードするファイルの FileID

戻 り 値

IDM2M_RESTC_SUCCESS: 成功 、IDM2M_RESTC_FAIL: 失敗

異

失敗した時に下記のエラーメッセージを DM2M_RESTC_getError で取得できる

常１．「The file could not be downloaded.」
２．「A component of the path does not exist.」
備

考

注意事項

Path を NULL で設定した時に、サーバのディフォルトパスからファームウェアのファイルをダウンロードする

関連関数

IDM2M_RESTC_firmware_getFmwFiles 、IDM2M_RESTC_getError

int IDM2M_RESTC_firmware_downloadFileByUniqueId (HIDM2M_RESTC hIDM2M_RESTC,

Page: 34

char *fmwname,int version,char *path,char *uniqueid)機

能ファームウェアの指定ファイル(by unique id)をダウンロードする。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアのバージョン
path：ファームウェアのサーバ側のパス（NULL で固定）
uniqueid：ダウンロードするファイルの FileID

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異常

失敗した時に下記のエラーメッセージを DM2M_RESTC_getError で取得できる
１．「The file could not be downloaded.」
２．「A component of the path does not exist.」

備

考

注意事項

Path を NULL で設定した時に、サーバのディフォルトパスからファームウェアのファイルをダウンロードする

関連関数

IDM2M_RESTC_firmware_getFmwFiles 、IDM2M_RESTC_getError

int IDM2M_RESTC_firmware_downloadFileCheck_md5 (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int version,char *path,char *filename,char *md5sum)機

能ダウンロードしたファイルの MD5 ハッシュ値チェック

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアのバージョン
path：ファームウェアのサーバ側のパス（NULL で固定）
filename：チェックするファイル名
md5sum：ファイルの MD5 ハッシュ値

戻 り 値

Page: 35

IDM2M_RESTC_SUCCESS: 成功

IDM2M_RESTC_FAIL: 失敗
異

常

備

考

注意事項

Path を NULL で設定した時に、サーバのディフォルトパスからファームウェアのファイルをダウンロードする

関連関数

int IDM2M_RESTC_firmware_sendDownloadResult (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int version,
int result)機

能ファームウェアファイルのダウンロード結果をサーバに報告する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
version：ファームウェアの最新バージョン
result：ダウンロード結果。

戻 り 値

IDM2M_RESTC_SUCCESS: 成功
IDM2M_RESTC_FAIL: 失敗

異

常

備

考

ダウンロード結果は成功＝1、失敗＝0
指定ファームウェアの全てファイルのダウンロード結果を纏めてサーバに報告する。

注意事項
関連関数

int IDM2M_RESTC_firmware_getUpdatePermission (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int preversion,
int updversion)機

能ファームウェアの更新可否をサーバに確認する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル

Page: 36

fmwname：ファームウェア名
preversion：ファームウェアの更新前のバージョン
updversion：ファームウェアの更新後のバージョン
戻 り 値

IDM2M_RESTC_SUCCESS: 成功 （更新可）
IDM2M_RESTC_FAIL: 失敗 （更新不可）

異

常

備

考

注意事項
関連関数

int IDM2M_RESTC_firmware_ sendUpdateResult (HIDM2M_RESTC hIDM2M_RESTC,char *fmwname,int preversion,
int updversion,
int result)機

能ファームウェアの更新結果をサーバに報告する。

引数

hIDM2M_RESTC：M2M RESTC ハンドル
fmwname：ファームウェア名
preversion：ファームウェアの更新前のバージョン
updversion：ファームウェアの更新後のバージョン
result：更新の結果：成功＝1、失敗＝0

戻 り 値

IDM2M_RESTC_SUCCESS: 成功 （更新可）
IDM2M_RESTC_FAIL: 失敗 （更新不可）

異

常

備

考

注意事項
関連関数

Page: 37