Node-red cơ bản

Node-red nó là gì ? Node-RED được dựa trên Node.js, nó có thể được xem như một web server mà bạn có thể cấu hình tùy chỉnh các chức năng gọi là “flow” từ bất kỳ trình duyệt nào trên máy tính. Mỗi ứng dụng Node-RED bao gồm các node có thể liên kết được với nhau với các dạng là input, output và operation.

Một ví dụ đơn giản để chúng ta có thể hình dung được các node khác nhau sẽ tương tác như thế nào

Với Node-RED ta có thể hình dung cách tương tác và giao tiếp với các thiết bị một cách tổng quan như hình dưới. Ở đây máy tính của mình sẽ đóng vai trò là server và client

Nếu dùng Raspberry hay OrangePi thì thiết bị này sẽ đóng vai trò là Server, còn lại sẽ là client như hình

Hiểu được sơ bộ rồi thì mình đi vào cài đặt node-red để thử nghiệm thôi

Chuẩn bị

Trước hết thì chúng ta cần có một Raspberry PI/ Orange PI, nếu bạn không có 2 thứ trên thì chúng ta có thể cài đặt trực tiếp trên máy tính (lưu ý là dùng hệ điều hành ubuntu nhé). Ở đây thì quá trình cài đặt giống nhau, mình xin minh họa trên một máy tính dùng ubuntu.

Cài đặt

Cài đặt môi trường

Cách 1
Bước 1: Cập nhật repository
sudo apt-get update

Bước 2: Cài nodejs

sudo apt-get install node.js -y
sudo apt-get install nodejs-legacy

Bước 3: Cài đặt Git và clone Node-red

sudo apt-get install git -y
git clone https://github.com/node-red/node-red.git

Bước 4: Truy cập vào thư mục node-red

cd node-red

Bước 5: Cài npm và cập nhật node-js phiên bản mới nhất

sudo npm install n -g
sudo n stable

Bước 6: Về lại thư mục trước

cd ..

Bước 7: Cài grunt-cli

sudo npm install -g grunt-cli

Bước 8: Vào lại thư mục node-red và build

cd node-red
grunt build
node red 
Bạn có thể tham khảo thêm một số cách cài khác(ví dụ cách 2 bên dưới) nếu vẫn còn trục trặc tại http://nodered.org/docs/getting-started/installation 

Cách 2

Bước 1: Cài đặt Node.js và npm

sudo apt-get install nodejs-legacy
sudo apt-get install npm

Bước 2: Cài đặt nodered

sudo npm install -g --unsafe-perm node-red node-red-admin

Bước 3: Khởi động nodered

node-red

Kết quả

Giờ thì có thể truy cập vào Node-RED ở đường dẫn http://127.0.0.1:1880/#

Khởi động nodered tự động

Đây là một option khi bạn cài nodered lên ubuntu 16.04, ta cần tạo một service nodered với tên node-red.service với lệnh

sudo nano /etc/systemd/system/node-red.service 

Copy đoạn bên dưới dán vào

[Unit]
Description=Node-RED
After=syslog.target network.target

[Service]
ExecStart=/usr/local/bin/node-red-pi --max-old-space-size=128 -v
Restart=on-failure
KillSignal=SIGINT

# log output to syslog as 'node-red'
SyslogIdentifier=node-red
StandardOutput=syslog

# non-root user to run as
WorkingDirectory=/home/sammy/
User=sammy
Group=sammy

[Install]
WantedBy=multi-user.target

Lưu ý: thay sammy bằng user hiện tại của bạn, ví dụ của mình dùng user ubuntu thì ubuntu sẽ được thay thế cho sammy

Sau đó chạy lệnh để auto start nodered

sudo systemctl enable node-red
sudo systemctl start node-red

Nếu muốn dừng chạy auto thì chạy command

sudo systemctl stop node-red

Tạo màn hình đăng nhập cho node-red

Để đảm bảo chỉ có mình bạn và những người liên quan có thể vào được trang nodered admin thì cần enable trang đăng nhập lên, để thực hiện được cần
Tạo hash-pw, sau đó copy lại pass này

node-red-admin hash-pw

Chỉnh sửa file settings.js với lệnh

nano ~/.node-red/settings.js

