Phần 7. Chuyển dữ liệu cây trồng lên công nghệ đám mây

0
725

Bài viết trước đã xem xét cách kết nối giữa hệ thống tưới cây với broker MQTT và điều khiển rơ le từ server code chạy cục bộ. Đây là các thành phần chính của hệ thống tưới nước tự động kết nối internet. Bài viết này sẽ giới thiệu về đám mây, các khả năng mà dịch vụ đám mây công cộng cung cấp cho các thiết bị IoT và cách di chuyển dữ liệu cây trồng từ public MQTT broker sang các dịch vụ đám mây.

Các nội dung chính của bài viết:

1. Khái niệm công nghệ đám mây?

2. Cách đăng ký dịch vụ đám mây

3. Các dịch vụ IoT đám mây

4. Cách tạo dịch vụ IoT trên đám mây

5. Cách giao tiếp với IoT Hub

6. Cách kết nối thiết bị với dịch vụ IoT

1. Khái niệm công nghệ đám mây

Trước khi có công nghệ đám mây, khi một công ty muốn cung cấp dịch vụ  cho nhân viên (cơ sở dữ liệu hoặc nơi lưu trữ File) hoặc trang web, họ sẽ xây dựng và điều hành một trung tâm dữ liệu, gồm nhiều máy tính. Công ty sẽ phải quản lý mọi thứ, bao gồm:

– Mua máy tính

– Bảo trì phần cứng

– Nguồn điện và làm mát

– Kết nối mạng

– Bảo mật, gồm bảo mật tòa nhà và bảo mật phần mềm trên máy tính

– Cài đặt và cập nhật phần mềm

Để đảm bảo tất cả các yếu tố trên rất tốn kém, đòi hỏi nhiều nhân viên lành nghề và rất chậm thay đổi khi cần thiết. Ví dụ: trước mỗi kỳ nghỉ lễ, các shop bán hàng trực tuyến cần lên kế hoạch trước nhiều tháng để mua thêm phần cứng, cấu hình, cài đặt và cài đặt phần mềm để chạy quy trình bán hàng. Sau khi kỳ nghỉ lễ kết thúc, doanh số bán hàng giảm, máy tính sẽ tạm ngưng sử dụng cho đến mùa lễ năm sau.

Ý tưởng “Máy tính của người khác”

Dịch vụ đám mây thường được gọi là “máy tính của người khác”. Ý tưởng ban đầu rất đơn giản: trong những trường hợp trên, sẽ có các nhà cung cấp quản lý các trung tâm dữ liệu khổng lồ. Các nhà cung cấp này sẽ chịu trách nhiệm mua và cài đặt phần cứng, quản lý nguồn và làm mát, kết nối mạng, bảo mật tòa nhà, cập nhật phần cứng và phần mềm trong khi khách hàng sẽ chỉ cần thuê dịch vụ theo nhu cầu của mình. Các trung tâm dữ liệu đám mây này có mặt trên khắp thế giới với quy mô rất lớn.

Hình ảnh dưới đây được chụp cách đây vài năm tại một trung tâm dữ liệu đám mây của Microsoft là kích thước ban đầu cùng với kế hoạch mở rộng. Diện tích được giải tỏa để mở rộng là hơn 5 km2.

Các trung tâm dữ liệu này yêu cầu điện năng lớn đến mức một số trung tâm có trạm phát điện riêng. Khi so với các trung tâm dữ liệu nhỏ, các trung tâm dữ liệu với quy mô lớn của các nhà cung cấp dịch vụ đám mây sẽ hoạt động hiệu quả hơn và thân thiện với môi trường hơn do chủ yếu sử dụng năng lượng sạch. Đồng thời các nhà cung cấp đám mây làm việc liên tục để giảm chất thải, giảm lượng nước sử dụng và trồng lại rừng để bù đắp cho những nơi phải chặt phá để có không gian xây dựng trung tâm dữ liệu.

