Jump to content

KHÓA HỌC NODE-RED CHO NGƯỜI MỚI BẮT ĐẦU


Recommended Posts

Node-RED là gì ?

Chú thích

Node-RED là một công cụ lập trình trực quan (visual programming) dựa trên dòng dữ liệu, chủ yếu được sử dụng để kết nối và điều khiển các thiết bị IoT (Internet of Things), API và dịch vụ trực tuyến. Nó được phát triển bởi IBM và cung cấp một môi trường phát triển tích hợp (IDE) trên nền tảng web, cho phép người dùng dễ dàng tạo các ứng dụng bằng cách kéo thả các nút (nodes) và kết nối chúng thông qua các dây (wires).  Xem thêm chi tiết >>

1. Cài đặt và cấu hình Node-RED

2. Giao diện Node-RED

3. Tạo và sử dụng node

4. Lưu và triển khai luồng

5. Node-RED với Arduino và Raspberry Pi

6. Các trường hợp sử dụng Node-RED

KH_NODE-RED.jpg

  • Like 1
Link to comment
Share on other sites

I. Cài đặt và cấu hình Node-RED

I.1  Cài đặt Node-RED trên Máy tính

Yêu cầu:

  • Node.js phiên bản 14 trở lên
  • npm (được cài đặt khi cài đặt Node.js)

Các bước cài đặt:

1. Cài đặt Node.js

Nếu bạn chưa có Node.js, hãy cài đặt từ trang web chính thức: https://nodejs.org/en/download/

hoặc có thể tải tại đây NodeJS Setup

2. Cài đặt Node-RED

Sử dụng npm để cài đặt Node-RED toàn cục:

npm install -g node-red

3. Khởi chạy Node-RED

Để khởi chạy Node-RED, hãy chạy lệnh sau trong terminal:

node-red

4. Truy cập Giao diện web Node-RED

Giao diện web Node-RED sẽ mở ra trong trình duyệt mặc định của bạn tại địa chỉ sau:

http://localhost:1880

Ví dụ:

Hãy sử dụng một ví dụ đơn giản để minh họa cách cài đặt và sử dụng Node-RED.

1. Tạo một nút "Hello world"

Sau khi khởi chạy Node-RED, hãy kéo và thả nút "inject" vào không gian làm việc. Nhấp đúp vào nút và nhập "Hello world" vào trường "Payload".

2. Tạo một nút "debug"

Kéo và thả một nút "debug" vào không gian làm việc. Nút này sẽ hiển thị tin nhắn "Hello world" trong bảng điều khiển của Node-RED.

3. Kết nối các nút

Sử dụng một dòng kẻ để kết nối đầu ra của nút "inject" với đầu vào của nút "debug".

4. Triển khai luồng hoạt động (Flow)

Nhấp vào nút "Deploy" ở góc trên bên phải để triển khai dòng chảy và kích hoạt nút "inject".

5. Xem tin nhắn trong bảng điều khiển

Bảng điều khiển Node-RED sẽ hiển thị tin nhắn "Hello world" trong chế độ đầu ra.

 

image001.gif

Link to comment
Share on other sites

I.2 Cấu hình Node-RED

Node-RED là một nền tảng lập trình ngôn ngữ Low-code (Mã ngắn) cho phép tạo các ứng dụng thông qua một giao diện trực quan. Để sử dụng Node-RED, bạn cần phải cấu hình nó một cách chính xác.

Chú thích

Low-code là một phương pháp phát triển phần mềm cho phép tạo ra các ứng dụng với ít mã hóa thủ công hơn so với cách tiếp cận truyền thống. Thay vì viết mã từ đầu, các nhà phát triển có thể sử dụng giao diện trực quan và các công cụ kéo thả để xây dựng ứng dụng. Điều này giúp rút ngắn thời gian phát triển, giảm chi phí và cho phép những người không phải lập trình viên (như các chuyên gia trong lĩnh vực kinh doanh) cũng có thể tham gia vào quá trình phát triển phần mềm.

Low-code phù hợp cho việc phát triển nhanh chóng các ứng dụng doanh nghiệp, trang web, và các công cụ quản lý mà không yêu cầu kiến thức lập trình sâu rộng. Nó đặc biệt hữu ích trong việc tăng tốc quá trình số hóa và đổi mới trong các doanh nghiệp. >>Xem thêm thông tin về low-code

