Định dạng JSON (JavaScript Object Notation)

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu giao thức MQTT(Message queue telemetry transport) và ứng dụng thu thập dữ liệu cảm biến theo MQTT (Trang 54)

JSON là dạng định dạn chúng ta hay sử dụng nhất. JSON là một chuẩn mở dựa trên văn bản có nguồn gốc từ các dạng được sử dụng để đại diện cho các cấu trúc dữ liệu đơn giản trong JavaScript. Mặc dù nó được bắt nguồn từ JavaScript, nó là ngôn ngữ độc lập và phân tích cú pháp tồn tại cho tất cả ngôn ngữ phổ biến [18].

Khi JSON được quy định như định dạng, phản ứng sẽ là một mảng JSON, trong đó mỗi phần tử trong mảng là một kết quả. Vấn đề then chốt là tên trường của cột và giá trị sẽ được kết quả. Các thành phần với các giá trị null được b qua.

Các định dạng được thiết kế để dễ dàng có thể đọc được, và cũng nên được ngay lập tức được phân tách bởi tất cả các phân tích cú pháp JSON chung.

Một số ví dụ định dạng bản tin dạng JSON

Bảng 2. 2: Dữ liệu cảm biến gia tốc bằng JSON

{"s":1, "t":"2014-07-11T15:26:37Z", "q":192,"c":1, "x":-1.234, "y":0.234, "z":-0.234 }

Bảng 2. 3: Định dạng dữ liệu cảm biến nhiệt độ bằng JSON {"s":1, "t":"2014-07-11T15:26:37Z", "q":192,"c":1, "temp1":23.6, "temp2":-273.0} 2.3.1.2 Định dạng XML

Mục tiêu của đại diện XML là có cấu trúc và dễ dàng để phân tích càng nhiều càng tốt. Do đó kiểu dữ liệu của thuộc tính được thiết lập tương ứng với các loại ngữ nghĩa của việc giải quyết của các thành phần mạng. Các kiểu dữ liệu của thuộc tính định danh (ID) của các yếu tố nút, và cảm biến là chuỗi nhưng sử dụng số nguyên được khuyến khích mạnh mẽ. Tên thuộc tính của phần tử mạng là tên mô tả con người đọc được tùy chọn cho mạng. Tên thuộc tính của các phần tử nút là tên mô tả con người đọc được tùy chọn cho các nút [12].

Các kiểu dữ liệu của thuộc tính id và nội dung của thành phần nguyên tố là xs: string để cho phép bất kỳ loại dữ liệu được truyền đi như là thành phần đo lường tùy loại số đo và tên thành phần. Điều này cho phép mà về mặt lý thuyết bất kỳ loại dữ liệu có thể được truyền đi như là nội dung của thành phần đo lường. Ví dụ: một phần của một tài liệu XML hoặc một số định dạng khác có thể được đặt trong nội dung thành phần đo lường sử dụng phần CDATA. Dữ liệu nhị phân vận chuyển dưới dạng giá trị thành phần được mã hóa với thuật toán Base 64 [12].

Hình 2. 8: Thông điệp đo lƣờng trong XML [12]

Hình 2. 9: Hai phép đo nhiệt độ bằng hai cảm biến của một nút [12]

2.3.1.3 Định dạng CSV

Mục tiêu của các đại diện CSV là để được như nh gọn càng tốt có chứa dù tất cả các thông tin tương tự như các đại diện XML [12].

Một số định dạng bản tin dạng CSV:

Hình 2. 11: Bản tin đo nhiệt độ với các thông tin cảnh báo [12].

Hình 2. 12: Bản tin đo lƣờng gia tốc (x, y, z, pitch, roll, yaw, tổng số) [12]

2.3.2 Ứng dụng của dữ liệu cảm biến trong IoT

Dữ liệu cảm biến được sử dụng trong rất nhiều các loại ứng dụng trong thực tế.

Dưới đây là một vài ví dụ về ứng dụng của các cảm biến, chỉ để cung cấp cho một ý tưởng về số lượng và sự đa dạng của các ứng dụng của chúng:

Một phát hiện gia tốc những thay đổi trong gia tốc trọng trường trong một thiết bị đã được cài đặt, chẳng hạn như một điện thoại thông minh hoặc một bộ điều khiển trò chơi, để xác định khả năng tăng tốc, độ nghiêng và độ rung.

Một photosensor phát hiện sự hiện diện của ánh sáng nhìn thấy, truyền tia hồng ngoại (IR) hoặc tia cực tím (UV) năng lượng.

Lidar, một phương pháp laser dựa trên phát hiện, phạm vi phát hiện và lập bản đồ, thường sử dụng một năng lượng thấp, mắt an toàn tia laser xung làm việc kết hợp với một máy ảnh.

