Proyek ini adalah jembatan antara jaringan Orange Lora®* dan protokol OMA NGSIV1 yang digunakan oleh Pialang Konteks Orion serta oleh komponen lain dari ekosistem fiware.
Agen IoT ini adalah perpustakaan yang dapat digunakan misalnya dalam aplikasi Springboot.
Agen ini memungkinkan untuk:
Perpustakaan ini menggunakan platform Live Objects® (https://liveobjects.orane-business.com/#/liveObjects) untuk mengelola payload Lora®*.
Implementasi NGSI V1 disediakan oleh Perpustakaan Orange-Opensource/Fiware-NGSI-API.
Inilah arsitektur global dari agen IoT menggunakan platform Live Objects® untuk mengelola payload perangkat Lora®*:
Arsitektur
Buat proyek Maven dengan dependensi boot musim semi dan perpustakaan kami:
< dependency >
< groupId >com.orange.fiware</ groupId >
< artifactId >openlpwa-iotagent</ artifactId >
< version >X.Y.Z</ version >
</ dependency > di mana XYZ adalah versi perpustakaan yang akan digunakan (periksa tag git).
Anda dapat memodifikasi beberapa pengaturan aplikasi baik menambahkan:
src/main/resources/application.properties dalam aplikasi Anda.Ini adalah daftar properti aplikasi:
| Nama | Keterangan | Nilai default |
|---|---|---|
| ContextBroker.Localurl | URL publik untuk contoh ini | http: // localhost: 8081 |
| ContextBroker.Remoteurl | URL ke broker jarak jauh (Orion) | http: // localhost: 8082 |
| ContextBroker.RemotefiWareservice | Nama layanan broker jarak jauh | |
| ContextBroker.RemotefiwareservicePath | Jalur layanan broker jarak jauh | |
| ContextBroker.RemoteAtHToken | OAuth token untuk broker jarak jauh yang dijamin | |
| ContextBroker.RemoteAtHTokenuri | Uri digunakan untuk mengambil token otentikasi | |
| ContextBroker.remoteclientId | ID Klien Pialang Konteks Jarak Jauh | |
| ContextBroker.RemoteclientSecret | Rahasia Klien Pialang Konteks Jarak Jauh | |
| ContextBroker.RemoteUserLogin | Login Pengguna Broker Konteks Jarak Jauh | |
| ContextBroker.RemoteUserPassword | Kata Sandi Pengguna Pialang Konteks Jarak Jauh | |
| OpenLpwaprovider.Resturl | Live Objects® ** API URL | https://lpwa.liveObjects.orane-business.com |
| OpenLpwaprovider.apikey | Live Objects® ** Kunci API | |
| OpenLpwaprovider.mqtturi | Live Objects® ** MQTT Broker URI | tcp: //liveObjects.orane-business.com: 1883 |
| OpenLpwaprovider.mqttclientId | Live Objects® ** MQTT Broker Client Identifier | fiware-iotagent-client |
Untuk menggunakan perangkat Lora®* dengan agen, silakan ikuti langkah -langkah ini:
Sebelum mulai menggunakan agen, Anda harus mendaftarkan perangkat di portal LPWA Live Objects® (https://lpwa.liveObjects.orane-business.com). Jika perangkat Anda terdaftar dan aktif dengan benar, Anda akan melihat muatan yang akan datang di situs web.
Data yang dikumpulkan oleh objek langsung dapat dialihkan ke antrian pesan (FIFO). Penciptaan aturan perutean dilakukan dalam tiga langkah:
Anda dapat membuat FIFO Anda dan menentukan aturan perutean Anda di Live Objects® Portal (https://lpwa.liveobjects.orite-business.com).
Live Objects® Platform mengelola Lora®* Hexadecimal Payloads. Tidak mungkin untuk memecahkan kode muatan pada platform sehingga, Anda harus melakukan proses ini saat menggunakan agen.
Untuk melakukan pekerjaan ini, Anda harus mengimplementasikan antarmuka OpenLpwaNgsiConverter dengan dua metode berikut:
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
} Metode decodeData dipanggil untuk setiap muatan uplink yang dikirim oleh perangkat. Anda harus mengimplementasikan metode ini untuk memecahkan kode muatan heksadesimal yang dikirim dan membangun daftar atribut konteks NGSI untuk memperbarui entitas NGSI yang dipetakan dengan perangkat (lihat Mulai Agen).
@ Override
public String encodeDataForCommand ( String deviceID , String commandName , ContextAttribute attribute ) {
String data = attribute . getValue (). toString ();
// Build an hexadecimal payload to send a command
} Metode encodeDataForCommand dipanggil untuk setiap muatan downlink untuk mengirim ke perangkat (lihat perintah Kirim ke perangkat). Anda harus mengimplementasikan metode ini untuk mengambil perintah dalam atribut konteks NGSI dan untuk menyandikan muatan heksadesimal yang sesuai untuk dikirim ke perangkat.
Tanpa token atau kredensial yang diisi, agen akan mengirim pesan tanpa mencoba mengotentikasi ke broker konteks jarak jauh.
Dengan token diisi, agen akan menggunakan token ini untuk mengotentikasi ke broker konteks jarak jauh sebelum mengirim pesan. Jika token tidak valid, agen akan mencoba menggunakan kredensial yang diberikan untuk menghasilkan yang baru.
Jika kredensial diisi, agen akan menggunakannya untuk menghasilkan token dari URI yang diberikan. Selama token ini valid, agen akan terus menggunakannya. Jika token tidak lagi valid, agen akan mencoba menggantinya dengan yang baru, berdasarkan kredensial yang diberikan.
Perpustakaan menyediakan kelas Agent untuk mengelola agen. Anda harus memanggil metode start yang melewati 3 parameter:
AgentSuccessCallback yang dipanggil ketika agen dimulai dengan benar.AgentFailureCallback yang dipanggil ketika agen tidak dimulai dengan benar.Inilah contoh untuk memulai agen:
@ 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 );
}
);
}
}Di bawah kap, agen akan terhubung ke broker Live Objects® MQTT untuk mengambil muatan uplink selama langkah ini.
Proyek ini berada di bawah Lisensi Apache versi 2.0.