Mức độ khó: Trung bình
Thời gian: 15 phút
Yêu cầu:
Credit:
Dustcloud (https://github.com/dgiese/dustcloud)
FPT Text2Speech (https://dev.openfpt.vn/)
Thời gian: 15 phút
Yêu cầu:
- Mi Home v5.4.54 (Android), nếu không có Android có thể sử dụng trình giả lập, mình đã test trên Nox Player
- Robot đã được cài đặt vào ứng dụng Mi Home
- PC chạy Windows
- Lấy địa chỉ IP và Token của Robot
- Dùng app Mirobo để flash voice pack Tiếng Việt cho Robot
- Kiểm tra và gỡ lỗi
Credit:
Dustcloud (https://github.com/dgiese/dustcloud)
GitHub - dgiese/dustcloud: Xiaomi Smart Home Device Reverse Engineering and Hacking
Xiaomi Smart Home Device Reverse Engineering and Hacking - dgiese/dustcloud
github.com
FPT Text2Speech (https://dev.openfpt.vn/)
Python Miio (https://github.com/rytilahti/python-miio)
GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances
Python library & console tool for controlling Xiaomi smart appliances - rytilahti/python-miio
github.com
Tác giả của script Win-Mirobo (không rõ)
- Lấy địa chỉ IP và Token của Robot:
Cài Mi Home v5.4.54, bạn có thể tải ứng dụng tại trang mình chọn, nếu không tìm được, sử dụng bản mình đã tải về tại đây https://app.box.com/s/5yopb1okuycnwby05yw5zrpd7avtorhc
Box
app.box.com
Trên điện thoại cài Mi Home đã đăng nhập và cài đặt Xiaomi Robot,
Mở app Mi Home, vào mục robot hút bụi để biết tên robot hút bụi là gì (VD: Mi Robot Vacuum)
Sau đó dùng một trình quản lý file bất kỳ nào đó vào thư mục INTERNAL MEMORY/SMARTHOME/LOGS/PLUG_DEVICEMANAGER, tìm và mở file tên yyyy-MM-dd.txt sử dụng một app xem file text nào đó, chọn file với ngày tháng hiện tại hoặc gần nhất, ví dụ 2019-01-31.txt. Mình sử dụng app quản lý file Solid Explorer và SE Text Editor đi kèm của nó. Bạn có thể chọn bất cứ app nào phục vụ cho mục đích tương tự nhưng tốt nhất là có tính năng tìm kiếm vì như vậy sẽ nhanh hơn.
Tìm trong file này tên Robot, tìm các dòng chữ theo định dạng dưới đây:
{"did":"117383849","token":"90557f13732y2494h278314a74d547b5","longitude":"x","latitude":"y","name":"Mi Robot Vacuum","pid":"0","localip":"192.168.88.68","mac":"40:31:3C:AA:BB:CC","ssid":"Your AP Name","bssid":"E4:8D:8C:EE:FF:GG","parent_id":"","parent_model":"","show_mode":1,"model":"rockrobo.vacuum.v1","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Zoned cleanup","extra":{"isSetPincode":0,"fw_version":"3.3.9_003460","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"event.back_to_dock":"{\"timestamp\":1548817566,\"value\":[0]}
Quảng cáo
Bạn chỉ cần copy và lưu lại IP (192.168.88.68) và Token (90557f13732y2494h278314a74d547b5) để phục vụ cho bước sau.
2) Dùng app Mirobo để flash voice pack Tiếng Việt cho Robot
Tải file mirobo_v1.1.0.zip và vi_leminh.zip (voice pack Tiếng Việt) tại địa chỉ: https://app.box.com/s/5yopb1okuycnwby05yw5zrpd7avtorhc
Box
app.box.com
Giải nén win-mirobo vào thư mục nào đó, mở thư mục ra, trong thư mục Mirobo v1.0, mở file win-mirobo.ini, bạn sẽ thấy hình tương tự như dưới đây:
Điền IP và Token đã lấy ở bước 1 vào 2 dòng đầu.
Quảng cáo
Giải nén file vi_leminh.zip vào thư mục Mirobo v1.0\voicepacks
Tắt tường lửa: app Mirobo sẽ tạo 1 HTTP server để cung cấp file voice pack (.pkg) cho Xiaomi Robot nên sẽ cần cho phép kết nối vào (inbound connections), cách đơn giản nhất là tạm thời tắt tường lửa Windows.
Bạn mở tường lửa và tắt nó đi, dưới đây là hình cho tường lửa mặc định (Windows Defender Firewall) của Windows 10.
Tiếp theo, bạn quay lại thư mục Mirobo v1.0 và chạy file win-mirobo.bat, bạn sẽ thấy như dưới đây:
Để flash voice pack, nhấn 2 Enter
Bước tiếp theo, app sẽ hỏi bạn chọn gói ngôn ngữ:
Chọn vi_leminh bằng cách nhập 4 Enter
Quá trình flash sẽ bắt đầu, app tạo voice pack có đuôi pkg được mã hóa sử dụng mật khẩu mặc định của Xiaomi, khởi động HTTP server và gửi yêu cầu flash đến robot. Robot sẽ kết nối với HTTP server và tiến hành flash.
Nếu không có dòng chữ màu đỏ nào hiện ra nghĩa là đã thành công, robot sẽ báo “cập nhật thành công” bằng Tiếng Việt, bạn nhấn Enter vài lần để thoát khỏi win-mirobo.
3) Kiểm tra và gỡ lỗi:
Nếu bạn không thể lấy được IP và Token theo cách nêu ở bước 1 bạn có thể sử dụng một số cách nêu ở đây: https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token.md [Tiếng Anh]
com.xiaomi-miio/docs/obtain_token.md at master · jghaanstra/com.xiaomi-miio
Homey app to control Mi Home devices that implement the miIO protocol and Xiaomi gateway child devices - jghaanstra/com.xiaomi-miio
github.com
Nếu khi chạy app, bạn nhận thông báo như dưới đây thì kiểm tra lại IP và Token đã lấy ở bước 1
Nếu có lỗi app sẽ hiện dòng chữ: Something goes wrong màu đỏ, lỗi này là do Robot không thể kết nối tới HTTP server để nhận voice pack, bạn kiểm tra lại tường lửa đã được tắt chưa.
Khi thành công, các file voice Tiếng Trung mặc định sẽ bị ghi đè và voice sẽ được đặt lại mặc định (Tiếng Trung). Do đây là một phần của firmware nên có khả năng sẽ bị ghi đè khi cập nhật firmware, mình có cập nhật 1 lần nhưng voice pack không bị ảnh hưởng, mình đoán việc ghi đè phụ thuộc ở bản firmware cập nhật.
Trên đây là các bước được thực hiện trên Windows, trên Mac/Linux có thể sử dụng https://github.com/rytilahti/python-miio (docs: https://python-miio.readthedocs.io/en/latest/vacuum.html ). Cài python-miio qua pip trên python3, sau đó dùng lệnh: mirobo install-sound vi_leminh.pkg (mirobo được cài sẵn nếu bạn sử dụng Home Assistant). Chi tiết vượt quá phạm vi bài viết này.
GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances
Python library & console tool for controlling Xiaomi smart appliances - rytilahti/python-miio
github.com
Mình sử dụng giọng đọc nhân tạo của FPT Text2Speech, giọng nam Miền Bắc (Lê Minh), nếu bạn muốn tự tạo giọng nói riêng có thể tự tạo các file wave. Để biết lời của các câu thoại bạn có thể giải mã voice pack Tiếng Anh mặc định (https://awsbj0.fds.api.xiaomi.com/app/voice-pkg/package/english.pkg), gói này được mã hóa bởi ccrypt (trong thư mục Mirobo v1.0\environment\ccrypt) với mật khẩu "r0ckrobo#23456" (tham khảo: https://github.com/dgiese/dustcloud/blob/94cbb28ada3636170999a02141f1105874bc7403/devices/xiaomi.vacuum/audio_generator/generate_audio.py ). Giải mã bằng lệnh: ccrypt -d -v english.pkg, nó sẽ giải mã và ghi đè lên file cũ, dùng 7zip/WinRAR để mở file đã giải mã này bạn sẽ có thể xem tất cả các file .wav ở trong (mình cũng đã gồm các file đã giải mã trong thư mục en_default cho bạn nào cần nhanh, xiaomi có thể thêm bớt file này khi cập nhật firmware).
Edited: Chỉnh lại link