Ví dụ thiết kế API tương tác ứng dụng website khi sử dụng GCP trong ứng dụng IoT SmartHome

Thiết kế một tập hợp các API là việc cần thiết để các ứng dụng có thể dễ dàng tương tác với các dịch vụ trên đám mây, đồng thời dễ dàng nâng cấp, mở rộng và bảo trì về sau. Để thiết kế các API theo tiêu chuẩn REST trên GCP, bài viết hướng dẫn này sử dụng dịch vụ Cloud Function để viết các hàm phục vụ máy khách theo mô hình request/response của giao thức HTTP. Cloud Function sẽ lắng nghe các yêu cầu từ ứng dụng, sau đó thực thi và phản hồi lại ứng dụng.


Hình 1: Sơ đồ kiến trúc thiết kế API cho ứng dụng website theo kiến trúc REST

Ví dụ với một hệ thống nhà thông minh, chúng ta có thể thiết kế 4 tài nguyên API để ứng dụng tương tác với hệ thống như sau:

Đọc dữ liệu reported của thiết bị trong Firestore cảm biến trong khoảng thời gian chỉ định:

  • Phương thức: GET
  • URL: https://asia-northeast1-khai-demo.cloudfunctions.net/apigateway/getdata/reported/deviceid/{deviceid}
  • Path parameter:
    • {deviceid}: Id của thiết bị được lưu trữ trong CSDL.

Đọc dữ liệu cảm biến trong khoảng thời gian chỉ định:

  • Phương thức: GET
  • URL: https://asia-northeast1-khai-demo.cloudfunctions.net/apigateway/getdata/sensor/deviceid/{deviceid}?dtstart={dtstart}&dtend={dtend}
  • Path parameter:
    • {deviceid}: Id của thiết bị được lưu trữ trong CSDL.
  • Query String Parameter:
    • {dtstart}: thời gian bắt đầu của dữ liệu được truy vấn
    • {dtend}: thời gian kết thúc của dữ liệu được truy vấn

Gửi lệnh điều khiển trạng thái đến thiết bị:

  • Phương thức: POST
  • URL: https://asia-northeast1-khai-demo.cloudfunctions.net/apigateway/ /command/relay/deviceid/{deviceid}
  • Path parameter:
    • { deviceid}: Id của thiết bị trong Cloud IoT Core mà ứng dụng muốn cập nhật trạng thái
  • Body:
    {
    “devicename”: “state”
    }

    • devicename: light1| light2 | fan
    • sate: on | off

Gửi lệnh cấu hình ngưỡng cảnh báo khí ga đến thiết bị:

  • Phương thức: POST
  • URL: https://asia-northeast1-khai-demo.cloudfunctions.net/apigateway/ /config/threshold/deviceid/{deviceid}
  • Path parameter:
    • { deviceid}: Id của thiết bị trong AWS IoT Core mà ứng dụng muốn cập nhật cấu hình ngưỡng
  • Body:
    {
    “gas”: “value”,
    “pir”: “value”
    }
  • value: giá trị ngưỡng hoặc giá trị muốn cấu hình

Google Cloud IoT là dịch vụ được quản lý toàn diện cho phép kết nối, quản lý và nhập dữ liệu từ hàng triệu thiết bị phân tán trên toàn cầu một cách dễ dàng và an toàn. Hi vọng qua bài viết này mọi người có thể tham khảo và thiết kế được các API để tương tác với ứng dụng Web khi sử dụng Dịch vụ điện toán đám mây Google Cloud Platform cho các ứng dụng IoT.

Tìm hiểu thêm:
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community

Chuỗi bài viết được thực hiện và chia sẻ bởi LCV.Khải và Các nhóm nghiên cứu tại Cộng đồng Kỹ thuật TAPIT
Chúc các bạn thành công!