Một charge-coupled thiết bị (CCD) các cửa hàng và hiển thị dữ liệu cho một hình ảnh trong một cách mà mỗi điểm ảnh được chuyển đổi thành điện tích, cường độ có liên quan đến một màu sắc trong quang phổ màu sắc.

Cảm biến lưới điện thông minh có thể cung cấp dữ liệu thời gian thực về điều kiện lưới điện, cúp phát hiện, những lỗi lầm và tải và báo động kích hoạt.

Mạng cảm biến không dây kết hợp đầu dò chuyên ngành với một cơ sở hạ tầng thông tin liên lạc để theo dõi và ghi điều kiện tại địa điểm khác nhau. Các thông số theo dõi thường bao gồm nhiệt độ, độ ẩm, áp suất, hướng gió và tốc độ, cường độ chiếu sáng, cường độ rung động, cường độ âm thanh, điện áp điện-đường, nồng độ hóa chất, mức độ ô nhiễm và các chức năng của cơ thể sống.

2.4 Kết luận chƣơng 2

Dữ liệu cảm biến ngày nay được dùng rất phổ biến, nhất là khi công nghệ IoT ra đời càng làm cho sự lan t a và phát triển của nó càng được mở rộng hơn nữa trong thực tế. Trong chương 2 chúng ta đã được biết về các công nghệ liên quan đến giải pháp thu thập dữ liệu cảm biến đó là mạng cảm biến không dây, đó là IoT Gateway một phần không thể thiếu được trong lĩnh vực IoT hiện tay cùng với đó những định dạng dữ liệu cảm biến cũng là một vấn đề cần quan tâm. Xuất phát từ những nội dung, kiến thức đã được tìm hiểu từ chương 1 và chương 2 về MQTT, IoT và các công nghệ đi kèm với nó trong chương 3 chúng ta sẽ tiến hành xây dựng một hệ thống IoT thu thập dữ liệu cảm biến theo giao thức MQTT để từ đó có thể đánh giá đề xuất áp dụng công nghệ này vào xây dựng trong các ứng dụng IoT phục vụ theo yêu cầu, mục đích của chúng ta.

CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG IOT THU THẬP DỮ LIỆU CẢM BIẾN THEO GIAO THỨC MQTT

Với việc phát triển ngày càng lớn mạnh của IoT thì việc thu thập dữ liệu và quản quản lý dữ liệu này là một thách thức đối với chúng ta.

3.1 Giới thiệu về bài toán thu thập dữ liệu IoT và dữ liệu cảm biến

Mặt trái của IoT là việc sử dụng hầu hết các thiết bị đều được dùng để thu thập dữ liệu và gửi qua mạng kết nối. Các vòng đeo tay thu thập dữ liệu hoạt động và phân tích trên website, từ đó người dùng có thể đặt mục tiêu hoặc cạnh tranh với những người dùng khác. Các sản phẩm nhà thông minh ghi lại mức năng lượng sử dụng, cho phép chủ nhà sử dụng gas và điện hiệu quả hơn bằng cách kiểm soát lượng nhiệt. Biển báo thông minh theo dõi lưu lượng xe cộ qua lại, từ đó những con đường có thể được sử dụng hiệu quả hơn. Lượng dữ liệu trực tuyến đã sắp tới mức bùng nổ.

IDC và EMC ước tính rằng tới năm 2020, sẽ có 44 nghìn tỉ gigabyte dữ liệu trên thế giới và 10 trong số đó là đến từ các thiết bị IoT. Mức này tương đương với 4.4 nghìn tỉ gigabyte, đồng thời cũng tương đương với mức dung lượng tất cả dữ liệu trên thế giới ước tính vào năm 2013. Nói cách khác, sức chứa của tất cả các trung tâm dữ liệu trực tuyến trong năm 2013 chỉ đủ để lưu trữ dữ liệu IoT trong năm 2020. Điều này sẽ có ảnh hưởng lớn tới cách các trung tâm dữ liệu làm việc để chúng có thể chịu được lượng dữ liệu lưu trữ trên đám mây khi các dữ liệu này được tạo ra và trao đổi [18].

Còn quan trọng hơn cả là yêu cầu kết nối để giúp tất cả các thiết bị này giao tiếp với nhau, để có thể gửi dữ liệu đến và đi kh i kho lưu trữ dữ liệu trực tuyến. Giao thức IPv6 được tạo đã phần nào nghĩ tới tương lai này khi nó hỗ trợ 2128 địa chỉ, so với chỉ 232 địa chỉ của giao thức IPv4. Lưu lượng dữ liệu trên 1 thiết bị cá nhân có thể không quá nhiều. Bluetooth cũng có thể đủ dùng với nhiều mạng cảm biến đòi h i mức năng lượng thấp, và rất nhiều trong số này cũng được tải lên rải rác chứ không stream mọi thông tin cùng một lúc [18].

