Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

1.

MQTT
- Định nghĩa:
 Viết tắt của “Message Queuing Telemetry Transport”
 Là một giao thức truyền tin đơn giản được thiết kế cho những thiết bị IoT đơn giản,
lý tưởng để kết nối các thiết bị từ xa có băng thông thấp.
 Cho phép các thiết bị IoT phát và nhận bản tin.
 Cho phép người dùng gửi các lệnh điều khiển cũng như nhận các bản tin từ các thiết
bị IoT.
- Cách sử dụng chính:
 Phát lệnh điều khiển để điều khiển các thiết bị IoT.
 Đọc dữ liệu từ các thiết bị IoT.

- Một số khái niệm cơ bản:


 Publish/Subscribe
Trong MQTT, một thiết bị IoT có thể phát (publish) dữ liệu qua một chủ đề hoặc có
thể được đăng kí (subscribe) một chủ đề để nhận bản tin từ chủ đề đó.
 Messages
Là những bản tin trao đổi giữa các thiết bị IoT. Bản tin có thể là lệnh điều khiển hoặc
dữ liệu.
 Topics
Là chủ đề mà thiết bị IoT có thể phát hoặc đăng kí như đã đề cập bên trên.
Chủ đề được biểu diễn dưới dạng chuỗi ký tự và được phân tách bằng một dấu gạch
ngang. Mỗi một dấu gạch ngang biểu thị một mức chủ đề
Example: Sensor/Distance/Buzz
 Broker
Là một server nhận tất cả bản tin và thực hiện phân loại chúng. Sau đó gửi các bản
tin này đến các thiết bị IoT mà chúng đã đăng kí trước đó.

Nhiều client có thể nhận được tin nhắn từ một broker duy nhất (one to many, tạm
dịch: quan hệ một - nhiều). Tương tự, nhiều publisher có thể xuất bản (publish) các
topic cho một người đăng ký (many to one, tạm dịch: quan hệ nhiều - một).

Mỗi client có thể vừa sinh và vừa nhận dữ liệu, bằng cách xuất bản (publish) và đăng
ký (subscribe), tức là các thiết bị có thể xuất ra dữ liệu cảm biến và vẫn có thể nhận
được thông tin cấu hình hoặc lệnh điều khiển (MQTT là một giao thức truyền thông
hai chiều). Điều này giúp ích trong cả việc chia sẻ dữ liệu, quản lý và điều khiển thiết
bị.

Với kiến trúc MQTT broker, các thiết bị và ứng dụng trở nên tách rời và an toàn hơn.
MQTT sử dụng TLS để mã hóa thông tin về tên người dùng và mật khẩu để bảo vệ
các kết nối, và có thể dùng thêm các xác thực bảo mật khác để yêu cầu client phải
cung cấp file xác thực phù hợp với máy chủ.

Trong trường hợp xảy ra lỗi với một broker, một broker dự phòng/sao lưu tự động có
thể được sử dụng để thay thế. Broker dự phòng có thể được thiết lập để chia sẻ tải
của client thông qua nhiều server tại chỗ, đám mây hoặc sử dụng phối hợp cả hai
cách này.
Hình trên mô tả cách thức kết nối MQTT giữa 2 clients A và B. Đầu tiên client B phát
thông tin nhiệt độ roof tuy nhiên có bật cờ retain (cờ treo). Khi client A đăng kí chủ
đề, client A sẽ nhận được thông tin nhiệt độ roof từ brocker mà client B đã gửi và
treo trước đó. Client A phát một chủ đề mới (nhiệt độ floor). Tuy nhiên do client B
không đăng kí chủ đề floor đó nên sẽ không nhận được thông tin nhiệt độ mà client
A gửi tới. Quá trình kết thúc khi client A disconnect với brocker.
2. SenML
- Định nghĩa chung:

Định dạng SenML được thiết kế sao cho các bộ xử lý với khả năng hạn chế có thể dễ dàng mã
hóa đồng thời thu thập một số lượng lớn phép đo một cách hiệu quả.

- Một số thuật ngữ:


 Bản ghi SenML (SenML record): một đo lường hoặc một cấu hình cụ thể trong thời
