このプロジェクトは、OrangeLora®*ネットワークと、Orion Context BrokerおよびFiware Ecosystemの他のコンポーネントによって使用されるOMA NGSIV1プロトコルとの間の橋渡しです。
このIoTエージェントは、たとえばスプリングブートアプリケーションで使用できるライブラリです。
このエージェントは、次のことを許可します
このライブラリは、LiveObjects®プラットフォーム(https://liveobjects.orange-business.com/#/liveObjects)を使用してLORA®*ペイロードを管理しています。
NGSI V1の実装は、Orange-Opensource/FIWare-NGSI-APIライブラリによって提供されます。
これは、LiveObject®プラットフォームを使用してLORA®*デバイスペイロードを管理するIoTエージェントのグローバルアーキテクチャです。
建築
Spring Boot依存関係とライブラリを使用してMavenプロジェクトを作成します。
< dependency >
< groupId >com.orange.fiware</ groupId >
< artifactId >openlpwa-iotagent</ artifactId >
< version >X.Y.Z</ version >
</ dependency >ここで、 XYZは使用するライブラリのバージョンです(gitタグを確認)。
追加のアプリケーション設定を変更できます。
src/main/resources/application.properties 。これは、アプリケーションプロパティのリストです。
| 名前 | 説明 | デフォルト値 |
|---|---|---|
| ContextBroker.Localurl | このインスタンスへのパブリックURL | http:// localhost:8081 |
| contextbroker.remoteurl | リモートブローカー(Orion)へのURL | http:// localhost:8082 |
| contextbroker.remotefiwareservice | リモートブローカーサービス名 | |
| ContextBroker.RemoteFiWareServicePath | リモートブローカーサービスパス | |
| ContextBroker.RemoteAuthToken | セキュリティで保護されたリモートブローカー用のOauthトークン | |
| ContextBroker.RemoteAuthTokenuri | URIは、認証トークンを取得するために使用されていました | |
| contextbroker.remoteclientId | リモートコンテキストブローカークライアントID | |
| contextbroker.remoteclientsecret | リモートコンテキストブローカークライアントシークレット | |
| ContextBroker.RemoteUserLogin | リモートコンテキストブローカーユーザーログイン | |
| ContextBroker.RemoteUserPassWord | リモートコンテキストブローカーユーザーパスワード | |
| openlpwaprovider.resturl | LiveObject®** API URL | https://lpwa.liveobjects.orange-business.com |
| openlpwaprovider.apikey | LiveObject®** APIキー | |
| openlpwaprovider.mqtturi | LiveObjects®** MQTTブローカーURI | tcp://liveobjects.orange-business.com:1883 |
| openlpwaprovider.mqttclientId | LiveObjects®** MQTTブローカークライアント識別子 | fiware-oitagent-client |
エージェントを使用してLORA®*デバイスを使用するには、次の手順に従ってください。
エージェントの使用を開始する前に、LPWA LiveObjects®ポータル(https://lpwa.liveobjects.orange-business.com)にデバイスを登録する必要があります。デバイスが正しく登録され、アクティブな場合は、ウェブサイトに今後のペイロードが表示されます。
ライブオブジェクトによって収集されたデータは、メッセージキュー(FIFO)にルーティングできます。ルーティングルールの作成は、3つのステップで行われます。
FIFOを作成し、LiveObjects®ポータル(https://lpwa.liveobjects.orange-business.com)でルーティングルールを定義できます。
LiveObjects®Platformは、LORA®* 16進ペイロードを管理しています。プラットフォーム上のペイロードをデコードすることはできないため、エージェントを使用するときはこのプロセスを行う必要があります。
このジョブを行うには、2つの次のメソッドを使用してOpenLpwaNgsiConverterインターフェースを実装する必要があります。
public class MyOpenLpwaNgsiConverter implements OpenLpwaNgsiConverter {
@ Override
public List < ContextAttribute > decodeData ( String deviceID , String data ) {
// Decode the hexadecimal payload to build a list of NGSI context attributes
}メソッドdecodeDataは、デバイスから送信される各アップリンクペイロードに対して呼び出されます。この方法を実装して、デバイスにマッピングされたNGSIエンティティを更新するために、送信された16進ペイロードをデコードしてNGSIコンテキスト属性のリストを作成する必要があります(エージェントの開始を参照)。
@ Override
public String encodeDataForCommand ( String deviceID , String commandName , ContextAttribute attribute ) {
String data = attribute . getValue (). toString ();
// Build an hexadecimal payload to send a command
}メソッドencodeDataForCommandは、各ダウンリンクペイロードに対してデバイスに送信するために呼び出されます(デバイスへのコマンドの送信を参照)。このメソッドを実装して、NGSIコンテキスト属性でコマンドを取得し、対応する16進ペイロードをエンコードしてデバイスに送信する必要があります。
トークンまたは資格情報が記入されていないため、エージェントはリモートコンテキストブローカーに認証しようとせずにメッセージを送信します。
トークンが入力された場合、エージェントはこのトークンを使用して、メッセージを送信する前にリモートコンテキストブローカーに認証します。トークンが無効である場合、エージェントは指定された資格情報を使用して新しい資格情報を生成しようとします。
資格情報が記入されている場合、エージェントはそれらを使用して、指定されたURIからトークンを生成します。このトークンが有効である限り、エージェントはそれを使用し続けます。トークンがもはや有効でない場合、エージェントは指定された資格情報に基づいて、新しいエージェントに置き換えようとします。
ライブラリは、エージェントを管理するAgentクラスを提供します。 3つのパラメーターを渡すstartメソッドを呼び出すだけです。
AgentSuccessCallbackです。AgentFailureCallbackです。エージェントを開始する例は次のとおりです。
@ SpringBootApplication
@ ComponentScan ( "com.orange" )
public class Application implements ApplicationListener < ApplicationReadyEvent > {
private static Logger logger = LoggerFactory . getLogger ( Application . class );
@ Autowired
private Agent agent ;
public static void main ( String [] args ) {
new SpringApplicationBuilder ()
. sources ( Application . class )
. bannerMode ( Banner . Mode . LOG )
. run ( args );
}
@ Override
public void onApplicationEvent ( ApplicationReadyEvent applicationReadyEvent ) {
agent . start ( new MyOpenLpwaNgsiConverter (),
() -> {
logger . debug ( "IoT agent started" );
},
ex -> {
logger . error ( "IoT agent not started" , ex );
}
);
}
}フードの下で、エージェントはLiveObjects®MQTTブローカーに接続して、このステップ中にアップリンクペイロードを取得します。
このプロジェクトは、Apacheライセンスバージョン2.0に基づいています。