Mở đầu series về AWS IoT, DS Solution Vietnam sẽ hướng dẫn cài đặt căn bản IoT service trên AWS, sử dụng giao thức tiêu biểu MQTT để giao tiếp giữa device và platform IoT, sử dụng mosquitto client để giả lập devices và tương tác với IoT platform.

Tìm hiểu thêm về GCP

Khái quát: AWS IoT hoạt động như thế nào?

Cách hoạt động của AWS IoT

Devices

Là các thiết bị kết nối với nền tảng IoT. Tuy nhiên thiết bị nào được phép kết nối và xác thực bằng phương thức gì (user password, hay cặp ssl certificate) đều phải được thiết lập. Việc thiết lập này có thể thực hiện trước trên IoT platform hoặc các devices tự tương tác để đăng kí chính mình với IoT platform.

Message broker

Là trạm chung chuyển mọi giao tiếp giữa devices và IoT platform. Các kênh giao tiếp được gọi là các topic và được cấu trúc theo dạng cây đường dẫn.

Ví dụ:

control/item1
control/item2
alarm/factor1
alarm/factor2

Khái niệm topic ở đây lầ đầu hơi khó hiểu và dễ nhầm với topic trong AWS SNS service. Nhưng các topic này không thuộc quản lý trong SNS service. Mà nó có sẵn trong IoT Core. Các bên muốn gửi hay nhận data thì chỉ cần publish hay subcribe đúng topic path là OK, mà không cần phải định nghĩa trước các topic path.

Nên có thể mường tượng là cả message broker là 1 topic lớn đã được dựng sẵn trước. Các bên muốn giao tiếp với nhau thì thông qua topic này, và để phân loại / phân luồng được các giao tiếp thì publish và subcribe trên các topic path khác nhau.

Rule Engine

Base trên các kênh giao tiếp (topic) để trigger các xử lý cụ thể. Ví dụ cứ có communication trong topic control/item1 thì ghi vào S3, hay gửi sang cho Lambda xử lý.

Device Shadows

Là hình bóng của các device được lưu lại trên IoT platform. Mục đích cho việc đọc hay cập nhật trạng thái của các device dễ dàng. Ví dụ có nhiều trường hợp muốn cập nhật trạng thái cho device, nhưng device lại đang không kết nối. Thì device shadows sẽ được cập nhật trạng thái trước, và khi device được kết nối thì trạng thái từ shadows sẽ được cập nhật đến device thật.

Trong nội dung bài hướng dẫn này sẽ không sử dụng device shadow.

Security and Identity

Định nghĩa và quản lý xác thực giữa các bên giao tiếp. Xác thực kiểu gì, user pass hay ssl certificate. Tạo và quản lý các ssl key, và certificate.

Tạm dừng các khái niệm cơ bản ở đây và đi vào config tạo một kênh giao tiếp cơ bản trên AWS IoT

1. Device Setting

Nội dung bài này chỉ hướng dẫn cách đăng kí device manual. Trường hợp các device muốn tự mình giao tiếp và đăng kí với IoT Platform một cách tự động thì sử dụng phương thức đăng kí Just In Time. Nội dung đó nằm ngoài phạm vi bài này.

Đầu tiên vào Manage/Things và click Create. Sau đó chọn Create single thing.

Sau đó sẽ cần tạo certificate để device sử dụng xác thực khi giao tiếp với IoT Service. Ở đây sẽ để IoT service generate giúp luôn, nên chọn Create certificate.Preview unavailable

Sau khi tạo xong thì down tất cả các file ở đây và lưu lại. Trên các device thật sẽ dùng các file key và certificate ở đây để tương tác với IoT Service.Preview unavailable

Riêng file root CA thì chọn RSA 2048 bit key: Amazon Root CA 1 và download.

Nhớ chú ý click vào Activate để kích hoạt việc sử dụng certificate không thì khi kết nối sẽ bị refuse.

Và cũng chú ý Attach a Policy cho certificate. Certificate này dùng để giao tiếp với IoT service nên policy chỉ cần các quyền liên quan đến IoT là ok. Tạm thời ở đây cho full quền liên quan đến IoT.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iot:*",
      "Resource": "*"
    }
  ]
}