image002.thumb.jpg.8c90d4cb97ed5ccf0903d62e8cbb4236.jpg

Giao diện người dùng (UI)

Khi Node-RED khởi chạy, bạn có thể truy cập giao diện người dùng (UI) tại http://localhost:1880. UI (Giao diện người dùng) bao gồm:

  • Bảng điều khiển: Hiển thị các thông báo và lỗi.
  • Palette: Bao gồm các node mà bạn có thể thêm vào luồng.
  • Canvas: Nơi bạn xây dựng luồng các nút.

cac-thanh-phan-trong-node-red.png.4cb201a1bb582562c2bd3bd7feccc81d.png

Giaodien.thumb.png.afd7735c2d6fb443537254ae21dcd274.png

Cấu hình cơ bản

Dưới đây là một số tùy chọn cấu hình cơ bản có thể được sửa đổi trong tệp settings.js:

  • port: Cổng mà UI Node-RED lắng nghe (mặc định là 1880).
  • httpAdminRoot: Đường dẫn gốc của UI Node-RED (mặc định là "/").
  • httpNodeRoot: Đường dẫn gốc của các nút HTTP (mặc định là "/api").
  • userDir: Thư mục chứa các luồng và nút được triển khai (mặc định là "~/.node-red").

Bảo mật

Nếu bạn định triển khai Node-RED trong môi trường sản xuất, bạn nên thực hiện các bước để đảm bảo bảo mật. Bạn có thể:

  • Bật xác thực người dùng.
  • Sử dụng HTTPS để mã hóa giao thức.
  • Hạn chế quyền truy cập vào UI.
Chú thích

(Có thể đặt mật khẩu và tài khoản cho phép việc đăng nhập để xem và chỉnh sửa các Flow, tôi sẽ hướng dẫn chia sẻ ở Chủ đề "Bảo mật cơ bản cho việc truy cập Node-RED".)

Ví dụ

Dưới đây là ví dụ về một tệp settings.js cấu hình:

module.exports = {
  port: 1880,
  httpAdminRoot: "/admin",
  httpNodeRoot: "/api",
  userDir: "~/.my-flows",
  ui: {
    theme: "dark"
  },

  editorTheme: {
    projects: {
      enabled: true
    }
  }
};

 

Link to comment
Share on other sites

II. Giao diện Node-RED

II.1 Bố cục và các thành phần của giao diện Node-RED

Bố cục:

Giao diện Node-RED được chia thành ba phần chính:

  • Thanh công cụ: Nằm ở đầu màn hình, cung cấp các nút điều khiển cho các hành động chung như lưu, triển khai và quản lý cấu hình.
  • Bảng chỉnh sửa: Khu vực làm việc chính, nơi bạn xây dựng và sửa đổi luồng.
  • Bảng điều khiển: Nằm ở bên trái, cung cấp các phím tắt đến thư viện nút, bảng chú thích và cài đặt.

Các thành phần chính:

1. Nút (Node):

  • Các khối chức năng cơ bản của Node-RED, đại diện cho các xử lý hoặc hành động cụ thể. Có nhiều loại nút khác nhau có sẵn, bao gồm nút nhập, nút xuất, nút xử lý và nút mạng.

2. Dây nối (Connection):

  • Kết nối các nút với nhau, chỉ ra luồng dữ liệu và sự phụ thuộc giữa các nút.

3. Cửa sổ thông báo:

  • Nằm ở góc dưới cùng bên phải, hiển thị các thông báo và nhật ký liên quan đến quá trình chỉnh sửa luồng.

4. Cửa sổ triển khai:

  • Nằm ở góc dưới cùng bên trái, hiển thị trạng thái triển khai của luồng và cung cấp các tùy chọn để triển khai hoặc gỡ cài đặt luồng.

5. Tab thông tin:

  • Cung cấp thông tin chi tiết về nút hoặc dây nối đã chọn, bao gồm mô tả, cài đặt và các tùy chọn cấu hình.

6. Tab cài đặt:

  • Cho phép bạn tùy chỉnh cài đặt chung của Node-RED, chẳng hạn như chủ đề MQTT, cài đặt bảo mật và tùy chọn chỉnh sửa nâng cao.

 

 

hinh-giao-dien-node-red-462889.png

Link to comment
Share on other sites

