デバイスにコマンドを送るために、開発者はコマンドに対応する属性を知り、それらを更新するだけでよい。
IoT インテグレータは、登録プロセス (POST リクエスト) でコマンド関連の属性を次のように宣言する必要があります :
POST <idas_host>:<idas_port>/iot/devices
//Example: HTTP POST: http://130.206.80.40:5371/iot/devices
Headers: {'content-type': 'application/json’; 'X-Auth-Token' : [TOKEN]; "Fiware-Service: OpenIoT”; "Fiware-ServicePath: /"}
Payload:
{"devices": [
{ "device_id": ”[DEV_ID]",
"entity_name": ”[ENTITY_ID]",
"entity_type": "thing",
"endpoint": "http://[DEVICE_IP]:[PORT]",
"timezone": ”Europe/Madrid",
"commands": [
{ "name": ”RawCommand",
"type": "command",
"value": “[Dev_ID]@RawCommand|%s"
} ],
"attributes": [
Context Broker の NGSI エンティティのこの属性 ”RawCommand” の更新は、デバイスにコマンドを送信します。
"endpoint": "http://[DEVICE_IP]:[PORT]" の行が宣言されている場合、デバイスは同期的にその URL でコマンドをリッスンすることになっています。
エンドポイントが宣言されていない場合 (その行が存在しない場合)、デバイスはポーリング・モードで動作します。したがって、非同期の方法でコマンドを受け取ると想定されます (つまり、デバイスが積極的にコマンドをリクエストしたとき)。 ポーリング・モードでコマンドを受信するデバイスの場合、コマンドの完全な保留キューは、次の HTTP GET リクエストで受信されます :
POST <idas_host>:<idas_port>/d?k=<apikey>&i=<device_ID>
//Example: HTTP GET:
Headers: {'content-type': 'application/text’; 'X-Auth-Token' : [TOKEN]; "Fiware-Service: OpenIoT”; "Fiware-ServicePath: /"}
http://130.206.80.40:5371/iot/d?k=[APIKEY]&i=[DEV_ID]