2. Config Rule Engine

Ví dụ ở đây sẽ tạo một luồng xử lý đơn giản. Device sẽ kết nốt và gửi message lên IoT Platform qua topic sensor-data . Thiết lập rule engine để mọi message từ topic này sẽ được lưu vào 1 bucket trên S3.

Trước tiên tạo bucket 001-sensor-data trên S3

Sau đó tao Rule Engine.

Vào Act và click Create

Name: SensorDataRule

Rule query statement: SELECT * FROM 'sensor-data/#'

Click Add action, rồi chọn Store to S3

Chọ bucket 001-sensor-data

Key: ${topic()}/${timestamp()}.json

Sau đó click vào Create Role để tạo role có quền ghi vào S3 bucket.

Click vào Create role. Sau đó click vào Create Rule ở màn hình tạo Rule.

3. Test gửi message từ device

Dùng MQTT client có sẵn trong AWS IoT

Vào Test và subcribe topic

Subscription topic: sensor-data/device1

Sau đó click vào Publish to topic. Bạn sẽ nhìn thấy message được gửi đi như trong hình.

Tiếp theo vào bucket trong S3 để kiểm tra việc data đã được lưu vào đây.

Download Json file và xem nội dụng.

Đây là cách test dùng giả lập MQTT có sẵn trong AWS IoT Core, nên không cần bước xác thực.

Dùng MQTT client chạy trên môi trường local để kết nối đến AWS IoT.

Trước tiên download MQTT client và install trên môi trường local.

https://mosquitto.org/download/

Tiếp theo sẽ dùng command mosquitto_pub để gửi message đến IoT Serrvice. Khi gửi sẽ dùng các file key và certificate tạo ở phần Device để xác thực và kết nối.

Đầu tiên đi xác định IoT endpoint trong Setting của IoT

Trường hợp ở đây endpoint là

a24n91asa5anho-ats.iot.ap-southeast-1.amazonaws.com

Tiếp theo là tạo 1 data message theo format json.

{"message": "Hello from AWS IoT console"}

Sau đó convert thành dạng JSON String Escape. Có thể dùng trang online này hỗ trợ.

https://www.freeformatter.com/json-escape.html#ad-output

Kết quả JSON String Escape như dưới.

1{\"message\": \"Hello from AWS IoT console\"}

Cuối cùng ghép tất cả vào và chạy lệnh. (trong lệnh này tên các file key và cert bạn sửa lại cho phù hợp)

mosquitto_pub --cafile Amazon_Root_CA_1.pem --cert 8992b4c5c8-certificate.pem.crt --key 8992b4c5c8-private.pem.key -h a24n91asa5anho-ats.iot.ap-southeast-1.amazonaws.com -p 8883 -q 1 -t sensor-data/device2 -i MyIotThing --tls-version tlsv1.2 -m "{\"message\": \"Hello from DS Developers\"}" -d

sẽ thấy kết quả chạy ở terminal như dưới.

Client MyIotThing sending CONNECT
Client MyIotThing received CONNACK (0)
Client MyIotThing sending PUBLISH (d0, q1, r0, m1, 'sensor-data/device2', ... (39 bytes))
Client MyIotThing received PUBACK (Mid: 1)
Client MyIotThing sending DISCONNECT

Check bucket S3 xem data message đã được truyền thành công chưa

Xem nội dung file json data

Cheer! Congrats you’ve done the AWS IoT Get Started.

Tham khảo thêm

AWS IoT documents

https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html

Cách dùng mosquitto_pub

https://mosquitto.org/man/mosquitto_pub-1.html

Trên đây DS Solution Vietnam đã giới thiệu sơ lược về AWS IoT. Hãy liên hệ tới chúng tôi để nhận tư vấn chi tiết, hướng dẫn cách chuyển đổi sang các nền tảng điện toán đám mây GCP, AWS, IBM, hybrid cloud và cách xây dựng các ứng dụng cloud-native.