3.2 Xây dựng một ứng dụng IoT thử nghiệm thu thập dữ liệu cảm biến với IoT Gateway và giao thức MQTT. với IoT Gateway và giao thức MQTT.

3.2.1 Giới thiệu về nền tảng IBM Bluemix

IBM Bluemix: Là sản phẩm được tạo ra bởi IBM sử dụng nền tảng điện toán đám mây kết hợp nền tảng như một dịch vụ (platform as a service - PaaS) với cơ sở hạ tầng như một dịch vụ (infrastructure as a service - IaaS). Ngoài ra, Bluemix có một danh mục phong phú các dịch vụ điện toán đám mây có thể dễ dàng tích hợp với PaaS và IaaS để xây dựng các ứng dụng kinh doanh nhanh chóng [11].

Bluemix có triển khai điện toán đám mây phù hợp với nhu cầu của mọi người cho dù là một doanh nghiệp nh có kế hoạch mở rộng quy mô, hoặc một doanh nghiệp lớn đòi h i phải có thêm sự riêng biệt. Chúng ta có thể phát triển trong một đám mây mà không có phân biệt biên giới, nơi chúng ta có thể kết nối giữa dịch vụ tư nhân của chúng ta với các dịch vụ công cộng Bluemix sẵn có từ IBM. Chúng ta có thể truy cập các ứng dụng, dịch vụ và cơ sở hạ tầng trong Bluemix và sử dụng dữ liệu, hệ thống, quy trình, các công cụ PaaS và công cụ IaaS hiện có. Các nhà phát triển có thể đưa vào các hệ sinh thái phát triển nhanh chóng của các dịch vụ có sẵn và khung thời gian chạy để xây dựng các ứng dụng sử dụng các phương pháp lập trình có nhiều thứ tiếng.

Với Bluemix, chúng ta không còn phải đầu tư lớn trong phần cứng để kiểm tra hoặc chạy một ứng dụng mới. Thay vào đó, chúng quản lý tất cả cho những gì chúng ta sử dụng. Bluemix cung cấp mô hình triển khai tích hợp như công cộng (public), dành riêng, và theo địa phương [11].

IBM cho phép chúng ta:

 Triển khai tính toán hiệu suất cao và cơ sở hạ tầng lưu trữ an toàn tại trung tâm dữ liệu đám mây của IBM trên thế giới.

 Kiểm tra và thông qua một loạt các dịch vụ điện toán đám mây và khả năng từ IBM, cộng đồng nguồn mở, và các nhà phát triển bên thứ ba.

 Kết nối với tất cả các hệ thống cũ và ứng dụng từ một nền tảng điện toán đám mây mở rộng duy nhất thông qua khả năng của mạng và các API riêng.

 Tăng lên và hạ xuống giảm nguồn tài nguyên trong thời gian thực như nhu cầu kinh doanh của chúng ta hoặc khối lượng công việc đòi h i sự thay đổi.

Hình 2. 1: Các dịch vụ Bluemix cung cấp [11]

IBM Bluemix cung cấp rất nhiều tính năng hiệu quả đó là:

 “Ứng dụng”: Các bảng điều khiển cung cấp tất cả mọi thứ cần thiết cho chúng ta để thực thi một ứng dụng

 “Dịch vụ”: Bảng điều khiển cho phép truy cập vào các dịch vụ của IBM và của các nhà cung cấp thứ ba bao gồm: Watson, Internet of Things, Analytics, Mobile, và DevOps.

 “Hạ tầng”: Các bảng điều khiển cơ sở hạ tầng cung cấp dịch vụ khác nhau để đáp ứng nhu cầu cơ sở hạ tầng điện toán đám mây.

Hình 3. 2 Kiến trúc Bluemix Cloud Foundry [11]

Chúng có thể triển khai các ứng dụng với các khu vực khác nhau Bluemix. Chúng ta có thể chọn để triển khai tại một khu vực hoặc trên nhiều khu vực:

Hình 3. 3: Mô hình triển khai ứng dụng nhiều vùng địa lý của IBM Bluemix [11]

Các thức làm việc của Bluemix Cloud Foundry:

Khi chúng ta triển khai một ứng dụng với Bluemix Cloud Foundry, ta phải cấu hình Bluemix với đầy đủ thông tin để hỗ trợ các ứng dụng.

 Đối với một ứng dụng di động, Bluemix chứa một vật đại diện tại ứng dụng di động, chẳng hạn như các dịch vụ mà các ứng dụng điện thoại di động sử dụng để giao tiếp với một máy chủ.

 Đối với một ứng dụng web, chúng ta phải đảm bảo rằng thông tin về thời gian chạy và khung được truyền đạt tới Bluemix, để Bluemix có thể thiết lập các môi trường thực thi thích hợp để chạy các ứng dụng. Mỗi môi trường thực thi, bao gồm cả ứng dụng điện thoại di động và web được tách biệt từ môi trường thực thi của các ứng dụng khác. Các môi trường thực hiện đang bị tách biệt mặc dù các ứng dụng đang ở trên một máy vật lý [11].