II.2 Thanh Công cụ và Menu trong Node-RED

Thanh công cụ và menu Node-RED cung cấp nhiều tùy chọn để quản lý và chỉnh sửa các lưu đồ Node-RED:

Thanh Công cụ:

  • Mở Dự án: Mở một lưu đồ đã lưu.
  • Lưu Dự Án: Lưu lưu đồ hiện tại.
  • Nhập Dự Án: Nhập một lưu đồ từ tệp.
  • Xuất Dự Án: Xuất lưu đồ thành tệp.
  • Nhân bản Dự Án: Tạo một bản sao của lưu đồ hiện tại.
  • Xóa Dự Án: Xóa lưu đồ hiện tại.
  • Thùng rác: Hiển thị các thay đổi đã bị xóa và cho phép khôi phục chúng.
  • Phóng to: Phóng to giao diện lưu đồ.
  • Thu nhỏ: Thu nhỏ giao diện lưu đồ.
  • Phù hợp: Tự động thay đổi kích thước giao diện lưu đồ để vừa với cửa sổ trình duyệt.
  • Lưu bố cục: Lưu vị trí và kích thước của các nút trên lưu đồ.
  • Tải bố cục: Tải bố cục đã lưu cho lưu đồ hiện tại.

Menu:

  • Tệp: Chứa các tùy chọn mở, lưu và in lưu đồ.
  • Chỉnh sửa: Chứa các tùy chọn sao chép, dán, cắt và xóa các nút khỏi lưu đồ.
  • Xem: Chứa các tùy chọn để hiển thị hoặc ẩn các thành phần khác nhau của giao diện lưu đồ, chẳng hạn như thanh bên và bảng thông tin.
  • Nút: Chứa các tùy chọn để quản lý các nút trên lưu đồ, chẳng hạn như tạo, xóa và nhập/xuất.
  • Lưu đồ: Chứa các tùy chọn để quản lý các lưu đồ, chẳng hạn như tạo mới, nhân bản và hợp nhất.
  • Nguồn dữ liệu: Chứa các tùy chọn để quản lý nguồn dữ liệu được sử dụng trong lưu đồ.
  • Trợ giúp: Chứa tài liệu và liên kết đến các tài nguyên hỗ trợ Node-RED.

Ví dụ:

  • Để mở một lưu đồ hiện có, hãy nhấp vào nút "Mở Dự án" trên thanh công cụ.
  • Để lưu lưu đồ đang hiện hành, hãy nhấp vào nút "Lưu Dự án" trên thanh công cụ.
  • Để xóa một nút khỏi lưu đồ, hãy chọn nút đó và nhấn nút "Xóa" trên menu "Chỉnh sửa".
  • Để thêm một nút mới vào lưu đồ, hãy nhấp vào menu "Nút", chọn loại nút mong muốn và kéo nó vào giao diện lưu đồ.
  • Để quản lý nguồn dữ liệu được sử dụng trong lưu đồ, hãy nhấp vào menu "Nguồn dữ liệu" và chọn tùy chọn mong muốn.

image006.png

 

image004.jpg

Link to comment
Share on other sites

III. Tạo và sử dụng Node

 

III.1 Các Loại Node trong Node-RED

Node Cổng (Input)

  • Nhận dữ liệu từ các nguồn bên ngoài, chẳng hạn như HTTP, MQTT hoặc các thiết bị IoT.
  • Ví dụ: Node "http in" nhận dữ liệu từ yêu cầu HTTP.

Node Xử lý

  • Thực hiện các thao tác trên dữ liệu nhận được, chẳng hạn như lọc, chuyển đổi hoặc tính toán.
  • Ví dụ: Node "function" cho phép bạn viết JavaScript để xử lý dữ liệu.

Node Cổng (Output)

  • Gửi dữ liệu đến các đích bên ngoài, chẳng hạn như cơ sở dữ liệu, máy chủ HTTP hoặc các thiết bị IoT.
  • Ví dụ: Node "http out" gửi dữ liệu đến trình duyệt web.

Node Dữ liệu

  • Lưu trữ dữ liệu cục bộ trong luồng dữ liệu đang chảy qua.
  • Ví dụ: Node "delay" lưu trữ dữ liệu và trì hoãn việc phát hành trong thời gian đã chỉ định.