Sử dụng đám mây giúp các công ty giảm chi phí, cho phép tập trung vào những lĩnh vực chuyên sâu. Các công ty không cần phải thuê hoặc mua không gian trung tâm dữ liệu hay thuê các chuyên gia và trả tiền cho các nhà cung cấp để có kết nối và nguồn điện. Thay vào đó, hàng tháng họ chỉ cần thanh toán một hóa đơn cho nhà cung cấp dịch vụ đám mây với tất cả các dịch vụ. Trong khi đó các nhà cung cấp dịch vụ đám mây có thể tận dụng lợi ích của kinh tế quy mô (economies of scale) để giảm chi phí, mua hàng loạt máy tính với chi phí thấp hơn, đầu tư vào công cụ để giảm khối lượng công việc nhằm bảo trì, thậm chí thiết kế và xây dựng phần cứng riêng để cải thiện dịch vụ đám mây.

Microsoft Azure

Azure là dịch vụ đám mây dành cho nhà phát triển của Microsoft được sử dụng trong bài viết này. Video dưới đây giới thiệu ngắn gọn tổng quan về Azzure.

2. Cách đăng ký dịch vụ đám mây

Để sử dụng các dịch vụ trên đám mây, cần đăng ký với nhà cung cấp dịch vụ đám mây. Bài viết này giới thiệu cách đăng ký gói Microsoft Azure. Chi tiết đăng ký trong bài viết có thể thay đổi được.

Có hai loại đăng ký Azure miễn phí:

Azure for Students: Dành cho cho sinh viên 18 tuổi trở lên. Để đăng ký, sinh viên không cần thẻ tín dụng và sử dụng địa chỉ email trường học để xác nhận. Khi đăng ký thành công, người dùng nhận được US$100 để chi tiêu cho tài nguyên đám mây với các dịch vụ miễn phí bao gồm phiên bản miễn phí của dịch vụ IoT có thời hạn 12 tháng, có thể gia hạn hàng năm nếu vẫn là sinh viên.

Azure free subscription: Dành cho mọi người dùng không phải là sinh viên. Người dùng cần thẻ tín dụng để đăng ký nhưng sẽ không bị trừ tiền vào tài khoản mà chỉ sử dụng để xác minh là người thật, không phải robot. Khi đăng ký thành công, người dùng nhận được $200 tín dụng để sử dụng mọi dịch vụ trong 30 ngày đầu tiên, với các cấp dịch vụ Azure miễn phí. Khi sử dụng hết tín dụng, thẻ không bị tính phí trừ khi chuyển đổi thành thanh toán khi đăng ký.

Microsoft cung cấp đăng ký “Azure for Students Starter” cho sinh viên dưới 18 tuổi, nhưng thời điểm này này không hỗ trợ bất kỳ dịch vụ IoT nào.

* Cách đăng ký đám mây miễn phí

Sinh viên từ 18 tuổi trở lên có thể đăng ký Azure for Students. Người dùng cần xác nhận bằng địa chỉ email của trường bằng hai cách:

– Đăng ký gói GitHub student developer tại education.github.com/pack. Gói này cho phép truy cập một loạt các công cụ và ưu đãi, bao gồm GitHub và Microsoft Azure. Sau khi đăng ký gói deverloper, có thể kích hoạt ưu đãi Azure dành cho sinh viên.

– Đăng ký trực tiếp tài khoản Azure for Students tại  azure.microsoft.com/free/students.

Với người dùng không là sinh viên hoặc không có địa chỉ email trường học hợp lệ, thì có thể đăng ký Azure Free tại azure.microsoft.com/free

3. Các dịch vụ IoT đám mây

Public MQTT Broker được giới thiệu ở bài viết trước là công cụ tuyệt vời để học tập nhưng để sử dụng trong môi trường thương mại thì tồn tại một số hạn chế:

– Độ tin cậy: là dịch vụ miễn phí không có đảm bảo và bị mất bất kỳ lúc nào.

– Bảo mật: Do tính công khai nên bất kỳ ai cũng có thể tiếp cận với các phép đo từ xa của bạn hoặc gửi lệnh để điều khiển phần cứng.

– Hiệu suất: Do chỉ dành cho một số tin nhắn thử nghiệm, vì vậy không gửi được lượng lớn tin nhắn.

– Kiểm soát: Không có cách nào để biết những thiết bị nào được kết nối