gian xác định được trình bày bằng mô hình dữ liệu SenML.
 Gói SenML (SenML pack): một hoặc nhiều bản ghi SenML trong một cấu trúc mảng.
 Nhãn SenML (SenML label): một tên ngắn được sử dụng cho các bản ghi SenML
nhằm chỉ ra các bản ghi này có trường SenML là khác nhau.
 Trường SenML (SenML field): một thành phần của bản ghi kết hợp với nhãn SenML.
- Cấu tạo SenML:
Một gói SenML mang một mảng duy nhất đại diện cho một tập hợp các phép đo hoặc tham
số. Mảng này có thể chứa nhiều bản ghi SenML trong đó với một số trường được mô tả bên
dưới. Có hai loại trường cơ bản: cơ sở (base) và thông thường (regular). Cả 2 loại trường này
đều có thể được bao gồm trong bất kì bản ghi SenML nào.
Các trường cơ sở áp dụng cho tất cả các mục nhập trong bản ghi.
Ví dụ về SenML:
{"n":"urn:dev:ow:10e2073a01080063","u":"Cel","v":23.1}

 Cảm biến có tên (n) là urn:dev:ow:10e2073a01080063


 Đơn vị (u) là Cel
 Giá trị (v) là 23.1

Tuy nhiên để thông báo nhỏ gọn, ta có thể cho tên cơ sở nằm trong nhãn dán “bn” và
các trường “n” trong các bản ghi là một chuỗi trống nên được bỏ qua.

Ví dụ

{"bn":"urn:dev:ow:10e2073a01080063","u":"Cel","t":1.276020076e+09, "v":23.5}

{"u":"Cel","t":1.276020091e+09, "v":23.6}

- Đây là dữ liệu SenML được gửi đi


1. {"bn":"urn:dev:ow:10e2073a01080063","bt":1.320067464e+09, "bu":"%RH","v":20},
2. {"u":"lon","v":24.30621},
3. {"u":"lat","v":60.07965},
4. {"t":60,"v":20.3},
5. {"u":"lon","t":60,"v":24.30622},
6. {"u":"lat","t":60,"v":60.07965},
7. {"t":120,"v":20.7},
8. {"u":"lon","t":120,"v":24.30623},
9. {"u":"lat","t":120,"v":60.07966},
10. {"u":"%EL","t":150,"v":98},
11. {"t":180,"v":21.2},
12. {"u":"lon","t":180,"v":24.30628},
13. {"u":"lat","t":180,"v":60.07967}

- Đây là dữ liệu sau khi đã qua xử lý

1. {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067464e+09,
"v":20},
2. {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067464e+09,
"v":24.30621},
3. {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067464e+09,
"v":60.07965},
4. {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067524e+09,
"v":20.3},
5. {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067524e+09,
"v":24.30622},
6. {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067524e+09,
"v":60.07965},
7. {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067584e+09,
"v":20.7},
8. {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067584e+09,
"v":24.30623},
9. {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067584e+09,
"v":60.07966},
10. {"n":"urn:dev:ow:10e2073a01080063","u":"%EL","t":1.320067614e+09,
"v":98},
11. {"n":"urn:dev:ow:10e2073a01080063","u":"%RH","t":1.320067644e+09,
"v":21.2},
12. {"n":"urn:dev:ow:10e2073a01080063","u":"lon","t":1.320067644e+09,
"v":24.30628},
13. {"n":"urn:dev:ow:10e2073a01080063","u":"lat","t":1.320067644e+09,
"v":60.07967}

- Giải thích:
 Ở bản ghi đầu tiên, các trường tên (n) và đơn vị (u) được đặt dưới dạng trường cơ
sở. Điều này có nghĩa là ở các bản ghi sau, khi không có thay đổi ở các trường này thì
sẽ được hiểu là chúng có giá trị như ban đầu.
 Trường thời gian (t) cũng được đặt dưới dạng trường cơ sở (bt) tuy nhiên điểm khác
biệt là khi thời gian nhận giá trị mới so với thời gian ban đầu, thời gian thực tế sẽ
bằng giá trị thời gian mới nhận cộng với thời gian ban đầu (bt).
Ví dụ: {“bt”: 10}, {“t”:60} vậy thời gian thực tế là 10 cộng 60 bằng 70

You might also like