Node Thông báo

  • Gửi và nhận thông báo giữa các node khác trong luồng dữ liệu.
  • Ví dụ: Node "trigger" kích hoạt một luồng dữ liệu khác khi thông báo được nhận.

Node Social

  • Tích hợp với các nền tảng mạng xã hội như Twitter và Facebook.
  • Ví dụ: Node "twitter in" nhận dữ liệu từ nguồn cấp dữ liệu Twitter.

Node Khác

  • Các node khác cung cấp chức năng chuyên biệt, chẳng hạn như:
    • Node "subflow" để tạo các luồng dữ liệu con
    • Node "debug" để in dữ liệu đến bảng điều khiển
    • Node "inject" để đưa dữ liệu vào luồng dữ liệu thủ công

image008.jpg

Link to comment
Share on other sites

III.2 Thêm và kết nối các node

Thêm nút (Node):

  • Menu Palette: Nhấp vào tab "Palette" trong cửa sổ Node-RED để xem các nút có sẵn.

  • Thanh tìm kiếm: Nhập tên của nút bạn muốn tìm hoặc sử dụng các bộ lọc để lọc các kết quả.

  • Kéo và thả: Kéo một nút từ bảng màu và thả nó vào vùng làm việc.

Kết nối các nút (Node):

  • Nhấp và kéo: Nhấp vào đầu ra của một nút và kéo đến đầu vào của nút khác.

  • Menu ngữ cảnh: Nhấp chuột phải vào một nút và chọn "Connect" từ menu ngữ cảnh. Sau đó, chọn đầu ra hoặc đầu vào mà bạn muốn kết nối.

Ví dụ về kết nối nút (Node):

  • Kết nối nút "input" với nút "output":

[input] -> [output]

  • Kết nối nhiều nút "input" với một nút "output":

[input1] -> [output]

[input2] -> [output]

  • Kết nối một nút "output" với nhiều nút "input":

[output] -> [input1]

[output] -> [input2]

  • Kết nối hai nút "output" với một nút "input":

[output1] -> [input]

[output2] -> [input]

Mẹo:

  • Sử dụng các vòng lặp "wire debug" (có biểu tượng tia chớp) để theo dõi luồng dữ liệu giữa các nút.

  • Nhấp vào nút "Deploy" ở góc trên bên phải để lưu và kích hoạt luồng của bạn.

  • Sử dụng nút "Inject" để nhập dữ liệu thủ công vào luồng.

  • Sử dụng nút "Debug" để theo dõi đầu ra của các nút.

image009.png

Link to comment
Share on other sites

IV. Lưu và triển khai luồng

IV.1. Lưu luồng cục bộ và trên đám mây trong Node-RED

Node-RED cung cấp hai tùy chọn lưu trữ luồng:

Lưu trữ cục bộ:

  • Luồng được lưu trữ trong hệ thống tệp cục bộ của node.

  • Thuận tiện cho mục đích phát triển và gỡ lỗi.

  • Tuy nhiên, nếu node sập, luồng sẽ bị mất.

Lưu trữ trên đám mây:

  • Luồng được lưu trữ trên đám mây (trong tài khoản lưu trữ mục đích chung GCS).

  • Yêu cầu xác thực với tài khoản Google Cloud Platform (GCP).

  • Đảm bảo sao lưu an toàn và có thể truy cập từ nhiều nút.

Ví dụ:

Lưu trữ cục bộ:

const fs = require('fs'); 
RED.nodes.registerType('storage-local', {
  category: 'storage',
  name: 'Local Storage',
  inputs: 0,
  outputs: 1,
  func: async (msg) => {
    const filename = 'flows.json';
    try {
      const data = JSON.stringify(RED.flows);
      await fs.promises.writeFile(filename, data);
      msg.payload = `Successfully saved to ${filename}`;
      return msg;
    } catch (err) {
      msg.payload = `Failed to save: ${err.message}`;
      return msg;
    }
  }
});

Lưu trữ trên đám mây:

const {Storage} = require('@google-cloud/storage'); 
RED.nodes.registerType('storage-cloud', {
  category: 'storage',
  name: 'Cloud Storage',
  inputs: 0,
  outputs: 1,
  func: async (msg) => {
    const storage = new Storage();
    const filename = 'flows.json';
    try {
      const data = JSON.stringify(RED.flows);
      await storage.bucket(RED.settings.storage.bucket).file(filename).save(data);
      msg.payload = `Successfully saved to ${filename}`;
      return msg;
    } catch (err) {
      msg.payload = `Failed to save: ${err.message}`;
      return msg;
    }
  }
});

