Bắt đầu với VNPT IoT Platform¶
Giới thiệu¶
Mục tiêu của hướng dẫn này là trình bày cách sử dụng cơ bản các tính năng phổ biến nhất của VNPT IoT Platform. Sẽ mất khoảng 15 phút bạn sẽ học được cách:
-
Kết nối thiết bị IoT đến VNPT IoT Platform
-
Đẩy và lưu trữ dữ liệu từ thiết bị IoT đến VNPT IoT Platform
-
Theo dõi trạng thái mới nhất của thiết bị IoT
-
Thực hiện gửi lệnh điều khiển đến thiết bị IoT thông qua HTTP Rest API của VNPT IoT Platform
Điều kiện tiên quyết¶
Bạn phải có tài khoản tại https://iot.vnpt.vn, nếu chưa có hãy liên hệ với chúng tôi qua email support.iot@vnpt.vn hoặc hotline: (+84)948.661.104.
Sau khi kích hoạt tài khoản, bạn sẽ nhận được ACCESS KEY để sãn sàng sử dụng các API của VNPT IoT Platform.
Bước 1¶
Để đơn giản, chúng tôi sẽ cung cấp chức năng cấp phát thiết bị bằng cách thủ công qua giao diện người dùng.
-
Đăng nhập vào VNPT IoT Portal > di chuyển đến trang Thiết bị
-
Click button (+) ở góc trên cùng bên phải của bảng rồi chọn "Thêm 1 thiết bị".
-
Nhập các thông tin đầu vào cần thiết cho thiết bị. Ví dụ: "My New Device 01". Click vào "Thêm " để thêm thiết bị
Bạn cũng có thể
-
Cấp phát nhiều thiết bị IoT cùng lúc qua giao diện người dùng
-
Cấp phát tự động thiết bị để cho phép chương trình cơ sở (Firmware) của thiết bị tự động kích hoạt, vì vậy bạn không cần phải định cấu hình từng thiết bị theo cách thủ công.
-
Sử dụng REST API để cấp phát thiết bị và các thực thể khác theo chương trình
Bước 2¶
Để kết nối thiết bị, trước tiên bạn cần lấy thông tin đăng nhập của thiết bị, VNPT IoT Platform hỗ trợ nhiều thông tin xác thực thiết bị khác nhau.
Chúng tôi khuyên bạn nên sử dụng thông tin xác thực được tạo tự động mặc định làm mã thông báo truy cập cho hướng dẫn này.
-
Click vào tên thiết bị trong danh sách thiết bị
-
Copy thông tin xác thực thiết bị vào bộ nhớ tạm
Xong, bạn có thể sẵn sàng tiến hành cho thiết bị IoT của mình đẩy thông tin cảm biến từ xa. Tham khảo tại ví dụ đơn giản dưới đây qua giao thức HTTP và MQTT:
- HTTP:
Thay thế VNPT_IOT_PLATFORM_HOST, YOUR_ACCESS_KEY bằng các giá trị được cung cấp tương ứng
curl -v -X POST -d "{"m2m:ae": {"rn":"ae_my_new_device","lbl":["Type/Device"], "api": "R.app1.your.company.com.vn", "poa": ["mqtt://vnptmsgbroker:1883"], "rr": true } }" $VNPT_IOT_PLATFORM_HOST --header {"Content-Type":"application/json;ty=2","X-M2M-Origin":"YOUR_ACCESS_KEY"}
curl -v -X POST -d "{"m2m:cnt":{"rn":"cnt_my_new_device" } }" $VNPT_IOT_PLATFORM_HOST --header {"Content-Type":"application/json;ty=3","X-M2M-Origin":"YOUR_ACCESS_KEY"}
curl -v -X POST -d "{"m2m:cin":{"cnf":"application/json","con": {"temperature" : 30} } }" $VNPT_IOT_PLATFORM_HOST --header {"Content-Type":"application/json;ty=4","X-M2M-Origin":"YOUR_ACCESS_KEY"}
- MQTT:
Cài đặt mosquito client tại https://mosquitto.org/download/
Thực hiện lệnh window command:
mosquitto_pub -d -q 1 -h "$VNPT_IOT_PLATFORM_HOST" -p "1883" -t "/oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json" -u "$DEVICE_MQTT_BASIC_USER" -P "$DEVICE_MQTT_BASIC_PASSWORD" -m {"fr": "$YOUR_ACCESS_TOKEN ","to": "/vnpt/icc/","op": 1,"ty": 2,"rcn": 0,"rqi": "121221212","pc": { "m2m:ae" : { "rn":"ae_my_new_device2", "lbl":["Type/Device"], "api": "R.app1.your.company.com.vn", "poa": ["mqtt://vnptmsgbroker:1883"], "rr": true } } }
mosquitto_pub -d -q 1 -h "$VNPT_IOT_PLATFORM_HOST" -p "1883" -t "/oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json" -u "$DEVICE_MQTT_BASIC_USER" -P "$DEVICE_MQTT_BASIC_PASSWORD" -m {"fr": "$YOUR_ACCESS_TOKEN ","to": "/vnpt/icc/","op": 1,"ty": 3,"rcn": 0,"rqi": "2323232323","pc": { "m2m:cnt": {"rn":"cnt_my_new_device2"}} }
mosquitto_pub -d -q 1 -h "$VNPT_IOT_PLATFORM_HOST" -p "1883" -t "/oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json" -u "$DEVICE_MQTT_BASIC_USER" -P "$DEVICE_MQTT_BASIC_PASSWORD" -m {"fr": "$YOUR_ACCESS_TOKEN ","to": "/vnpt/icc/","op": 1,"ty": 4,"rcn": 0,"rqi": "121221212","pc": { "m2m:cin": {"cnf": "application/json","con": { "temperature": 30} }} }
- Chú ý:
Thay các thông tin xác thực DEVICE_MQTT_BASIC_USER, DEVICE_MQTT_BASIC_PASSWORD, tại tương ứng từ chi tiết thiết bị.
Tại màn hình xem chi tiết thiết bị, thông tin về bản tin mới nhất được cập nhật
Xong, bạn có thể theo dõi được bản tin trạng thái mới nhất từ thiết bị IoT của mình.
Bước tiếp theo là một số thủ tục để bạn có thể gửi một lệnh điều khiển từ ứng dụng (ví dụ: ON/OFF) đến thiết bị IoT thông qua HTTP Rest API của VNPT IoT Platform.
Bước 3¶
Điều kiện để thực hiện được gửi lệnh điều khiển tử ứng dụng bạn phải hoàn bước 1 [Kết nối thiết bị IoT đến VNPT IoT Platform], thủ tục mô tả như hình vẽ.
Bạn cũng có thể sử dụng công cụ khác để dễ dàng test với các giao thức HTTP, MQTT bằng Postman và MQTT.
Các công cụ miễn phí bạn có thể tải về tại: https://www.postman.com/downloads/
và https://mqttbox.en.softonic.com/
Cấu hình cho MQTT Box:
Thay các giá trị DEVICE_CLIENT_ID, DEVICE_MQTT_BASIC_USER, DEVICE_MQTT_BASIC_PASSWORD tương ứng từ chi tiết thiết bị.
Bước 3.0. MQTT Create AE (đăng ký kết nối thiết bị)¶
Đăng ký kết nối thiết bị IoT đến VNPT IoT Platform, sử dụng MQTT Box để đăng ký kết nối thiết bị:
Mô tả: Sử dụng MQTT Box để send payload :
{
"fr": "YOUR_ACCESS_KEY",
"to": "/vnpt/icc",
"op": 1,
"ty": 2,
"rcn": 1,
"rqi": "121221212",
"pc": {
"m2m:ae": {
"rn": "ae_my_new_device_00001",
"lbl": ["Type/Device"],
"api": "R.app1.vnpt.vn",
"poa": ["mqtt://vnptmsgbroker:1883"],
"rr": true
}
}
}
đến topic : /oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json
có thể subscriber topic: /oneM2M/resp/vnpt/YOUR_ACCESS_TOKEN/json để theo dõi kết quả , kết quả trả về:
{
"rsc": 2001,
"rqi": "121221212",
"pc": {
"m2m:ae": {
"rr": true,
"poa": ["mqtt://vnptmsgbroker:1883"],
"aei": "CAEcb5090e4cb98a5213",
"ty": 2,
"lt": "20230425T132338",
"et": "20330425T132338",
"ct": "20230425T132338",
"acpi": ["/vnpt/acp-acbb9e006c979f64e"],
"ri": "/vnpt/CAEcb5090e4cb98a5213",
"lbl": ["Type/Device"],
"pi": "/vnpt",
"api": "R.app1.vnpt.vn",
"rn": "ae_my_new_device_00001"
}
},
"ot": "20230425T132338"
}
Subscriber đến topic /oneM2M/req/vnpt/AE-ID/json, trong đó AE-ID là giá trị "aei":"CAE......" đã đăng ký ở trên.
Bước này giúp thiết bị IoT nhận các tín hiệu điều khiển từ IoT Platform mỗi khi nhận lệnh điều khiển.
Bước 3.1 MQTT Create Container (Tạo tài nguyên Container Control)¶
Mô tả: Sử dụng MQTT Box để send payload :
{
"fr": "YOUR_ACCESS_KEY",
"to": "/vnpt/icc/ae_my_new_device_00001",
"op": 1,
"ty": 3,
"rcn": 1,
"rqi": "123123",
"pc": {
"m2m:cnt": {
"rn": "control"
}
}
}
đến topic : /oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json
có thể subscriber topic: /oneM2M/resp/vnpt/YOUR_ACCESS_TOKEN/json để theo dõi kết quả
Bước 3.2. MQTT Create Subscription (Tạo tài nguyên Subscription để có thể nhận thông báo Control)¶
Mô tả: Sử dụng MQTT Box để send payload :
{
"fr": "YOUR_ACCESS_KEY",
"to": "/vnpt/icc/ae_my_new_device_00001/control",
"op": 1,
"ty": 23,
"rcn": 1,
"rqi": "123123456",
"pc": {
"m2m:sub": {
"enc": {
"net": [3]
},
"ln": true,
"nct": 1,
"nu": ["/icc/ae_my_new_device_00001"],
"rn": "sub"
}
}
}
đến topic : /oneM2M/req/YOUR_ACCESS_TOKEN/vnpt/json
Bước 3.3. Subscriber topic /oneM2M/req/vnpt/AE-ID/json để theo dõi kết quả¶
Tại bước này AE-ID là giá trị "aei":"CAE......" đã đăng ký ở bước 3.0 đã đề cập phía trên.
Mỗi khi thực hiện lệnh điều khiển, IoT Platform sẽ thông báo đến thiết bị để yêu cầu thực thi tương ứng.
Bước 3.4. Thực hiện lệnh điều khiển bằng HTTP API qua VNPT IoT Platform¶
Ở bước này chúng ta sử dụng Postman để test gửi lệnh ON/OFF đến thiết bị IoT:
Mô tả:
POST https://http-iot.vnpt.vn/~/vnpt/icc/ae_my_new_device_00001/control
Header:
X-M2M-Origin: YOUR_ACCESS_KEY
Content-Type: application/json;ty=4
X-M2M-RI: 123456
Body:
{
"m2m:cin": {
"cnf": "application/json",
"con": {
"switch":"OFF"
}
}
}
Bước 3.5. Nhận lệnh điều khiển từ bản tin MQTT Notify từ IoT Platform mỗi khi tiến hành request HTTP qua Postman¶
Tại màn hình subscriber topic nhận lệnh điều khiển ,thiết bị IoT sẽ nhận được bản tin Notify từ IoT Platform có dạng:
{
"op": 5,
"to": "mqtt://vnptmsgbroker:1883",
"fr": "YOUR_ACCESS_KEY",
"rqi": "de5273dd-d3e8-42cc-a7d9-784541c11ac7",
"pc": {
"m2m:sgn": {
"sur": "/vnpt/sub-1a9c9d0c41d0f6b93",
"sud": false,
"nev": {
"resourceStatus": 1,
"rep": {
"m2m:cin": {
"cs": 15,
"ct": "20230425T142757",
"con": {
"switch": "ON"
},
"ty": 4,
"ri": "/vnpt/cin-aa8d1e4161d17473",
"lt": "20230425T142757",
"pi": "/vnpt/cnt-0ca70b0e09015ef0c56",
"cnf": "application/json",
"rn": "cin-b098a942fb05ab5085"
}
},
"net": 1
}
}
}
}