Hút bụi Xiaomi không cần đám mây Xiaomi

  • Mục đích của firmware Valetudo

Valetudo chạy trên Xiaomi Vacuums đã được root, mục đích là cho phép người dùng vận hành robot mà không kết nối với đám mây của Xiaomi.

Valetudo cung cấp hầu hết các cài đặt và điều khiển Xiaomi Vacuum qua giao diện web thân thiện cũng như có thể kết nối MQTT được hỗ trợ bới Home Assistant Autodiscovery.

  • Tính năng của firmware Valetudo
  1. Live Map View
  2. Go-To
  3. Zoned Cleanup
  4. Configure Timers
  5. MQTT (including TLS support)
  6. MQTT HomeAssistant Autodiscovery
  7. Start/Stop/Pause Robot
  8. Find Robot/Send robot to charging dock
  9. Power settings
  10. Consumables status
  11. Wifi settings
  12. Carpet Mode
  13. Cleaning History
  14. Volume Control
  • Reset về firmware gốc của Xiaomi được không?

Firmware gốc khi sản xuất của Xiaomi cất ở partition Recovery, không bị ghi đè khi flash firmware, cho nên có thể khôi phục bất cứ khi nào muốn.

  1. Gen1: Ấn giữ nút Home và ấn nút WiFi-reset, tiếp tục giữ nút Home cho tới khi có thông báo reset.
  2. Gen2: Ấn giữ nút Home và nút Plug, ấn nút WiFi-reset và tiếp tục giữ 2 nút Home/Plug cho đến khi có thông báo reset.

Mục lục

  1. Tạo firmware Valetudo dùng RPi
    1. Cài đặt phần mềm
    2. Tạo public/private key
    3. Tải về firmware gốc và gói Valetudo
    4. Tạo file ảnh firmware
  2. Tạo firmware nhờ https://builder.dontvacuum.me/
  3. Flash firmware Valetudo
    1. Dùng RPi
    2. Mirobo trên Windows
    3. XVacuum trên Android / IOS
    4. RoboRock Control Center
  4. Sử dụng Xiaomi vacuum với firmware Valetudo
    1. FloleVac (Android)
    2. HASS
    3. Web UI của Valetudo
    4. RoboRock Control Center (Windows – MacOS – Linux)
    5. Xem phiên bản OS và Valetudo
    6. Thông tin về tài nguyên hệ thống
    7. Thay đổi timezone
    8. Thay đổi local sang en_US.UTF-8
    9. Cài thêm software
  5. Tóm tắt
  6. Tham khảo

1. Tạo firmware Valetudo với RPi (cần OS Linux) []

Sở dĩ chúng ta dùng firmware Valetudo là vì không muốn dữ liệu của chúng ta bị upload về cloud của Xiaomi. Vì vậy sẽ bất cẩn nếu dùng firmware của ai đó làm sẵn. Tốt nhất là tự tạo lấy firmware Valetudo từ firmware gốc của Xiaomi, đó là mục đích của phần này.

Tuy nhiên nếu việc này quá rắc rối, chúng ta có thể nhờ builder.dontvacuum.me tạo giúp firmware với một ít tùy biến của mình.

Chúng ta sẽ cần:

  • Firmware gốc mới nhất của Xiaomi vacuum
  • Phần mềm Valetudo
  • Cặp khóa SSH Public/Private
  • File âm thanh tiếng Việt

1.1 Cài đặt phần mềm

sudo apt install openssh-server ccrypt dos2unix git python3-venv

1.2 Tạo public / private ssh-key

Các key này dùng để ssh vào Xiaomi vacuum sau khi flash thành công. Khi đó chúng ta làm việc trên robot tương tự như trên RPi với quyền root.

Nên dùng cặp khóa giống như trên RPi đang dùng. Tạo mới nếu chưa có:

ssh-keygen -t ed25519 -C "your_email@example.com"

1.3 Chuẩn bị tạo firmware Valetudo