Ưu điểm và nhược điểm:

Lưu trữ cục bộ:

  • Ưu điểm: Dễ dàng thiết lập và sử dụng.

  • Nhược điểm: Dễ bị mất nếu node sập.

Lưu trữ trên đám mây:

  • Ưu điểm: Sao lưu an toàn, có thể truy cập từ nhiều nút.

  • Nhược điểm: Cấu hình phức tạp hơn, yêu cầu xác thực GCP.

image011.png

Link to comment
Share on other sites

IV.2. Triển khai Luồng trên Thiết bị hoặc Dịch vụ Khác

Node-RED cho phép triển khai luồng sang các thiết bị hoặc dịch vụ bên ngoài, mở rộng khả năng của nó ngoài môi trường cục bộ.

Các Phương Pháp Triển khai

1. Hàm đám mây Node.js

  • Triển khai luồng dưới dạng hàm đám mây được kích hoạt bởi các sự kiện nhất định.

  • Ví dụ: Triển khai luồng để xử lý tin nhắn từ MQTT hoặc HTTP.

2. Docker Container

  • Đóng gói luồng thành container Docker để chạy trên bất kỳ máy chủ được hỗ trợ Docker nào.

  • Ví dụ: Triển khai luồng trên Raspberry Pi hoặc máy chủ đám mây (AWS, Azure, GCP).

3. Node-RED Agent

  • Là máy khách Node.js nhỏ có thể kết nối với ứng dụng Node-RED từ xa và chạy luồng.

  • Ví dụ: Triển khai luồng trên thiết bị IoT Edge để xử lý dữ liệu cục bộ.

4. Node-RED Dashboard

  • Cho phép tạo giao diện người dùng web để tương tác với luồng từ xa.

  • Ví dụ: Truy cập luồng từ thiết bị di động hoặc máy tính bảng.

 

Các Bước Triển khai

1. Xuất Luồng

  • Xuất luồng sang tệp JSON hoặc YAML.

2. Triển khai Luồng

  • Hàm đám mây Node.js: Tạo hàm đám mây mới và triển khai tệp luồng.

  • Docker Container: Xây dựng hình ảnh Docker và triển khai container.

  • Node-RED Agent: Cài đặt Node-RED Agent và kết nối nó với ứng dụng Node-RED.

  • Node-RED Dashboard: Triển khai luồng vào ứng dụng Node-RED Dashboard.

Lưu ý:

  • Đảm bảo rằng luồng tương thích với nền tảng triển khai.

  • Xác minh chứng chỉ và quyền truy cập cần thiết.

  • Theo dõi luồng được triển khai để phát hiện và khắc phục sự cố.

image013.jpg

Link to comment
Share on other sites

V. Node-RED với Arduino và Raspberry Pi

V.1 Kết nối và tương tác với Arduino bằng Node-RED

Node-RED là một công cụ phát triển trực quan dựa trên trình chỉnh sửa lưu lượng cho Internet of Things (IoT). Nó cho phép bạn xây dựng các luồng dữ liệu phức tạp bằng cách kết nối các nút được cấu hình sẵn. Arduino là một nền tảng vi điều khiển nguồn mở được sử dụng rộng rãi trong các dự án IoT.

Để kết nối Arduino với Node-RED, bạn có thể sử dụng cục môi giới MQTT, chẳng hạn như Mosquitto. MQTT là một giao thức nhẹ dạng xuất bản-đăng ký được thiết kế để truyền dữ liệu giữa các thiết bị IoT.

Cấu hình Node-RED

Trong Node-RED, lắp đặt các nút sau:

  • mqtt in để nhận tin nhắn MQTT từ Arduino

  • mqtt out để gửi tin nhắn MQTT đến Arduino

  • function để xử lý dữ liệu được nhận

Cấu hình Arduino

Trong chương trình phác thảo Arduino của bạn:

  • Bao gồm thư viện MQTT

  • Kết nối với cục môi giới MQTT

  • Đăng ký các chủ đề để nhận tin nhắn

  • Xuất bản tin nhắn đến các chủ đề

Luồng dữ liệu

