Vào thẳng nội dung

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

  1. 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:
    1. ARM: Raspberry Pi 1, 2
    2. ARM 64: Raspberry Pi 3, 4
  2. Cài đặt VSC
  3. 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
  4. Mở VSC
  5. Chọn Start menu → Accessories → Visual Studio Code
  6. Mở thư mục source code
  7. Lựa chọn thư mục osiot
  8. Mở file mã nguồn cần xem hoặc chỉnh sửa

I.2. Build chương trình

  1. Chuẩn bị môi trường
  2. Sử dụng thiết bị Raspberry Pi hoặc PC cài đặt ubuntu
  3. 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
  4. Tải mã nguồn osiot
  5. git clone hoặc sao chép tệp mã nguồn ở mục Tải về
  6. cd osiot
  7. Thực hiên build thư viện
  8. Thực hiện lệnh make clean; make
  9. Thực hiện lệnh sudo make install
  10. Thực hiện build example
  11. Đi đến thư mục example/daotao
  12. Thực hiện lệnh make
  13. Sau khi build xong, chạy thử chương trình
  14. 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  yêu cầu
    - topic: Topic lắng nghe bản tin, khi  dữ liệu notify, hàm callback sẽ được thực thi.
    
Back to top