mkdir rockrobo
cd rockrobo
# Clone dustcloud repository
git clone https://github.com/dgiese/dustcloud.git
# Tạo thư mục valetudo
mkdir valetudo
pushd valetudo
# Download bản valetudo binary mới nhất, xem chú thích 1
wget https://github.com/Hypfer/Valetudo/releases/download/0.4.0/valetudo
mkdir deployment
pushd deployment
wget https://github.com/Hypfer/Valetudo/raw/master/deployment/valetudo.conf
mkdir etc
pushd etc
wget https://github.com/Hypfer/Valetudo/raw/master/deployment/etc/hosts
wget https://github.com/Hypfer/Valetudo/raw/master/deployment/etc/rc.local
popd
popd
popd
mkdir firmware
wget URL2 ## <-- Xem chú thích 2

Chú thích:

  1. Tải về Valetudo mới nhất ở https://github.com/Hypfer/Valetudo/releases
    Link Valetudo hiện tại là https://github.com/Hypfer/Valetudo/releases/download/0.4.0/valetudo
  2. Tải về firmware gốc của Xiaomi tùy theo Gen1 hay Gen2
  3. Chú ý: Không update GEN2 với v11_001910 và GEN1 với v11_004004, vì các firmware này ngăn robot download từ local.

Gen1

https://cdn.awsbj0.fds.api.mi-img.com/updpkg/[package name]
https://cdn.awsde0.fds.api.mi-img.com/updpkg/[package name]

Example:
https://cdn.awsbj0.fds.api.mi-img.com/updpkg/v11_003468.fullos.pkg

Gen2

https://dustbuilder.xvm.mit.edu/pkg/s5/[package name]
https://cdn.awsbj0.fds.api.mi-img.com/rubys/updpkg/[package name]
https://cdn.cnbj2.fds.api.mi-img.com/rubys/updpkg/[package name]
https://cdn.cnbj0.fds.api.mi-img.com/rubys/updpkg/[package name]
https://cdn.awsde0.fds.api.mi-img.com/rubys/updpkg/[package name]

Example: https://cdn.cnbj2.fds.api.mi-img.com/rubys/updpkg/v11_001748.fullos.pkg

Sau tất cả các lệnh bên trên, cấu trúc thư mục rockrobo như sau:

1.4 Tạo file ảnh của firmware

Giả sử đang đứng ở thư mục rockrobo, tên file firmware Xiaomi gốc là v11_001886.fullos.pkg, file âm thanh là vi_male.pkg, public key là id_rsa_pub (nếu có tên khác thì thay đổi trong câu lệnh).

Chạy các lệnh sau để tạo firmware Valetudo:

mkdir image
cd image
sudo ../dustcloud/devices/xiaomi.vacuum/firmwarebuilder/imagebuilder.sh \
      --firmware=../firmware/v11_001886.fullos.pkg \
      --soundfile=../firmware/vi_male.pkg \
      --public-key=$HOME/.ssh/id_rsa.pub \
      --timezone=Asia/Ho_Chi_Minh \
      --valetudo-path=../valetudo \
      --disable-firmware-updates \
      --ntpserver=fritz.box \
      --replace-adbd

2. Tạo firmware từ https://builder.dontvacuum.me/ []

  • Chú ý chọn đúng kiểu máy hút bụi. Sai firmware có thể khiến máy bị block (factory reset lại thôi)
  • Cần ghi email có hiệu lực. Link tải firmware sẽ được nhận qua email sau khoảng 5-10 phút, có giá trị trong 1 tuần. Trong thời gian đó nếu muốn tạo firmware khác từ website này phải dùng email khác.
  • Nên chọn cài đặt sẵn nano, htop, wget vì trình soạn thảo vi có vấn đề và tự cài đặt sẽ tốn chổ nhiều hơn.

3. Flash firmware Valetudo []

Sau khi tạo được file firmware với firmware gốc của Xiaomi, gói Valetudo mới nhất, khóa công khai và file âm thanh (tiếng Việt), chúng ta tìm cách làm cho Xiaomi vacuum tải file firmware này về và tự cài đặt.

Có một số cách khác nhau dùng Linux, Windows, Android hay IOS.

Để bảo đảm quá trình flash không bị ngắt giữa chừng do hết pin, cần phải sạc robot ít nhất 80% pin và đặt robot lên dock sạc khi flash.