Tạo luồng dữ liệu trong Node-RED:

1.    Kết nối nút mqtt in với nút function.

2.    Cấu hình nút function để xử lý tin nhắn nhận được, chẳng hạn như trích xuất dữ liệu cảm biến.

3.    Kết nối nút function với nút mqtt out.

4.    Cấu hình nút mqtt out để gửi tin nhắn đến Arduino, chẳng hạn như lệnh điều khiển.

Ví dụ

Giả sử bạn muốn điều khiển đèn LED được kết nối với Arduino bằng nút trong Node-RED.

Chương trình phác thảo Arduino:

#include <PubSubClient.h> 
// Thay thế thông số cục môi giới và chủ đề bằng thông số của bạn
const char* mqtt_server = "";
const char* mqtt_user = "";
const char* mqtt_password = "";
const char* mqtt_topic_in = "";
const char* mqtt_topic_out = "";

WiFiClient espClient;
PubSubClient client(espClient); 

void setup() {
  // Thiết lập kết nối WiFi 
  // Thiết lập kết nối MQTT
  client.connect("esp32-led", mqtt_user, mqtt_password); 
  // Đăng ký chủ đề để nhận lệnh
  client.subscribe(mqtt_topic_in);
}

 

void loop() {
  client.loop(); 
  // Kiểm tra xem có tin nhắn mới không

  if (client.available()) {
    // Nhận tin nhắn MQTT
    String message = client.readString(); 
    // Kiểm tra nội dung tin nhắn
    if (message == "ON") {
      // Bật đèn LED
    } else if (message == "OFF") {
      // Tắt đèn LED
    }
  }
}

Luồng dữ liệu Node-RED:

1.    Nút mqtt in được cấu hình để lắng nghe các tin nhắn trên chủ đề mqtt_topic_in.

2.    Nút function được cấu hình để trích xuất lệnh "ON" hoặc "OFF" từ tin nhắn nhận được.

3.    Nút mqtt out được cấu hình để gửi lệnh đến chủ đề mqtt_topic_out mà Arduino đang đăng ký.

Khi nhấn nút trong Node-RED, một tin nhắn "ON" hoặc "OFF" sẽ được gửi đến Arduino, bật hoặc tắt đèn LED tương ứng.

image014.jpg

Link to comment
Share on other sites

V.2 Tương tự với Raspberry Pi

Nếu bạn đã quen thuộc với Raspberry Pi thì Node-RED có thể cung cấp một trải nghiệm tương tự. Cả hai nền tảng đều dựa trên Linux và sử dụng GPIO (Đầu vào/Đầu ra mục đích chung) để tương tác với thế giới vật lý.

Sử dụng GPIO

Trong Node-RED, bạn có thể sử dụng nút "GPIO" để đọc hoặc viết dữ liệu vào pin GPIO. Ví dụ:

[{"id":"7809b148.f8e2a8","type":"gpio","z":"3c8f99c4.ee1278","name":"LED","pin":"3","dir":"out","x":330,"y":130,"wires":[]},{"id":"fd291e83.0e38","type":"inject","z":"3c8f99c4.ee1278","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":160,"wires":[["7809b148.f8e2a8"]]},{"id":"a7ccca02.2d58c","type":"inject","z":"3c8f99c4.ee1278","name":"","topic":"","payload":"0","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":200,"wires":[["7809b148.f8e2a8"]]}]

Nút này tạo ra một đầu ra GPIO trên pin 3 và bật/tắt nó dựa trên tin nhắn nhận được.

Điều khiển thiết bị

Ngoài GPIO, Node-RED cũng có thể giao tiếp với các thiết bị bên ngoài thông qua các giao thức khác nhau, chẳng hạn như MQTT, HTTP và I2C. Bạn có thể sử dụng các nút để gửi tin nhắn, thực hiện yêu cầu HTTP hoặc đọc/ghi dữ liệu từ thiết bị.

Ví dụ:

[{"id":"81604274.7391ea","type":"mqtt in","z":"1b711317.02bdd","name":"","topic":"test/in","qos":"0","broker":"2bd75272.13b1f8","x":150,"y":120,"wires":[["1c880a1b.81dfc8"]]},{"id":"1c880a1b.81dfc8","type":"debug","z":"1b711317.02bdd","name":"","active":true,"console":"true","complete":"true","x":350,"y":120,"wires":[]}]