Các dịch vụ IoT trên đám mây có thể khắc phục được những tồn tại trên. Chúng được duy trì bởi các nhà cung cấp đám mây lớn, tập trung vào độ tin cậy và luôn sẵn sàng khắc phục mọi vấn đề phát sinh. Các dịch vụ này cũng đảm bảo tính bảo mật cao để ngăn chặn tin tặc đọc dữ liệu hoặc gửi các lệnh giả mạo, có hiệu suất cao, có khả năng xử lý hàng triệu tin nhắn mỗi ngày, tận dụng lợi thế của đám mây để mở rộng quy mô khi cần thiết.

Mặc dù hàng tháng, người dùng phải trả phí cho những tiện ích này, nhưng hầu hết các nhà cung cấp dịch vụ đám mây đều cung cấp phiên bản miễn phí của dịch vụ IoT với số lượng tin nhắn giới hạn mỗi ngày hoặc các thiết bị kết nối. Phiên bản miễn phí này thường đủ để nhà phát triển tìm hiểu về dịch vụ. Bài viết này cũng sử dụng phiên bản miễn phí.

Các thiết bị IoT kết nối với dịch vụ đám mây bằng cách sử dụng device SDK (thư viện cung cấp mã hoạt động với các tính năng của dịch vụ) hoặc trực tiếp thông qua giao thức truyền thông như MQTT hoặc HTTP. Device SDK thường là cách dễ thực hiện nhất vì nó có thể xử lý mọi thứ, như biết chủ đề nào cần publish hoặc subscribe và cách xử lý bảo mật.

Sau đó, thiết bị giao tiếp với các phần khác trong ứng dụng qua dịch vụ này (tương tự như cách gửi phép đo từ xa và nhận lệnh qua MQTT) sử dụng service SDK hoặc một thư viện tương tự. Device gửi tin nhắn đến service để các thành phần khác của ứng dụng đọc sau đó gửi trở lại thiết bị.

Các dịch vụ này triển khai bảo mật bằng cách nắm thông tin về tất cả các thiết bị kết nối và gửi dữ liệu, đăng ký trước các thiết bị với dịch vụ hoặc cung cấp cho thiết bị khóa bí mật hoặc chứng nhận để tự đăng ký với dịch vụ lần đầu tiên kết nối. Các tin nhắn gửi từ các thiết bị không xác định không thể kết nối sẽ bị bỏ qua.

Các thành phần khác của ứng dụng có thể kết nối với dịch vụ IoT và tìm hiểu về tất cả các thiết bị được kết nối hoặc đăng ký, đồng thời giao tiếp trực tiếp hàng loạt hoặc riêng lẻ.

Các dịch vụ IoT cũng triển khai các khả năng bổ sung được kết nối với dịch vụ. Nếu muốn lưu trữ tất cả các tin nhắn đo từ xa gửi đến từ tất cả các thiết bị trong cơ sở dữ liệu, chỉ cần vài cú nhấp chuột để kết nối dịch vụ với cơ sở dữ liệu và truyền dữ liệu vào.

4. Cách tạo dịch vụ IoT trên đám mây

Sau khi đăng ký Azure, người dùng có thể đăng ký dịch vụ IoT. Dịch vụ IoT của Microsoft được gọi là Azure IoT Hub.

Các dịch vụ đám mây có sẵn trong Azure được định cấu hình thông qua cổng thông tin điện tử (web-based portal) hoặc thông qua giao diện dòng lệnh (CLI- command-line interface).

* Cách cài đặt Azure CLI

Trước tiên phải cài đặt Azure CLI trên PC hoặc Mac.

1. Làm theo hướng dẫn trong tài liệu Azure CLI để cài đặt CLI.

2. Azure CLI hỗ trợ một số tiện ích mở rộng để bổ sung khả năng quản lý một loạt các dịch vụ Azure. Cài đặt tiện ích mở rộng IoT bằng cách chạy lệnh sau từ dòng lệnh hoặc terminal:

az extension add --name azure-iot

3. Chạy lệnh dưới đây để đăng nhập vào subscription Azure từ Azure CLI.

az login

Một trang web sẽ khởi chạy trong trình duyệt mặc định. Đăng nhập bằng tài khoản đã sử dụng để subscription Azure, sau đó đóng tab trình duyệt.