Với firmware tự tạo, chúng ta đã ghép vào đó gói âm thanh tiếng Việt. Nếu chưa có gói âm thanh này, chúng ta có thể cài đặt vào robot sau bằng chính giao diện Web UI của Valetudo hay các app dùng cài đặt firmware sẽ nói bên dưới.

Flash firmware Valentudo không làm thay đổi Token, Did và tên/mật khẩu của Wifi.

3.1 Dùng RPi

Cần các phần mềm sau: python3, python3-pip, python3-venv (thông thường đã cài đặt sẵn trên RPi)

sudo apt install python3, python3-pip, python3-venv

Giả sử đang ở thư mục rockrobo, chạy các lệnh sau:

cd ..
mkdir flasher
cd flasher
python3 -m venv venv
# cài đặt gói miio python
source venv/bin/activate
pip3 install wheel
pip3 install python-miio
cd ..

Đến đây có chút rắc rối về phương pháp. Chúng ta cần phải biết IP và token của Xiaomi vacuum, nhưng bằng cách nào? Xiaomi vacuum có thể đang trong mạng LAN của mình nên dễ tìm IP, sẽ dễ dàng hơn khi IP đặt cố định, còn token phải tìm bằng các phương pháp đã biết và phải là token đang có hiệu lực.

Giả sử robot đang trong cùng mạng LAN với RPi. Chạy lệnh sau đây để Xiaomi vacuum download firmware về, giả sử có tên là v11_001886.pkg. Sau khi download xong, robot sẽ tự update firmware, thời gian sẽ mất khoảng 5-10 phút. Robot sẽ tự khởi động lại khi update xong.

python3 dustcloud/devices/xiaomi.vacuum/firmwarebuilder/flasher.py -a IP_Xiaomi_vacuum -t token_Xiaomi_vacuum -f image/output/v11_001886.fullos.pkg

3.2 Dùng Mirobo trên Windows

  • PC/Laptop và robot Xiaomi vacuum ở cùng một mạng LAN
  • Tạm thời tắt anti-virus và firewall
  • Đặt robot gần router và laptop
  • Điền IP và token của robot vào file win-mirobo.ini
  • Chạy win-mirobo dưới quyền administrator
  • Gõ 1 (Flash firmware)
  • Không được ngắt ứng dụng nửa chừng

3.3 Dùng XVacuum trên Android / IOS

  1. Chạy ứng dụng
  2. Menu – Settings
  3. Điền IP và token của Xiaomi vacuum
  4. Save
  5. Exit
    Android: double click lên nút “Back” và chọn “Exit”
    iOS: double click lên nút “Home” quét ứng dụng lên
  6. Chạy ứng dụng lần nữa
  7. Chờ ứng dụng kết nối với Xiaomi vacuum
  8. Bấm nút Flash
  9. Chọn firmware hay file âm thanh
  10. Xem thông báo về tiến trình upload firmware

3.4 Dùng RoboRock Control Center

Điền IP và Token
Firmware > Update > Chọn file firmware

Trường hợp dùng firmware từ https://builder.dontvacuum.me/, sau khi flash xong thì mở http://IP_Xiaomi_vacuum để thay đổi ngôn ngữ.

4. Sử dụng Xiaomi vacuum với firmware Valetudo []

Đôi khi chúng ta cần ssh vào robot như vẫn làm với RPi. Có thể dùng PuTTY, Bitvise, hay chạy lệnh trên RPi để ssh vào robot (dùng khóa public đã tạo ở trên)

sudo ssh root@IP_của_Xiaomi_vacuum

Có thể điều khiển robot từ giao diện web (đa nền tảng), Hass.io, Android, IOS, Windows, MacOS.

4.1. Không thể điều khiển robot bằng Mi Home, thay vào đó dùng FloleVac (Android)

Để cài đặt Flolevac, cần IP, Token, Did của robot, có thể trích từ CSDL của Mi Home, hoặc Did có thể đọc được bằng cách ssh vào robot và chạy lệnh

cat /mnt/data/miio/device.conf

4.2. Vẫn có thể dùng miio trên HASS để điều khiển robot, ngoài ra có thể điều khiển bằng MQTT.

Giao diện trên Hass.io

4.3. Sử dụng giao diện web để điều khiển Xiaomi vacuum

