이 프로젝트는 Orange Lora®* 네트워크와 Orion Context Broker와 Fiware Ecosystem의 다른 구성 요소가 사용하는 Oma NGSIV1 프로토콜 사이의 브리지입니다.
이 IoT 에이전트는 예를 들어 스프링 부츠 응용 프로그램에서 사용할 수있는 라이브러리입니다.
이 에이전트는 다음을 허용합니다.
이 라이브러리는 Live Objects® 플랫폼 (https://liveobjects.orange-business.com/#/liveobjects)을 사용하여 LORA®* 페이로드를 관리합니다.
NGSI V1 구현은 Orange-Opensource/Fiware-NGSI-API 라이브러리에서 제공합니다.
LORA®* 장치 페이로드를 관리하기 위해 Live Objects® 플랫폼을 사용하는 IoT 에이전트의 글로벌 아키텍처는 다음과 같습니다.
건축학
Spring Boot Dependencies 및 라이브러리가있는 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 | 원격 컨텍스트 브로커 사용자 비밀번호 | |
| OpenLlpWaprovider.Resturl | Live Objects® ** API URL | https://lpwa.liveobjects.orange-business.com |
| OpenLPWAPROVIDER.APIKEY | Live Objects® ** API 키 | |
| OpenlpWaprovider.MQTTURI | Live Objects® ** MQTT 브로커 URI | tcp : //liveobjects.orange-business.com : 1883 |
| OpenLPWAPROVIDER.MQTTCLIENTID | Live Objects® ** MQTT 브로커 클라이언트 식별자 | Fiware-Oiotagent-Client |
에이전트와 함께 LORA®* 장치를 사용하려면 다음 단계를 따르십시오.
에이전트를 사용하기 전에 LPWA Live Objects® Portal (https://lpwa.liveobjects.orange-business.com)에 장치를 등록해야합니다. 장치가 올바르게 등록되고 활성화되면 웹 사이트에 다가오는 페이로드가 표시됩니다.
라이브 객체가 수집 한 데이터는 메시지 대기열 (FIFO)으로 라우팅 할 수 있습니다. 라우팅 규칙의 생성은 세 단계로 수행됩니다.
FIFO를 생성하고 Live Objects® Portal (https://lpwa.liveobjects.orange-business.com)에서 라우팅 규칙을 정의 할 수 있습니다.
Live Objects® 플랫폼은 LORA®* 16 진수 페이로드를 관리합니다. 플랫폼에서 페이로드를 해독 할 수 없으므로 에이전트를 사용할 때이 프로세스를 수행해야합니다.
이 작업을 수행하려면 다음 두 가지 방법과 함께 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 호출됩니다. 전송 된 16 진수 페이로드를 해독하고 장치에 매핑 된 NGSI 엔티티를 업데이트하기 위해 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 );
}
);
}
}후드 아래에서 에이전트는 Live Objects® MQTT 브로커에 연결 하여이 단계에서 업 링크 페이로드를 검색합니다.
이 프로젝트는 Apache 라이센스 버전 2.0에 따라 있습니다.