4. Nếu có nhiều subscription Azure, như subscription của trường học và subscription riêng Azure cho sinh viên, cần chọn một subscription. Chạy lệnh sau để liệt kê tất cả các đăng ký có quyền truy cập:

az account list --output table

Ở đầu ra sẽ thấy tên của từng subscription với SubscriptionId tương ứng.

➜  ~ az account list --output table
Name                    CloudName    SubscriptionId                        State    IsDefault
----------------------  -----------  ------------------------------------  -------  -----------
School-subscription     AzureCloud   cb30cde9-814a-42f0-a111-754cb788e4e1  Enabled  True
Azure for Students      AzureCloud   fa51c31b-162c-4599-add6-781def2e1fbf  Enabled  False

Sử dụng lệnh sau để chọn subscription mong muốn:

az account set --subscription <SubscriptionId>

Thay thế <SubscriptionId> bằng Id của gói đăng ký muốn sử dụng. Sau khi chạy lệnh này, chạy lại lệnh để liệt kê các tài khoản. Khi đó sẽ thấy cột IsDefault sẽ được đánh dấu là True cho subscription vừa đặt.

* Cách tạo một nhóm tài nguyên

Các dịch vụ Azure, như các phiên bản IoT Hub, máy ảo, cơ sở dữ liệu hoặc dịch vụ AI, được gọi là tài nguyên. Mọi tài nguyên tồn tại bên trong Resource Group.

Resource Group có thể quản lý nhiều dịch vụ cùng một lúc.

1. Có nhiều trung tâm dữ liệu Azure trên khắp thế giới, được chia thành các khu vực. Khi tạo tài nguyên Azure hoặc Resource Group, phải chỉ định nơi tạo. Chạy lệnh sau để nhận danh sách các vị trí:

az account list-locations --output table

Có một loạt các vị trí hiện ra.

    ➜  ~ az account list-locations --output table
DisplayName               Name                 RegionalDisplayName
------------------------  -------------------  -------------------------------------
East US                   eastus               (US) East US
East US 2                 eastus2              (US) East US 2
South Central US          southcentralus       (US) South Central US
...

Ghi lại giá trị từ cột Name của vùng gần nhất. Tìm các khu vực trên bản đồ tại trang Azure geographies.

2. Chạy lệnh sau để tạo một nhóm tài nguyên được gọi là soil-moisture-sensor. Tên nhóm tài nguyên phải là duy nhất trong đăng ký.

az group create --name soil-moisture-sensor \
                --location <location>

Thay thế <location> với vị trí đã chọn ở bước trước.

* Cách tạo IoT Hub

Bây giờ có thể tạo tài nguyên IoT Hub trong Resource Group.

.1 Sử dụng lệnh sau để tạo tài nguyên IoT Hub:

az iot hub create --resource-group soil-moisture-sensor \
                  --sku F1 \
                  --partition-count 2 \
                  --name <hub_name>

Thay thế <hub_name> bằng tên của Hub. Tên này sử dụng trong một URL trỏ đến hub, vì vậy cần phải là duy nhất. Sử dụng soil-moisture-sensor- và thêm một số nhận dạng duy nhất vào cuối, như một số từ ngẫu nhiên hoặc tên của người dùng.

Tùy chọn –sku F1 yêu cầu sử dụng một mức (tier) miễn phí hỗ trợ 8.000 tin nhắn mỗi ngày với hầu hết các tính năng của cấp đầy đủ.

Các mức giá khác nhau của các dịch vụ Azure được gọi là các mức. Mỗi mức có chi phí khác nhau và cung cấp các tính năng hoặc khối lượng dữ liệu khác nhau.

Tìm hiểu thêm về giá cả tại Azure IoT Hub pricing guide.

Tùy chọn –partition-count 2 xác định số lượng luồng dữ liệu mà IoT Hub hỗ trợ, có nhiều phân vùng hơn giúp giảm việc chặn dữ liệu khi đọc và ghi nhiều từ IoT Hub. Các phân vùng nằm ngoài phạm vi của các bài viết này, nhưng cần đặt giá trị này để tạo IoT Hub cấp miễn phí.

Mỗi đăng ký chỉ có một tier IoT Hub miễn phí. Cần khoảng một phút hoặc lâu hơn một chút để tạo IoT Hub.

