MQTT là gì trong IoT? Và IoT là gì ?

IoT là những thuật ngữ gắn liền với nhà thông minh Smart Home hay kỷ nguyên ‘công nghệ 4.0’. Nhưng bạn có biết IoT là gì ? Giao thức MQTT là gì trong IoT? Cách hoạt động của nó như thế nào ? Hãy đọc hết bài viết dưới đây nhé

1. Internet of Things - IoT là gì?:

Nói ngắn gọn Internet of Things hay IoT là sự mở rộng sức mạnh của internet vượt ra ngoài máy tính và điện thoại thông minh cho toàn bộ mọi thứ, mọi quy trình và mọi môi trường. Những thứ được kết nối, gắn kết với những thứ khác được sử dụng để thu thập thông tin, gửi lại thông tin và thi hành lệnh.

Tôi nghĩ rằng sự nhầm lẫn phát sinh không phải vì khái niệm này quá hẹp và được định nghĩa chặt chẽ, mà là vì nó quá rộng và được định nghĩa lỏng lẻo. Có thể khó có thể hiểu được khái niệm trong đầu của bạn khi có rất nhiều ví dụ và khả năng trong IoT.

Để giúp làm rõ, tôi nghĩ điều quan trọng là phải hiểu những lợi ích của việc kết nối mọi thứ với internet. Tại sao chúng ta thậm chí muốn kết nối mọi thứ với internet?

2. Cách IoT vận hành một cách đơn giản nhất.

IoT Vận Hành

Khi một cái gì đó được kết nối với internet, điều đó có nghĩa là nó có thể gửi thông tin hoặc nhận thông tin, hoặc cả hai. Khả năng gửi hoặc nhận thông tin này làm cho mọi thứ trở nên thông minh hơn. Giao thức truyền tải thường sử dụng là mqtt.

Hãy lấy điện thoại thông minh làm ví dụ. Ngay bây giờ bạn có thể nghe bất kỳ bài hát nào trên thế giới. Nhưng nó không phải vì điện thoại của bạn thực sự có mọi bài hát trên thế giới. Mà nó có nghĩa là vì mọi bài hát trên thế giới đều được lưu trữ ở một nơi khác, nhưng điện thoại của bạn có thể gửi thông tin (yêu cầu bài hát đó) và sau đó nhận thông tin (phát trực tuyến bài hát đó trên điện thoại của bạn).

Để thông minh, một thứ không cần phải có siêu lưu trữ hoặc siêu máy tính bên trong nó. Tất cả những gì phải làm là kết nối với siêu lưu trữ hoặc với một siêu máy tính.

Trong Internet of Things, tất cả những thứ đang được kết nối với internet có thể được chia thành ba loại:

  • Những thứ thu thập thông tin và sau đó gửi nó. Các cảm biến, công tắc trong nhà thông minh Smarthome thường là thu nhận tín hiệu và truyền về tủ hoặc module trung tâm qua giao thức mqtt.
  • Những thứ nhận được thông tin và sau đó hành động trên nó.
  • Và có làm cả hai. Một giải pháp Nhà thông minh Smart Home đầy đủ được xếp vào loại này.

2.1. Thu thập và gửi thông tin

Điều này có nghĩa là cảm biến. Cảm biến có thể là cảm biến nhiệt độ, cảm biến chuyển động, cảm biến độ ẩm, cảm biến chất lượng không khí, cảm biến ánh sáng, tùy bạn đặt tên cho nó. Những cảm biến này, cùng với một kết nối, cho phép chúng tự động thu thập thông tin từ môi trường rồi gửi nó về hệ thống tủ hoặc module trung tâm qua mqtt để phân tích và trả lại thông tin thi hành.

Ví Dụ: Trong nhà thông minh Smart Home. Các cảm biến sẽ thu nhận các tín hiệu chuyển động, độ ẩm, chất lượng không khí, ánh sáng,… sau đó gửi những thông tin này về bộ xử lý trung tâm hoặc điện thoại thông minh của chủ nhà.

2.2. Tiếp nhận thông tin và thi hành lệnh