Nút "mqtt in" này lắng nghe các tin nhắn trên chủ đề "test/in" và hiển thị chúng trong tab "Debug".

Tự động hóa quy trình làm việc

Một trong những điểm mạnh của Node-RED là khả năng tự động hóa các luồng công việc phức tạp. Bạn có thể kết nối các nút khác nhau để tạo các quy trình tự động thực hiện các hành động khi điều kiện cụ thể được đáp ứng. Ví dụ:

[{"id":"5abac659.f755e8","type":"inject","z":"1b711317.02bdd","name":"","topic":"","payload":"ON","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":170,"wires":[["98d9934e.436938"]]},{"id":"98d9934e.436938","type":"mqtt out","z":"1b711317.02bdd","name":"","topic":"test/out","qos":"0","retain":"","broker":"2bd75272.13b1f8","x":300,"y":160,"wires":[]}]

Nút "inject" này gửi tin nhắn "ON" đến chủ đề "test/out" khi nút được kích hoạt, bật thiết bị được kết nối.

image015.png

Link to comment
Share on other sites

VI. Các trường hợp sử dụng Node-RED

VI.1. Tự động hóa nhà nhà thông minh với Node-RED

Node-RED là một công cụ lập trình trực quan dựa trên luồng để kết nối các thiết bị, dịch vụ và API để tạo các luồng công việc tự động hóa. Trong bối cảnh tự động hóa nhà, Node-RED có thể được sử dụng để tạo các hệ thống thông minh điều khiển đèn, nhiệt độ, an ninh và các tiện nghi khác.

Ví dụ:

Điều khiển đèn tự động:

  • Nhập: Đăng ký tin nhắn MQTT từ cảm biến chuyển động.
  • Xử lý: Kiểm tra xem có chuyển động hay không.
  • Xuất: Gửi tin nhắn đến một công tắc thông minh để bật đèn nếu có chuyển động.

Điều chỉnh nhiệt độ thông minh:

  • Nhập: Đăng ký dữ liệu từ cảm biến nhiệt độ.
  • Xử lý: So sánh nhiệt độ hiện tại với nhiệt độ đặt.
  • Xuất: Gửi lệnh đến bộ điều nhiệt để tăng hoặc giảm nhiệt độ.

Theo dõi an ninh ngôi nhà:

  • Nhập: Đăng ký tin nhắn MQTT từ cảm biến cửa sổ và cửa ra vào.
  • Xử lý: Kiểm tra xem cửa sổ hoặc cửa ra vào có được mở khi không có người ở không.
  • Xuất: Gửi thông báo đến điện thoại của người dùng hoặc kích hoạt báo động.

Kết nối các tiện nghi khác:

Ngoài các tính năng nêu trên, Node-RED cũng có thể được sử dụng để tự động hóa các tiện nghi khác như:

  • Tưới cây
  • Mở/đóng rèm cửa
  • Phát nhạc
  • Theo dõi mức tiêu thụ năng lượng

Ưu điểm của Node-RED trong tự động hóa nhà thông minh:

  • Giao diện trực quan và dễ sử dụng.
  • Cung cấp nhiều nút xử lý dữ liệu và giao tiếp.
  • Khả năng mở rộng cao để tích hợp với nhiều thiết bị và dịch vụ khác nhau.
  • Cộng đồng lớn và tài nguyên trực tuyến hỗ trợ.

image017.png

Link to comment
Share on other sites

VI.2 Giám sát và Điều khiển với Node-RED

Node-RED cung cấp các nút tích hợp cho phép bạn giám sát và điều khiển các thiết bị thông minh và hệ thống IoT. Dưới đây là một số nút thường được sử dụng cho mục đích này:

Nút Đọc (Read):

  • Đọc dữ liệu từ cảm biến hoặc thiết bị được kết nối.
  • Ví dụ: nút "Read MQTT" đọc tin nhắn từ một broker MQTT.

Nút Viết (Write):

  • Gửi dữ liệu đến thiết bị hoặc hệ thống mục tiêu.
  • Ví dụ: nút "Write MQTT" gửi tin nhắn đến một broker MQTT.

Nút Xử lý Dữ liệu (Data Processing):

  • Biến đổi hoặc xử lý dữ liệu trước khi giám sát hoặc điều khiển.
  • Ví dụ: nút "Change" có thể thay đổi giá trị dữ liệu hoặc nút "Filter" có thể lọc dữ liệu theo các tiêu chí nhất định.