Web server đặt bên trong hệ điều hành của robot nên chỉ cần có kết nối local giữa máy tính/laptop/điện thoại với robot.

http://IP_xiaomi_vacuum

4.4. Dùng RoboRock Control Center (Windows – MacOS – Linux)

4.5 Xem phiên bản OS và Valetudo

cat /etc/*release
Phiên bản OS và Valetudo

4.6 Thông tin về tài nguyên khi robot đang làm việc

htop

4.7 Thay đổi timezone

dpkg-reconfigure tzdata
ntpdate vn.pool.ntp.org
hwclock --systohc

Chọn Asia – Ho_Chi_Minh

4.8 Thay đổi local sang en_US.UTF-8

locale-gen en_US.UTF-8
mount /mnt/default/ -o remount,rw
update-locale LANG=en_US.UTF-8
reboot

4.9 Cài thêm software

Còn rất ít khoảng trống trên partition root. Sau khi lấy package lists bằng lệnh apt-get update, chỉ còn khoảng 2x MB để cài software. May mắn là các gói trên Linux cũng khá nhỏ. Chúng ta có thể cài thêm nano, mc, wget, htop, ntpdate… sau đó xóa đi package lists.

apt-get update
apt-get install nano mc wget htop ntpdate
rm -f /var/lib/apt/lists/us.ports.ubuntu.com*
rm -f /var/cache/apt/archives/*.deb
rm -f /var/cache/apt/*.bin
Sau lệnh apt-get update

Ngoài ra do hạn chế về bộ nhớ và năng lực CPU, cài thêm app hay thiết kế thêm việc nặng có thể khiến robot reboot liên tục. Thí dụ chỉ có thể lấy thông tin về vị trí robot để tự vẽ bản đồ sàn chứ không thể yêu cầu robot vẽ bản đồ sàn cho HASS.

5. Tóm tắt []

Firmware Xiaomi cho Robot Vacuum bao gồm OS Ubuntu 14.04.3 LTS (Trusty Tahr) và các đoạn mã điều khiển robot. Các bản cập nhật firmware của Xiaomi chỉ chỉnh sửa các đoạn mã điều khiển robot.

Theo thiết kế, mỗi 30 phút, robot sẽ liên lạc với đám mây của Xiaomi để cập nhật thông tin như wifi, vị trí robot, bản đồ sàn… Không liên lạc được với đám mây Xiaomi, robot sẽ không hoạt động hoặc hoạt động không đủ chức năng.

Valetudo là một gói ứng dụng bổ sung vào firmware của Xiaomi, nhằm mục đích tạo đám mây ảo cục bộ và đánh lừa robot đó là đám mây Xiaomi, ngoài ra nó cũng gồm Mqtt client giống như ở các công tắc thông minh.

Phần điều khiển robot của Valetudo dựa vào các tính năng của firmware Xiaomi, nhưng giao diện chính là Web UI. Nhờ có Mqtt, Valetudo giao tiếp dễ dàng với HASS, bao gồm cả đưa bản đồ sàn lên giao diện HASS.

Chúng ta có thể tự tạo firmware Valetudo nhờ vào firmware gốc của Xia

rm -f /var/lib/apt/lists/us.ports.ubuntu.com*
rm -f /var/cache/apt/archives/.deb rm -f /var/cache/apt/.bin

omi, gói Valentudo, file âm thanh tiếng Việt…
Hoặc có thể nhờ vào builder.dontvacuum.me. Chỉ cần điền các thông tin cần thiết vào đây, chúng ta sẽ nhận được đường link tải firmware về qua email.

Chúng ta có thể cài đặt thêm phần mềm vào OS của robot, tuy nhiên rất hạn chế vì phân vùng root của robot còn khá ít chổ trống. Thêm nano, wget, htop, mc thì OK.

Cuối cùng, bất cứ khi nào chúng ta đều có thể factory reset về firmware gốc của Xiaomi.

6. Tham khảo []

https://github.com/Hypfer/Valetudo
https://community.home-assistant.io/t/valetudo-xiaomi-vacuum-dustcloud-alternative-live-maps/66277

Comments Off on Hút bụi Xiaomi không cần đám mây Xiaomi

Filed under Software

Comments are closed.