โครงการนี้เป็นสะพานเชื่อมระหว่างเครือข่าย Orange Lora®* และโปรโตคอล OMA NGSIV1 ที่ใช้โดยนายหน้าบริบท Orion เช่นเดียวกับส่วนประกอบอื่น ๆ ของระบบนิเวศ Fiware
Agent IoT นี้เป็นไลบรารีที่สามารถใช้ตัวอย่างได้ในแอปพลิเคชัน Springboot
ตัวแทนนี้อนุญาตให้:
ไลบรารีนี้ใช้แพลตฟอร์ม Live Objects® (https://liveobjects.orange-business.com/#/liveobjects) เพื่อจัดการlora®* payloads
การใช้งาน NGSI V1 จัดทำโดยห้องสมุด Orange-Opensource/Fiware-NGSI-API
นี่คือสถาปัตยกรรมระดับโลกของตัวแทน IoT โดยใช้แพลตฟอร์ม Live Objects®เพื่อจัดการ Payloads อุปกรณ์LORA®*:
สถาปัตยกรรม
สร้างโครงการ 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 | URL ไปยังนายหน้าระยะไกล (Orion) | http: // localhost: 8082 |
| contextbroker.remotefiwareservice | ชื่อบริการนายหน้าระยะไกล | |
| contextbroker.remotefiwareservicepath | เส้นทางบริการนายหน้าระยะไกล | |
| contextbroker.remoteauthtoken | โทเค็น Oauth สำหรับนายหน้าระยะไกลที่ปลอดภัย | |
| contextbroker.remoteauthtokenuri | URI ใช้เพื่อดึงโทเค็นการรับรองความถูกต้อง | |
| contextbroker.remoteclientid | รหัสไคลเอนต์นายหน้าบริบทระยะไกล | |
| contextbroker.remoteclientsecret | ความลับของนายหน้าบริบทจากระยะไกล | |
| contextbroker.remoteuserlogin | การเข้าสู่ระบบของนายหน้าบริบทระยะไกล | |
| contextbroker.remoteuserpassword | รหัสผ่านผู้ใช้นายหน้าบริบทระยะไกล | |
| openlpwaprovider.resturl | Live Objects® ** uRL API | https://lpwa.liveobjects.orange-business.com |
| openlpwaprovider.apikey | คีย์ Live Objects® ** API | |
| openlpwaprovider.mqtturi | Live Objects® ** MQTT Broker uri | tcp: //liveobjects.orange-business.com: 1883 |
| openlpwaprovider.mqttclientid | Live Objects® ** MQTT BROKER CLIEND | fiware-iotagent-client |
ในการใช้อุปกรณ์LORA®* กับตัวแทนโปรดทำตามขั้นตอนนี้:
ก่อนที่จะเริ่มใช้เอเจนต์คุณต้องลงทะเบียนอุปกรณ์บนพอร์ทัล LPWA Live Objects® (https://lpwa.liveobjects.orange-business.com) หากอุปกรณ์ของคุณลงทะเบียนอย่างถูกต้องและใช้งานอยู่คุณควรเห็น payloads ที่กำลังจะมาถึงในเว็บไซต์
ข้อมูลที่รวบรวมโดยวัตถุสดสามารถส่งไปยังคิวข้อความ (FIFO) การสร้างกฎการกำหนดเส้นทางทำได้ในสามขั้นตอน:
คุณสามารถสร้าง FIFO ของคุณและกำหนดกฎการกำหนดเส้นทางของคุณในพอร์ทัล Live Objects® (https://lpwa.liveobjects.orange-business.com)
แพลตฟอร์ม Live Objects®จัดการLORA®* Payloads Hexadecimal ไม่สามารถถอดรหัสเพย์โหลดบนแพลตฟอร์มได้ดังนั้นคุณต้องทำกระบวนการนี้เมื่อคุณใช้เอเจนต์
ในการทำงานนี้คุณต้องใช้อินเทอร์เฟซ 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 เพื่ออัปเดตเอนทิตี 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 และเพื่อเข้ารหัสเพย์โหลดเฮกซาเด็คที่สอดคล้องกันเพื่อส่งไปยังอุปกรณ์
หากไม่มีโทเค็นหรือข้อมูลประจำตัวที่กรอกข้อมูลตัวแทนจะส่งข้อความโดยไม่ต้องพยายามตรวจสอบสิทธิ์ในการเป็นนายหน้าบริบทระยะไกล
ด้วยโทเค็นที่กรอกข้อมูลตัวแทนจะใช้โทเค็นนี้เพื่อรับรองความถูกต้องกับนายหน้าบริบทระยะไกลก่อนส่งข้อความ หากโทเค็นไม่ถูกต้องเอเจนต์จะพยายามใช้ข้อมูลรับรองที่กำหนดเพื่อสร้างใหม่
หากมีการกรอกข้อมูลรับรองตัวแทนจะใช้พวกเขาเพื่อสร้างโทเค็นจาก URI ที่กำหนด ตราบใดที่โทเค็นนี้ใช้ได้ตัวแทนจะใช้งานต่อไป หากโทเค็นไม่ถูกต้องอีกต่อไปเอเจนต์จะพยายามแทนที่ด้วยอันใหม่ตามข้อมูลประจำตัวที่กำหนด
ไลบรารีจัดเตรียมคลาส Agent เพื่อจัดการเอเจนต์ คุณควรเรียกใช้วิธี start ที่ผ่าน 3 พารามิเตอร์:
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 License Version 2.0