5. Cách giao tiếp với IoT Hub

Bài viết trước đã giới thiệu cách sử dụng MQTT và gửi tin nhắn qua lại về các chủ đề khác nhau với các mục đích khác nhau. IoT Hub có một số cách để thiết bị và Hub giao tiếp với nhau.

IoT Hub kết nối với thiết bị sử dụng MQTT, HTTPS hoặc AMQP.

– Tin nhắn từ thiết bị tới đám mây (D2C): Các tin này được gửi từ thiết bị đến IoT Hub như đo từ xa, sau đó được các mã ứng dụng đọc.

Về cơ bản, IoT Hub sử dụng dịch vụ Azure được gọi là Event Hubs. Việc viết code để đọc các tin nhắn gửi đến trung tâm được gọi là các event.

– Tin nhắn từ đám mây tới thiết bị (C2D): Các tin này được gửi từ mã ứng dụng thông qua IoT Hub tới thiết bị IoT.

Yêu cầu phương thức trực tiếp: đây là các thông báo gửi từ mã ứng dụng thông qua IoT Hub đến thiết bị IoT để đưa ra yêu cầu với thiết bị, ví dụ như điều khiển thiết bị truyền động. Những thông báo này yêu cầu phản hồi để biết thông báo được xử lý thành công hay chưa.

– Bản sao thiết bị: là các tài liệu JSON được đồng bộ hóa giữa thiết bị và IoT Hub, sử dụng để lưu trữ cài đặt hoặc các thuộc tính khác được thiết bị báo cáo hoặc IoT Hub đặt trên thiết bị (mong muốn).

IoT Hub lưu trữ các tin nhắn và các yêu cầu phương thức trực tiếp trong một khoảng thời gian định cấu hình (mặc định là một ngày). Vì vậy nếu một thiết bị hoặc mã ứng dụng mất kết nối, nó vẫn có thể truy xuất các tin nhắn đã gửi trong khi ngoại tuyến sau khi kết nối lại. Bản sao thiết bị được lưu vĩnh viễn trong IoT Hub nên bất kỳ lúc nào cũng có thể kết nối lại thiết bị và nhận được bản sao mới nhất.

6. Cách kết nối thiết bị với dịch vụ IoT

Sau khi tạo Hub, thiết bị IoT có thể kết nối với Hub. Chỉ các thiết bị đã đăng ký mới có thể kết nối với dịch vụ, do đó trước tiên cần đăng ký thiết bị. Khi đăng ký, có thể lấy lại một chuỗi kết nối mà thiết bị sử dụng, các chuỗi này dành riêng cho thiết bị và chứa thông tin về IoT Hub, thiết bị và khóa bí mật cho phép kết nối thiết bị.

Chuỗi kết nối là thuật ngữ chung cho một đoạn văn bản có chứa chi tiết kết nối, được sử dụng khi kết nối với các IoT Hub, cơ sở dữ liệu và nhiều dịch vụ khác. Chuỗi kết nối bao gồm một số nhận dạng cho dịch vụ, như URL và thông tin bảo mật như khóa bí mật, được chuyển tới các SDK để kết nối với dịch vụ.

Các chuỗi kết nối phải được giữ an toàn để đảm bảo bảo mật.

* Cách đăng ký thiết bị IoT

Đăng ký thiết bị IoT với IoT Hub bằng Azure CLI.

1. Chạy lệnh sau để đăng ký thiết bị:

az iot hub device-identity create --device-id soil-moisture-sensor \
                                  --hub-name <hub_name>

Thay thế <hub_name> bằng tên đã sử dụng cho IoT Hub.

Khi đó sẽ tạo ra một thiết bị có ID là soil-moisture-sensor.

2. Khi kết nối với IoT Hub bằng SDK, thiết bị IoT cần sử dụng chuỗi kết nối cung cấp URL của Hub với khóa bí mật. Chạy lệnh sau để lấy chuỗi kết nối:

az iot hub device-identity connection-string show --device-id soil-moisture-sensor \
                                                  --output table \
                                                  --hub-name <hub_name>

Thay thế <hub_name> bằng tên đã sử dụng cho IoT Hub.