Nút Hiển thị (Display):

  • Hiển thị dữ liệu được giám sát trên giao diện dashboard.
  • Ví dụ: nút "Gauge" hiển thị giá trị dữ liệu dưới dạng đồng hồ đo, còn nút "Text" hiển thị văn bản đơn giản.

Nút Kiểm soát (Control):

  • Cho phép người dùng tương tác với hệ thống để điều khiển các thiết bị.
  • Ví dụ: nút "Button" cho phép người dùng gửi lệnh thủ công, trong khi nút "Slider" cho phép người dùng điều chỉnh giá trị.

Ví dụ:

Giả sử bạn muốn giám sát nhiệt độ trong phòng và bật quạt khi nhiệt độ vượt quá 25 độ C. Bạn có thể tạo luồng Node-RED sau:

[Nhiệt kế] -> [Kiểm tra Nhiệt độ] -> [Quạt]

  • Nhiệt kế: Nút đọc dữ liệu nhiệt độ từ cảm biến.
  • Kiểm tra Nhiệt độ: Nút xử lý dữ liệu nhiệt độ và kiểm tra xem nó có vượt quá 25 độ C không.
  • Quạt: Nút viết lệnh "bật" hoặc "tắt" đến quạt tùy thuộc vào kết quả kiểm tra.

Trong ví dụ này, nút "Kiểm tra Nhiệt độ" có thể được cấu hình để sử dụng nút "Chuyển đổi" để chuyển đổi nhiệt độ từ độ C sang độ F trước khi thực hiện kiểm tra. Bạn cũng có thể thêm nút "Hiển thị" để hiển thị nhiệt độ hiện tại trên bảng điều khiển.

FydtiMz.png

image019.png

Link to comment
Share on other sites

VI.3. Tích hợp dữ liệu và API trong Node-RED

Node-RED là một công cụ thời gian thực cho phép người dùng tạo các luồng dữ liệu phức tạp mà không cần viết mã. Để tích hợp dữ liệu và API trong Node-RED, các node sau đây có thể được sử dụng:

Input Nodes:

  • Node HTTP Request: Gửi yêu cầu HTTP đến các API hoặc URL.

  • Node MQTT Input: Nhận và xử lý tin nhắn MQTT từ các broker.

  • Node Event: Chờ các sự kiện được kích hoạt bên ngoài Node-RED.

Output Nodes:

  • Node HTTP Response: Gửi phản hồi HTTP tới các yêu cầu.

  • Node MQTT Output: Xuất bản tin nhắn tới các broker MQTT.

  • Node Call Service: Gọi dịch vụ Home Assistant để điều khiển các thiết bị hoặc truy xuất dữ liệu.

Ví dụ:

Tích hợp API thời tiết:

1.    Kéo và thả một node HTTP Request vào canvas.

2.    Cấu hình URL yêu cầu thành API thời tiết (ví dụ: "https://api.openweathermap.org/data/2.5/weather").

3.    Kéo và thả một node Debug.

4.    Kết nối đầu ra của node HTTP Request với đầu vào của node Debug.

5.    Nhấn nút "Deploy" để triển khai luồng.

Khi bạn gửi một yêu cầu HTTP đến URL được chỉ định, luồng sẽ được kích hoạt và phản hồi từ API thời tiết sẽ được hiển thị trong cửa sổ gỡ lỗi.

Tích hợp dữ liệu MQTT:

1.    Kéo và thả một node MQTT Input vào canvas.

2.    Cấu hình địa chỉ IP hoặc tên miền của broker MQTT và thông tin xác thực.

3.    Cấu hình chủ đề của tin nhắn bạn muốn nhận.

4.    Kéo và thả một node MQTT Output.

5.    Kết nối đầu ra của node MQTT Input với đầu vào của node MQTT Output.

6.    Nhấn nút "Deploy" để triển khai luồng.

Khi tin nhắn trùng với chủ đề được chỉ định được nhận, luồng sẽ được kích hoạt và tin nhắn sẽ được xuất bản tới chủ đề được cấu hình.

image020.jpg

Link to comment
Share on other sites

Người xem
This topic is now closed to further replies.
×
×
  • Create New...