Chúng ta rất quen thuộc với các máy móc nhận thông tin và sau đó hành động. Như máy in của bạn nhận được một tài liệu và nó in nó. Xe của bạn nhận được tín hiệu từ chìa khóa xe và cửa mở. Các ví dụ là vô tận.

Quay lại với ví dụ nhà thông minh trên. Các tín hiệu nhận được đã gửi về bộ xử lý trung tâm và điện thoại thông minh của gia chủ. Nếu đã được lập trình sẵn thì bộ xử lý trung tâm có thể phát tín hiệu thi hành đến các thiết bị có nhiệm vụ thi hành trong hệ thông nhà thông minh. Hay gia chủ sử dụng điện thoại để phát lệnh đến các thiết bị thi hành. Các thiết bị thi hành thường là Relay, Motor hay những thiết bị có chức năng điều khiển.

2.3. Làm cả hai

Như bạn thấy một ngôi nhà thông minh có thể làm được cả gửi,nhận tín hiệu và thi hành lệnh. Nó trở thành một hệ thống khép kín, hoàn hảo có thể tự vận hành, thông báo và bạn có thể kiểm soát dễ dàng thông qua điện thoại thông minh smartphone.

3. Tại sao IoT lại quan trọng?

IoT cung cấp cho doanh nghiệp và mọi người cái nhìn sâu sắc hơn và kiểm soát 99% các đối tượng và môi trường nằm ngoài tầm với của internet. Và bằng cách đó, IoT cho phép các doanh nghiệp và mọi người kết nối nhiều hơn với thế giới xung quanh và thực hiện những công việc cấp cao hơn, có ý nghĩa hơn.

4. Giao thức MQTT là gì trong IoT?

MQTT ( Đầy đủ là Message Queuing Telemetry Transport) là một giao thức gửi tín hiệu dạng publish/subscribe. Chúng được sử dụng cho các thiết bị Internet of Things – IoT. Tín hiệu truyền đi với băng thông thấp, có độ tin cậy cao và khả năng sử dụng được trong mạng lưới thiếu ổn định.

Bởi vì giao thức MQTT này sử dụng băng thông khá thấp trong môi trường có độ trễ cao nên nó là một giao thức lý tưởng cho các ứng dụng M2M (Machine to Machine).

MQTT cũng là giao thức sử dụng trong Facebook Messenger.

Vậy MQTT là gì?

Chỉ cần google “what is mqtt”, “mqtt slides” thì bạn đã có những thông tin đầy đủ và toàn diện nhất về câu hỏi MQTT là gì? Trong bài viết này tôi chỉ nói ngắn gọn thôi, đủ để bạn có thể hiểu được giao thức MQTT là gì. Bài viết còn bao gồm các định nghĩa “subscribe”, “publish”, “qos”, “retain”, “last will and testament (lwt)”

4.1. Publish, subscribe trong MQTT

Trong một hệ thống sử dụng giao thức MQTT, ta có nhiều node trạm (gọi là mqtt client – gọi tắt là client) được kết nối tới một MQTT server (gọi là broker). Mỗi client sẽ đăng ký một vài kênh (topic). Ví dụ như “client_1 – channel_1”, “client_1 – channel_ 2”.

Quá trình đăng ký trên gọi là “subscribe”. Cũng giống như chúng ta đăng ký nhận tin mới nhất trên một kênh Youtube vậy. Mỗi client sẽ nhận được thông tin dữ liệu khi mà một trạm nào nào khác gửi thông tin dữ liệu đến kênh đã đăng ký. Ngược lại, nếu một client gởi dữ liệu tới kênh đó, gọi là “publish”.

4.2. QoS trong MQTT

Sẽ có 3 tuỳ chọn QoS (Qualities of service) khi “publish” và “subscribe” thông tin dữ liệu:

  • QoS0: Broker – client sẽ gửi dữ liệu đúng 1 lần và quá trình gửi này được xác nhận bởi chỉ giao thức TCP/IP.
  • QoS1:Broker – client sẽ gửi thông tin dữ liệu với ít nhất 1 lần xác nhận từ đầu kia. Nghĩa là có thể có nhiều hơn 1 lần xác nhận đã nhận được thông tin dữ liệu.
  • QoS2:Broker – client đảm bảm khi gửi thông tin dữ liệu thì phía nhận chỉ nhận được đúng 1 lần, quá trình này phải trải qua 4 bước cầu.