Lưu trữ chuỗi kết nối hiển thị ở đầu ra.

* Cách kết nối thiết bị IoT với đám mây

Các link bên dưới để kết nối thiết bị IoT với đám mây:

Arduino – Wio Terminal

Single-board computer – Raspberry Pi/Virtual IoT device

* Cách theo dõi các event

Hiện tại không cập nhật server code mà sử dụng Azure CLI để theo dõi các event từ thiết bị IoT.

1. Đảm bảo thiết bị IoT đang chạy và gửi các giá trị đo từ xa độ ẩm của đất

2. Chạy lệnh sau để theo dõi các thông báo gửi đến IoT Hub:

az iot hub monitor-events --hub-name <hub_name>
Thay thế <hub_name> bằng tên đã sử dụng cho IoT Hub.

Tin nhắn sẽ xuất hiện trong đầu ra của bảng điều khiển khi gửi từ thiết bị IoT.

Starting event monitor, use ctrl-c to stop...
{
    "event": {
        "origin": "soil-moisture-sensor",
        "module": "",
        "interface": "",
        "component": "",
        "payload": "{\"soil_moisture\": 376}"
    }
},
{
    "event": {
        "origin": "soil-moisture-sensor",
        "module": "",
        "interface": "",
        "component": "",
        "payload": "{\"soil_moisture\": 381}"
    }
}

Nội dung của payload khớp với thông báo gửi từ thiết bị IoT

3. Những tin nhắn này tự động đính kèm một số thuộc tính, như dấu hiệu thời gian gửi, gọi là chú thích. Sử dụng lệnh sau để xem tất cả các chú thích tin nhắn:

az iot hub monitor-events --properties anno --hub-name <hub_name>
Thay thế <hub_name> bằng tên đã sử dụng cho IoT Hub.

Các thông báo xuất hiện trong đầu ra của bảng điều khiển khi gửi từ thiết bị IoT.

Starting event monitor, use ctrl-c to stop...
{
    "event": {
        "origin": "soil-moisture-sensor",
        "module": "",
        "interface": "",
        "component": "",
        "properties": {},
        "annotations": {
            "iothub-connection-device-id": "soil-moisture-sensor",
            "iothub-connection-auth-method": "{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
            "iothub-connection-auth-generation-id": "637553997165220462",
            "iothub-enqueuedtime": 1619976150288,
            "iothub-message-source": "Telemetry",
            "x-opt-sequence-number": 1379,
            "x-opt-offset": "550576",
            "x-opt-enqueued-time": 1619976150277
        },
        "payload": "{\"soil_moisture\": 381}"
    }
}

Giá trị thời gian trong các chú thích tính theo thời gian UNIX, là số giây kể từ nửa đêm ngày 1 tháng 1 năm 1970.

Khi đã hoàn tất, thoát trình theo dõi event.

* Cách điều khiển thiết bị IoT

Gọi các phương thức trực tiếp trên thiết bị IoT bằng cách sử dụng Azure CLI.

Chạy lệnh sau để gọi phương thức relay_on trên thiết bị IoT:

az iot hub invoke-device-method --device-id soil-moisture-sensor \
                                --method-name relay_on \
                                --method-payload '{}' \
                                --hub-name <hub_name>

Thay thế <hub_name> bằng tên đã sử dụng cho IoT Hub.

Thao tác này sẽ gửi một yêu cầu phương thức trực tiếp cho phương thức được chỉ định. Các phương thức trực tiếp lấy một payload chứa dữ liệu được tham số method-payload chỉ định dưới dạng JSON.

Bạn sẽ thấy rơ le bật và đầu ra tương ứng từ thiết bị IoT:

Direct method received -  relay_on

Lặp lại bước trên nhưng đặt –method-name thành relay_off, bạn sẽ thấy rơ le tắt và đầu ra tương ứng từ thiết bị IoT.

Biên dịch: Bắc Đặng

Để cập nhật tin tức công nghệ mới nhất và các sản phẩm của công ty AIoT JSC, vui lòng truy cập link: http://aiots.vn hoặc linhkienaiot.com

0 0 Phiếu bầu
Article Rating
Subscribe
Notify of
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả các bình luận