TÀI LIỆU HƯỚNG DẪN SỬ DỤNG OSIOT SDK¶
I. MỞ ĐẦU¶
I.1. Mục đích tài liệu¶
- Tài liệu hướng dẫn tích hợp OSIOT SDK nhằm hướng dẫn tích hợp các thiết bị hoạt động dựa trên nền hệ điều hành Linux có thể đơn giản hóa việc kết nối với VNPT IoT Platform.
I.2. Phạm vi¶
- Áp dụng cho các thiết bị hoạt động dựa trên nền tảng Linux.
I.3. Cách sử dụng¶
I.4. Các quy ước, từ viết tắt¶
II. TỔNG QUAN¶
I.1. Cài đặt tool¶
- Tải Visual Studio Code cho máy tính Link tải file cài đặt: https://code.visualstudio.com/download Với Raspberry Pi, tải phiên bản cho ARM:
- Cài đặt VSC
- Thực hiện lệnh với file code_xxx.deb là file cài đặt đã tải về sudo dpkg --install code_xxx.deb
- Mở VSC
- Chọn Start menu → Accessories → Visual Studio Code
- Mở thư mục source code
- Lựa chọn thư mục osiot
- Mở file mã nguồn cần xem hoặc chỉnh sửa
I.2. Build chương trình¶
- Chuẩn bị môi trường
- Sử dụng thiết bị Raspberry Pi hoặc PC cài đặt ubuntu
- Cài đặt các tool cần thiết
- sudo apt update
- sudo apt-get install libxerces-c-dev
- sudo apt-get install libcurl-dev
- sudo apt-get install libcurl4-openssl-dev
- sudo apt-get install libssl-dev
- sudo apt-get install libssl1.0-dev
- sudo apt-get install libmodbus-dev
- sudo apt-get install libmosquittopp-dev
- Tải và cài đặt xsd
- wget https://www.codesynthesis.com/download/xsd/4.0/xsd-4.0.0+dep.tar.bz2
- tar -xf xsd-4.0.0+dep.tar.bz2
- cd xsd-4.0.0+dep
- make
- cp -r xsd/libxsd/xsd /usr/include
- Tải mã nguồn osiot
- git clone hoặc sao chép tệp mã nguồn ở mục Tải về
- cd osiot
- Thực hiên build thư viện
- Thực hiện lệnh make clean; make
- Thực hiện lệnh sudo make install
- Thực hiện build example
- Đi đến thư mục example/daotao
- Thực hiện lệnh make
- Sau khi build xong, chạy thử chương trình
- Chạy lệnh ./app
II.3. Sử dụng chức năng SDK¶
Sau khi tích hợp và khởi tạo xong OSIOT SDK, người dùng có thể sử dụng các chức năng liên quan đến OneM2M resource:
Khởi tạo thư viện¶
-
Khởi tạo thư viện
onem2m::initialize();
-
Khởi tạo giao thức kết nối
-
Sử dụng MQTT
Protocol* protocol = new Mqtt( string clientId, string host, int port, string username, string password); Trong đó: - clientId: Định danh cho MQTT client - host: Địa chỉ ICC server. - port: Cổng kết nối ICC server - username: Tài khoản MQTT - password: Mật khẩu MQTT
-
Sử dụng HTTP
Protocol* protocol = new Http(string host, int port); Trong đó: - host: Địa chỉ ICC server. - port: Cổng kết nối ICC server
-
Chức năng quản lý AE¶
-
Khởi tạo đối tượng AE
Onem2mAE *ae = Onem2mAE(Protocol* protocol, string originator, string cseId, string cseName, string resourceName, string topicId, bool requestReachable, string poa, bool sendStatus, vector<string> labelList); Trong đó: - protocol: Kênh giao thức truyền thông với ICC - originator: Đối tượng khởi tạo - cseId: Định danh CSE - cseName: Tên CSE - resourceName: Tên AE - topicId: - requestReachable: Cho phép nhận dữ liệu từ server - poa: Thông tin địa chỉ để server gửi dữ liệu - sendStatus: Gửi trạng thái kết nối của thiết bị. - labelList: Danh sách label của AE
-
Truy vấn AE
ae->retrieve(int resultContent); Trong đó: - resultContent: Lựa chọn loại dữ liệu trả về
-
Tạo AE
ae->create(bool requestReachable, string poa, int resultContent); Trong đó: - requestReachable: Cho phép nhận dữ liệu từ server - poa: Thông tin địa chỉ để server gửi dữ liệu - resultContent: Lựa chọn loại dữ liệu trả về
-
Cập nhật AE
ae->update();
Chức năng quản lý Container¶
-
Khởi tạo đối tượng Container
Onem2mContainer * container = new Onem2mContainer(Onem2mBase * parent, string resourceName, vector<string> labelList); Trong đó: - parent: Đối tượng cha của Container - resourceName: Tên Container - labelList: Danh sách label của Container
-
Truy vấn Container
container->retrieve();
-
Tạo Container
container->create();
-
Cập nhật Container
container->update();
-
Tạo Content Instance cho Container
container-> createContentInstance(const ::xml_schema::string& content); Trong đó: - content: Nội dung Content Instance
Chức năng quản lý Flex Container¶
-
Khởi tạo đối tượng Flex Container
Onem2mFlexContainer * flexContainer = new Onem2mFlexContainer(Onem2mBase * parent, string resourceName, vector<string> labelList); Trong đó: - parent: Đối tượng cha của Container - resourceName: Tên Container - labelList: Danh sách label của Container
-
Truy vấn Flex Container
flexContainer->retrieve();
-
Tạo Flex Container
flexContainer->create();
-
Cập nhật Flex Container
flexContainer->update();
-
Tạo Content Instance cho Flex Container
flexContainer-> createContentInstance(const ::xml_schema::string& content); Trong đó: - content: Nội dung Content Instance
Chức năng quản lý Subscription¶
-
Khởi tạo đối tượng Subscription
Sub * sub = new Sub(Onem2mBase* parent, string resourceName); Trong đó: - parent: Đối tượng cha của Subscription - resourceName: Tên Subscription
-
Truy vấn Subscription
sub->retrieve();
-
Tạo Subscription
sub->create();
-
Cập nhật Subscription
sub->update();
Chức năng quản lý Access Control Policy¶
-
Khởi tạo đối tượng Access Control Policy
OACP * acp = new OACP(Onem2mBase* parent, string resourceName); Trong đó: - parent: Đối tượng cha của Access Control Policy - resourceName: Tên Access Control Policy
-
Truy vấn Access Control Policy
acp->retrieve();
-
Tạo Access Control Policy
acp->create(string originators, ::xml_schema::integer aco); Trong đó: - originator: Đối tượng cho Access Control Policy - aco: Cấp độ quyền cho originator
-
Cập nhật Access Control Policy
acp->addPrivilege(string originators, ::xml_schema::integer aco); Trong đó: - originator: Đối tượng cho Access Control Policy - aco: Cấp độ quyền cho originator
Các tính năng với Notification¶
- Đăng ký hàm callback xử lý Notificaion
ae->getProtocol()->addActionCallback(ActionCallbackFunc callback, string topic); Trong đó: - ae: Đối tượng AE khởi tạo - callback: Hàm callback được gọi đến khi có yêu cầu - topic: Topic lắng nghe bản tin, khi có dữ liệu notify, hàm callback sẽ được thực thi.