Hình 3. 4: Triển khai một ứng dụng [11]

Khi chúng ta tạo một ứng dụng và triển khai nó đến Bluemix Cloud Foundry, môi trường Bluemix xác định một máy chủ ảo thích hợp để gửi các ứng dụng. Đối với một ứng dụng điện thoại di động, một back-end di động được tạo ra trên Bluemix. Bất kỳ mã cho các ứng dụng điện thoại di động chạy trong đám mây cũng chạy trong môi trường Bluemix. Đối với một ứng dụng web, mã chạy trong đám mây là các ứng dụng riêng của mình mà các nhà phát triển để triển khai Bluemix. Việc xác định các máy chủ ảo được dựa trên một số yếu tố, bao gồm:

 Các tải hiện tải có trên máy tính

 Môi trường thực thi và nền tảng được hỗ trợ bởi các máy ảo

Sau khi một máy chủ ảo được chọn, một ứng dụng quản lý ứng dụng trên mỗi máy chủ ảo cài đặt các nền tảng và thời gian thực thi thích hợp cho các ứng

dụng. Sau đó, các ứng dụng có thể được triển khai vào các nền tảng đó. Khi triển khai hoàn tất, các hiện vật ứng dụng được bắt đầu [11].

Hình 3. 5: Thiết kế của một máy chủ ảo [11]

Trong mỗi máy chủ ảo, một ứng dụng quản lý giao tiếp với phần còn lại của cơ sở hạ tầng Bluemix, và quản lý các ứng dụng được triển khai đến các máy chủ ảo.

Mỗi máy chủ ảo có vùng chứa để tách và bảo vệ các ứng dụng. Trong mỗi thành phần, Bluemix cài đặt các nền tảng và thời gian chạy thích hợp được yêu cầu cho mỗi ứng dụng.

Khi ứng dụng được triển khai, nếu nó có một giao diện web (như đối với một ứng dụng web Java), hoặc các dịch vụ dựa trên REST khác (chẳng hạn như dịch vụ điện thoại di động tiếp xúc công khai cho các ứng dụng điện thoại di động), người sử dụng các ứng dụng có thể giao tiếp với nó bằng cách sử dụng các yêu cầu HTTP bình thường.

Hình 3. 6: Triển khai một ứng dụng trên IBM Cloud Foundry [11]

Mỗi ứng dụng có thể có một hoặc nhiều URL liên kết với nó, nhưng họ phải tất cả các điểm đến điểm cuối Bluemix. Khi có một request đến, Bluemix xem xét các yêu cầu, xác định ứng dụng nào đó được dành cho, sau đó chọn một thể hiện của ứng dụng nhận yêu cầu.

Với việc sử dụng Bluemix chúng ta có thể:

 Triển khai các ứng dụng trong vài giây chỉ với vài cú click chuột đơn giản

 Tùy chọn công cụ phát triển ứng dụng: Dùng bất kỳ công cụ phát triển nào chúng ta ưa thích!

 Tạo ứng dụng nhanh chóng với các dịch vụ xây dựng sẵn: cung cấp một loạt các khả năng tích hợp cho mọi ý tưởng.

 Tích hợp với các ứng dụng nội bộ của doanh nghiệp

 Giám sát, phân tích trạng thái các ứng dụng theo thời gian thực

Chúng ta có thể triển khai ứng dụng trên Bluemix bằng giao diện hoặc bằng công cụ command line của nền tảng Cloud Foundry [11].

3.2.2 Giới thiệu về ứng dụng

Ứng dụng IoT này cho phép chúng ta dễ dàng truy cập cảm biến của thiết bị di động và lấy thông tin như là thiết bị của IoT và gửi thông tin tới nền tảng IoT Gateway là IBM Bluemix thông qua internet.

Sơ đồ bên bên dưới cung cấp một cái nhìn tổng quan về cách thức một thiết bị có thể tương tác với các nền tảng Watson IoT của IBM. Thiết bị di động của chúng ta được đăng ký với IoT Gateway của IBM, và các API mã được tạo ra cho các ứng dụng mà tiêu thụ dữ liệu từ thiết bị của chúng ta.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu giao thức MQTT(Message queue telemetry transport) và ứng dụng thu thập dữ liệu cảm biến theo MQTT (Trang 54)

Tải bản đầy đủ (PDF)

(78 trang)