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
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:
- 1 bo mạch Orange Pi One hoặc Orange Pi Lite.
- 1 thẻ nhớ microSD (thẻ 16GB hoặc 32GB class 10 )
- Nguồn cho Orange Pi 5v/3A
- và 1 đường mạng Internet tốt
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/