Xem thêm QoS

Một gói tin có thể được gửi đi ở bất kỳ QoS nào, và các client cũng có thể subscribe với bất kỳ yêu cầu QoS nào. Có nghĩa là các client sẽ lựa chọn số QoS mà nó có để nhận. Ví dụ, nếu 1 gói dữ liệu được publish với QoS2, và client subscribe với QoS0, thì gói dữ liệu được nhận về client này sẽ được broker gởi với QoS0, và 1 client khác đăng ký cùng kênh này với QoS 2, thì nó sẽ được Broker gởi dữ liệu với QoS2.

4.3. Retain trong MQTT

Nếu như RETAIN được set giá trị là 1 thì khi gói tin được publish từ Client, các Broker PHẢI lưu trữ lại gói tin với QoS, và nó sẽ được gởi đến bất kỳ Client nào subscribe cùng kênh. Khi một Client kết nối tới Broker và subscribe, nó sẽ nhận được gói tin cuối cùng có RETAIN = 1 với bất kỳ kênh nào mà nó đăng ký trùng. Tuy nhiên, nếu Broker nhận được gói tin mà ở đó có QoS = 0 và RETAIN = 1, nó sẽ huỷ tất cả các gói tin có RETAIN = 1 trước đó. Và phải lưu gói tin này lại, nhưng hoàn toàn có thể huỷ bất kỳ lúc nào.

Khi publish một gói dữ liệu đến Client, Broker phải chia sẻ RETAIN = 1 nếu gói được gửi đi như là kết quả của việc subscribe mới của Client (giống như tin nhắn ACK báo subscribe thành công). RETAIN phải bằng 0 nếu không quan tâm tới kết quả của việc subscribe.

4.4. LWT trong MQTT

Gói tin LWT (last will and testament) không thực sự biết được Client có trực tuyến hay không, cái này do gói tin KeepAlive đảm nhận. Tuy nhiên gói tin LWT như là thông tin điều gì sẽ xảy đến sau khi thiết bị ngoại tuyến.

Ví dụ:

Tôi có một cảm biến, nó gởi những thông tin, dữ liệu quan trọn và rất không thường xuyên. Nó có đăng ký trước với Broker một tin nhắn lwt ở topic /node/gone-offline với tin nhắn id của nó. Và tôi cũng đăng ký theo dõi topic /node/gone-offline, sẽ gởi SMS tới điện thoại thôi mỗi khi nhận được tin nhắn nào ở kênh mà tôi theo dõi. Trong quá trình hoạt động, cảm biến luôn giữ kết nối với Broker bởi việc luôn gửi đi gói tin keepAlive. Nhưng vì một lý do gì đó, cảm biến này chuyển sang ngoại tuyến, kết nối tới Broker timeout do Broker không còn nhận được gói keepAlive. Lúc này, vì cảm biến của tôi đã đăng ký LWT, nên broker sẽ đóng kết nối của Cảm biến, đồng thời sẽ publish một gói tin là id của cảm biến vào kênh /node/gone-offline, dĩ nhiên là tôi cũng sẽ nhận được tin nhắn báo cái Cảm biến yêu quý của mình đã ngoại tuyến.

Ngoài việc đóng kết nối của Client đã ngoại tuyến, gói tin LWT có thể được định nghĩa trước và được gởi bởi Broker tới kênh nào đó khi thiết bị đăng ký LWT ngoại tuyến.

Tóm lược

Qua bài viết trên, IoT là bất kì thứ gì đều được kết nối với nhau qua mạng lưới Internet. Và QMTT là giao thức giao tiếp truyền tải thông tin dữ liệu thường sử dụng trong lĩnh vực IoT nói chung và nhà thông minh Smart Home nói riêng.