Phần mềm Nhà Thông Minh Gladys trên Orange Pi

Tiếp tục series bài viết về cài Phần mềm Nhà thông minh trên Orange Pi, theo thứ tự 6 công cụ phần mềm nhà thông minh miễn phí mã nguồn mở tốt nhất 2018 ,  lẽ ra phần mềm thứ 3 này phải là Calaos. Tuy nhiên, vì Calaos hiện tại chỉ hỗ trợ cho Raspberry và rất ít bản dịch tiếng Pháp nên tôi chuyển qua 1 phần mềm khác cũng xuất xứ từ các nhà phát triển Pháp, đó là Gladys.

Dự án Gladys (https://gladysproject.com/en/) cũng là một dự án ban đầu phát triển để quản lý các thiết bị thông minh trong nhà dựa trên Raspberry Pi từ năm 2013, đến nay được 5 năm. Người khởi xướng dự án là Pierre-Gilles Leymarie, một lập trình viên người Pháp. Hiện tại đã có hơn 280.000 lượt tải Gladys cho các mục đích sử dụng tại nhà, thương mại hoặc phi thương mại. Gladys được chia sẻ theo bản quyền mã nguồn mở MIT

Bộ sản phẩm Orange Pi One + nguồn thường + thẻ microSD 16
Bộ sản phẩm Orange Pi One + nguồn thường + thẻ microSD 16

Thật tuyệt vời là tôi cũng đã cài được thành công Gladys trên Orange Pi, thiết bị thử nghiệm ngày hôm nay vẫn thế, bạn cần:

Hiện tại trên OrangePi.me đã có combo 3 thiết bị này với giá chỉ có 629k, bạn có thể mua về thử nghiệm bất cứ lúc nào.

Đầu tiên, hãy cài cho nó hệ điều hành, cài Armbian là phổ thông và dễ dàng nhất. Tải bản Armbian phù hợp tại (armbian.com) sau đó flash vào thẻ nhớ. Cài đặt các bước ban đầu cho Armbian, tương tự như đối với cài trên Orange Pi Zero, bạn tham khảo tại đây

Gladys chạy trên nền nodejs do đó bạn phải cài npm và nodejs cho Orange Pi, thông thường cài NPM và NodeJS trên trang chủ của Gladys sẽ yêu cầu cài bản NodeJS tối thiểu là v8.x.x Tuy nhiên, tôi sẽ cài NVM để quản lý node và npm sau đó cài bản npm phù hợp, bản nào không tương thích có thể đổi sang bản khác ngay dễ dàng. Cài NVM như sau


curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
source .bashrc
nvm ls-remote --lts # Liệt kê các bản LTS để cài
nvm install v8.12.0 # cài bản LTS 8.12.0

Gladys dùng MySQL quản lý dữ liệu, do đó bạn cần cài MySQL server vào

sudo apt-get install mysql-server python build-essential # cài MySQL và các thành phần cần thiết
mysql --version # kiểm tra lại MySQl đã cài chưa
sudo mysql_secure_installation # chạy cài password root cho MySQL
sudo mysql -u root -p # đăng nhập thử vào MySQL bằng password bạn đã đặt bước trên

Nếu hiện ra dòng lệnh như sau là thành công

mysql>

Tạo cơ sở dữ liệu cho Gladys

mysql> CREATE DATABASE gladys CHARACTER SET utf8 COLLATE utf8_general_ci;

Sau khi lệnh MySQL thành công, đánh lệnh quit để thoát MySQL, tại command line, tiếp tục cài các thành phần của NPM như grunt-clie, node-gype và pm2 để chạy khi khởi động

npm install -g grunt-cli node-gyp bcrypt-nodejs pm2

OK xong. Giờ clone mã nguồn

git clone https://github.com/GladysProject/gladys gladys
cd gladys
npm install

Sau khi cài xong, tạo 1 file .env để lưu biến CSDL

nano .env

Paste nội dung này và thay mật khẩu bằng mật khẩu root của bạn

MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=123456aA@
MYSQL_DATABASE=gladys

Cltr + X để thoát và lưu, sau đó build bản Prod bằng câu lệnh grunt

grunt buildProd

# Khởi động script của Gladys
node init.js

Nếu như bạn gặp lỗi MySQL thì có 2 khả năng xảy ra,

1 là do cài MySQL user root vẫn đang truy cập bằng phuwong thức auth_socket, quay trở lại mysql và chạy câu lệnh sau

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456aA@';

Chú ý mật khẩu cần phải đủ chữ hoa chữ thường kí hiệu đặc biệt để tuân thủ policy của mysql_native_password

2 là do các biến biến MYSQL_USER và MYSQL_PASSWORD chưa được cập nhật, chạy câu lệnh sau ở command line

export MYSQL_USER=root
export MYSQL_PASSWORD=123456aA@

Chạy lại Khởi động Gladys
# Khởi động script của Gladys
node init.js

Nếu mọi thứ ngon, sẽ không còn lỗi nào nữa

Tiếp tục start Gladys
#Start Gladys
node app.js

Gladys chạy ở trạng thái Production, bạn sẽ có thể truy cập Gladys ở địa chỉ IP:8080, như ảnh dưới đây

Để Gladys chạy mỗi khi khởi động, sử dụng PM như sau
pm2 startup
pm2 start /root/gladys/app.js --name gladys
pm2 save

Chèn lại biến MYSQL_USER và MYSQL_PASSWORD mỗi khi khởi động lại

nano /etc/profile.d/gladys.sh

Paste nội dung này

#!/bin/bash

MYSQL_USER=root
MYSQL_PASSWORD=123456a@

export MYSQL_USER
export MYSQL_PASSWORD

Chúc các bạn thành công 🙂 Sẽ sớm có video hướng dẫn đầy đủ trên kênh Youtube chính thức của Orange Pi

https://www.youtube.com/channel/UCl0lVmXFHAhZybuOIzu2CaA/

Gửi phản hồi

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.