3.2. センサーデータ収集の実装¶
サンプルの実装をベースにセンサーデータを収集しICEに送信する実装コードを紹介します。
詳細はAPIリファレンスや、サンプルのソースコードを参照してください。
3.2.1. ICE Coreとの接続, Device Adapterの初期化¶
ddca_devadpt_context_t *context;
ret = ddca_devadpt_context_create(&context);
if (ret != DDCA_SUCCESS) {
return -1;
}
ret = ddca_devadpt_init(context, argv[1]);
if (ret != DDCA_SUCCESS) {
return -1;
}
3.2.2. デバイスをICEに登録¶
char *device_id;
ret = ddca_devadpt_register_device(dev_profile_name, &device_id);
if (ret != DDCA_SUCCESS) {
return -1;
}
3.2.3. データの送信¶
ddca_event_t *evt;
ret = ddca_event_create(device_id, &evt);
if (ret != DDCA_SUCCESS) {
return -1;
}
ret = ddca_event_put_int_value(evt, "temperature", 20);
if (ret != DDCA_SUCCESS) {
return -1;
}
ret = ddca_devadpt_emit(evt);
if (ret != DDCA_SUCCESS) {
return -1;
}
ddca_event_destroy(evt);
3.2.4. プログラムの終了処理、シグナルのハンドリング¶
ddca_devadpt_destroy();
3.2.5. DeviceAdapterから発生したデータをCloudAdapterにデータを送信するフロー¶
exports.start = function () {
}
exports.topology = {
source: {
adapter: 'DAInboundAdapter.js',
args: 'thermometer'
},
sink:{
adapter: 'CloudOutboundAdapter.js',
options: { destination: 'app' }
}
}
exports.stop = function () {
}
V1.2.2以前は、DAInboundAdapter.jsの部分をCoAPAdapter.jsに書き換えて実行して下さい。
3.2.6. サンプルのビルドと実行方法¶
thermometer_sampleとtemp_converter_sampleのビルドと実行方法について説明します。
- thermometer_sampleの配置 samplesディレクトリから実行用のディレクトリにファイルをコピーします。
$ cd {ICE_HOME}
$ sudo cp -r samples/native/app/thermometer_sample/ native/user/
- thermometer_sampleのビルド 下記のようにmakeコマンドでビルドを行います。
$ cd {ICE_HOME}/native/user/thermometer_sample
$ sudo make
- temp_converter_sample の配置とビルドthermometer_sampleと同様に配置とビルドを行います。
- フロー定義の配置
{ICE_HOME}/user_modules/flows/SampleFlow.js
をエディタで新規作成し、下記の内容を記載して保存します。exports.start = function () { }; exports.topology = { source: { adapter: 'DAInboundAdapter.js', options: { data_type: 'thermometer' } }, flow: [ { stream: 'externalNanomsg', options: { app_name: 'temp_converter_sample' } } ], sink: { adapter: 'ConsoleLogAdapter.js' } }; exports.stop = function () { };
V1.2.2以前は、DAInboundAdapter.jsの部分をCoAPAdapter.jsに書き換えて実行して下さい。
実行と動作確認 ICE Coreを起動(または再起動)することで設定に従ってアプリケーションが起動します。
(ICE Coreのサービス/プロセスが停止している状態で)
$ cd {ICE_HOME}
$ sudo bin/start
SampleFlow.jsは発生したデータをICE Core プロセスの標準出力に出す設定になっているため、上記を起動したコンソールに温度データが表示されれば動作確認は成功です。