Kéo xuống và uncomment khối adminAuth(xóa các kí tự “// ” trước mỗi line). Đổi phần username thành cái bạn muốn và paste hash password đã tạo ở trên vào.

adminAuth: {
    type: "credentials",
    users: [{
        username: "admin",
        password: "$2a$08$Ab9prIr1M8a5a1/Zx8.B9.uIOCPe.v90ZGuZc2kAATp6BHJ/WV5KS",
        permissions: "*"
    }]
},

Ở đây bạn cần thay thế 2 chỗ là username và password
Sau khi chỉnh sửa hoàn tất, khởi động lại nodered với lệnh

sudo systemctl restart node-red

 

Ví dụ với Node-RED

Tiếp theo mình sẽ thử test xem Node-RED hoạt động thế nào, mình sẽ tạo 2 ra input kiểm tra thông tin khi tác động vào 2 input này là gì ?

Bước 1: Thực hiện kéo thả 3 khối gồm 2 input và 1 output

Bước 2: Cấu hình input 1, chọn Payload là boolean True, input 2 với Payload là boolean False

Bước 3: Chọn Deploy, đây giống như quá trình build trong lập trình C và quan sát debug

Cài đặt Node-red-dashboard

Bước ban đầu về Node-RED đã xong, giờ muốn có một cái dashboard giao diện như nút bấm này nọ thì làm thế nào ? Không lẽ tác động vào input mà tác động vào mấy cái flow thì cũng hơi chuối, cái đó chỉ dùng cho debug thôi. May mắn thay là Node-red có hỗ trợ dashboard cho chúng ta luôn. Thế dashboard nó có dạng như nào nhỉ, mọi người tiếp tục xem hình bên dưới để dễ hình dung

Nhìn khá là bắt mắt, giống như mấy cái app trên Android phết. Nhanh cài để thử thôi

Bước 1: Chạy lệnh và tải node-red-dashboard về

cd ~/node-red/node_modules
git clone https://github.com/node-red/node-red-dashboard.git

Bước 2: Vào folder node-red-dashboard

cd node-red-dashboard

Bước 3: Cài đặt

npm install

Bước 4: Về lại thư node-red và chạy node-red

cd ~/node-red/
node red

Nếu gặp lỗi node-red vẫn còn mở thì bạn cần tắt hết terminal đang mở hoặc tắt node red bằng lệnh killall nodered

Nếu vẫn còn vấn đề về cài đặt thì bạn có thể tham khảo thêm ở đây https://github.com/node-red/node-red-dashboard

Sau khi khởi động lại node red bạn sẽ thấy thông bán về phiên bản dashboard và đường dẫn để vào giao diện

Ví dụ với Node-RED dashboard

Mình tiếp tục cái tiến ví dụ node-red cơ bản ở trên, giờ thêm 2 nút nhấn và kiểm tra trạng thái hiển thị 2 nút nhấn trên giao diện xem thế nào

Bước 1: Thực hiện kéo thả 3 khối gồm 2 button ON/ OFF, 1 switch để thay đổi trạng thái, 1 text để hiện giá trị hiện tại nút nhấn và 1 msq.payload để debug

Bước 2: Tạo layout giao diện dashboard

Bước 3:Cấu hình input, output

Bước 4: Chọn Deploy, quan sát debug và giao diện, chọn đường dẫn http://127.0.0.1:1880/ui/#/0

Quan sát trên nhiều thiết bị khác nhau

Đúng ra đến ví dụ node-red dashboard thì dừng rồi, nhưng lại nảy ý định quan sát điều khiển trên các thiết bị khác như smartphone thì có được không ? Mình tiếp tục thử tiếp bằng cách lấy ip của máy tính đang cài đặt nodered ở trên qua lệnh

ifconfig

Kết quả trả về là địa chỉ 192.168.1.13 (đây là IP local của máy mình nhé. Vậy có manh mối rồi, mình dùng điện thoại 192.168.1.13:1880/ui để vào giao diện điều khiển

Kết quả

Tạm kết

Tới đây là dừng thiệt rồi, tạm thời đã có một ít kiến thức về node red cũng như cách sử dụng cơ bản, hi vọng giúp các bạn bắt đầu đỡ mất thời gian và có chút gì đó để tiếp tục tìm kiếm phát triển thêm :D, hẹn gặp lại các bạn ở bài tiếp theo về Node-red và ESP8266

19
Leave a Reply

avatar
10 Comment threads
9 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
9 Comment authors
scanh quânQuách Tiến ĐạtNguyễn Duy NhấtNguyễn Trung Hiếu Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
N. T. Tung
Guest
N. T. Tung

Thanks ban da chia se (sorry vi khong viet tieng Viet co dau duoc)

duc do
Guest
duc do

cho mình hỏi có thể lưu dashboard trên máy dk k? nếu có thì làm ntn.
cám ơn nhiều ạ

Huynh Phuc
Guest
Huynh Phuc

Chào ad, cho mình hỏi phần thu thập dư liệu nhiệt độ mình có thể lưu lại được ko? Vd: 1 tiếng mình lưu lại trong file excel 1 lần.
Tks ad.

Huynh Phuc
Guest
Huynh Phuc

Tks ad đã trả lời. Ad có bài hướng dẫn về cách lưu dữ liệu ko ? Cho minh xin

loi
Guest
loi

bạn có kênh riêng youtube, hay fb hông cho mình để trao đổi với bạn.

Nguyễn Trung Hiếu
Guest
Nguyễn Trung Hiếu

Để điều khiển mình có cần phải dùng cùng mạng ko b nhỉ? IP kia là IP của máy. Trong trường hợp IP mạng nhà mình (IP động) bị thay đổi thì sao nhỉ?

Quách Tiến Đạt
Guest
Quách Tiến Đạt

Cho mình hỏi cài đặt node-red-dashboard theo hướng dẫn thì chạy câu lệnh đầu tiên ở đâu vậy

Nguyễn Duy Nhất
Guest
Nguyễn Duy Nhất

Bạn ơi cho mình hỏi cái chỗ đặt password bằng hash pass ấy, mình là làm theo hướng dẫn mà nó có báo là “log in failed” bạn biết lỗi tại sao không?

Quách Tiến Đạt
Guest
Quách Tiến Đạt

Cho mình hỏi cái phần quan sát trên nhiều thiết bị khác nhau thì mình gõ lệnh ifconfig ở đâu ạ

anh quân
Guest
anh quân

hệ điều hành window có cài được không ạ