Là một người đam mê công nghệ và thường xuyên sử dụng Home Assistant, việc tìm cách tích hợp nền tảng này vào các dịch vụ phần cứng và phần mềm hiện có luôn là một thách thức thú vị. Càng đi sâu vào thế giới nhà thông minh, tôi càng khám phá ra những phương pháp độc đáo và hiệu quả để tối ưu hóa trải nghiệm của mình. Một trong những tính năng yêu thích mà tôi đã triển khai thành công là “chế độ chơi game” (game mode) tự động. Hệ thống này kết hợp hai phương pháp riêng biệt để hoạt động liền mạch với cả game Steam và các tựa game ngoài Steam, mang đến trải nghiệm giải trí không gián đoạn.
Để xây dựng chế độ chơi game thông minh này, chúng ta cần hai tích hợp chính. Đầu tiên là tích hợp Steam, yêu cầu một khóa API để truy vấn dữ liệu từ máy chủ Steam, giúp xác định trạng thái trực tuyến của người chơi và tựa game đang chạy. API Web của Steam cho phép tới 100.000 yêu cầu mỗi ngày, một con số quá đủ cho hầu hết các trường hợp sử dụng cơ bản như của chúng ta. Tích hợp thứ hai tận dụng HASS.Agent 2, một công cụ mạnh mẽ có khả năng báo cáo cửa sổ đang mở trên máy tính của bạn. Nếu tên cửa sổ khớp với một tựa game không thuộc Steam, chúng ta cũng có thể kích hoạt chế độ chơi game. Bài viết này sẽ giả định rằng bạn đã thiết lập sẵn Steam integration và HASS.Agent trên hệ thống Home Assistant của mình.
Thiết Lập Cảm Biến Hỗ Trợ “Chế Độ Chơi Game” Trong Home Assistant
Theo Dõi Trạng Thái Chơi Game Của Bạn Một Cách Hiệu Quả
Trước hết, chúng ta cần xác định hai phương pháp chính để nhận diện khi một trò chơi đã được khởi chạy và đang hoạt động. Với tích hợp Steam, việc này trở nên đơn giản hơn nhiều. Ngay cả khi bạn thoát khỏi game trong vài giây để kiểm tra thứ gì đó, cảm biến vẫn sẽ báo hiệu bạn đang “trong game” theo Steam. Điều này không hoàn toàn đúng với HASS.Agent và trạng thái cửa sổ đang mở, một hạn chế mà tôi vẫn chưa tìm ra cách khắc phục triệt để. Chúng ta có thể sử dụng tích hợp Steam để theo dõi trạng thái trực tuyến hoặc ngoại tuyến, và khi một trò chơi được khởi động, cảm biến sẽ cập nhật thêm các thuộc tính bổ sung.
Tích hợp Steam Home Assistant hiển thị trạng thái chơi game và ID trò chơi
Việc thêm các thuộc tính này cực kỳ hữu ích, vì nó có nghĩa là chúng ta không cần phải truy vấn bất kỳ thông tin cụ thể nào. Tất cả những gì chúng ta cần kiểm tra là liệu thuộc tính “game” có tồn tại hay không. Nếu có, điều đó báo hiệu rằng chúng ta đã khởi chạy một trò chơi và có thể sử dụng thông tin này để bật công tắc “chế độ chơi game”. Ngược lại, nếu thuộc tính “game” không tồn tại, chúng ta biết rằng mình không đang chơi game và có thể giữ chế độ chơi game tắt. Phương pháp này sẽ không hoạt động nếu trạng thái chơi game trên Steam của bạn không được công khai, nhưng với hầu hết người dùng, nó sẽ hoạt động tốt.
Cấu hình template binary sensor cho chế độ chơi game Home Assistant với Steam và HASS.Agent
Dưới đây là đoạn mã YAML cho một cảm biến nhị phân mẫu (template binary sensor) đơn giản, dùng để xác định liệu chế độ chơi game có được bật hay tắt:
{{ (state_attr('sensor.adam_steam', 'game') is not none) or (states('sensor.desktop_73d9nef_activewindow') == 'VALORANT') }}
Trong ví dụ này, chúng ta đọc xem thuộc tính “game” có tồn tại trong cảm biến Steam (sensor.adam_steam
) hay không, đồng thời thêm cấu hình cho một tựa game không thuộc Steam là Valorant (sử dụng cảm biến cửa sổ hoạt động từ HASS.Agent sensor.desktop_73d9nef_activewindow
). Với cảm biến này, chúng ta đã có thể kích hoạt một quy trình tự động hóa dựa trên trạng thái hiện tại của cảm biến “chế độ chơi game”.
Xây Dựng Tự Động Hóa Cho Trải Nghiệm Chơi Game Hoàn Hảo
Triển Khai Các Hành Động Tự Động Hóa Thực Tế Trong Home Assistant
Sau khi đã có khả năng nhận diện khi nào chúng ta đang chơi game, bước tiếp theo là quyết định những hành động cần thực hiện. Với hệ thống của tôi, GoXLR đã được liên kết với Home Assistant, cùng với hệ thống đèn chiếu sáng và điện thoại. Hành động đầu tiên và rõ ràng nhất là tự động chuyển điện thoại sang chế độ “không làm phiền” (Do Not Disturb – DND), điều này có thể dễ dàng thực hiện với Home Assistant. Về cơ bản, bạn chỉ cần gửi một thông báo tới thiết bị client với nội dung command_dnd
và dữ liệu command: total_silence
. Lệnh này sẽ khiến ứng dụng Home Assistant trên điện thoại chuyển điện thoại của bạn sang chế độ im lặng hoàn toàn, đảm bảo bạn không bị làm phiền khi đang chơi game. Đây là một tính năng tích hợp khá tiện lợi của Home Assistant, hoạt động như sau:
actions:
- action: notify.mobile_app_cph2671
data:
message: command_dnd
data:
command: total_silence
Tiếp theo, chúng ta thêm một phần “building block” (khối xây dựng) vào tự động hóa. Building blocks là một tính năng nâng cao hơn của Home Assistant, cho phép thực hiện các tác vụ phức tạp như chờ một template được đánh giá, thực hiện chuỗi sự kiện hoặc có một khối if-then lồng ghép bên trong các hành động của bạn. Trong trường hợp này, chúng ta kiểm tra xem đèn trong văn phòng (nơi đặt PC) có đang bật hay không. Nếu có, chúng ta sẽ giảm độ sáng và đặt màu sắc của đèn thành màu đỏ. Đoạn mã YAML cho hành động này cũng khá đơn giản:
- if:
- condition: state
entity_id: light.office_light
state: "on"
then:
- action: light.turn_on
metadata: {}
data:
brightness_pct: 5
rgb_color:
- 237
- 44
- 44
target:
device_id: 7443cc0d215861e4624f05e2ea6c3fb5
Cuối cùng, nhờ vào tích hợp GoXLR, chúng ta sẽ tăng âm lượng “Game” lên 100% và giảm âm lượng nhạc. Điều này giúp chúng ta nghe rõ tiếng game hơn và ngăn nhạc làm nhiễu âm thanh nếu đang nghe nhạc cùng lúc. Bạn cũng có thể tùy chọn tạm dừng Spotify media player thay vì giảm kênh nhạc, nếu bạn đang sử dụng Spotify.
Đây chỉ là một ví dụ đơn giản nhưng hiệu quả, minh họa cách bạn có thể triển khai một hệ thống tự động hóa như vậy. Để đảo ngược quá trình này và lưu trạng thái của các thiết bị trước khi kích hoạt chế độ chơi game, bạn có thể thiết lập trigger để phát hiện bất kỳ thay đổi trạng thái nào, và tạo các biến trợ giúp (helper variables) như input_text
để lưu dữ liệu theo trình tự trước khi thực hiện hành động. Sau đó, với mỗi hành động, bạn sẽ kiểm tra xem trigger có phải là chế độ chơi game được bật hay không. Nếu bật, bạn sẽ lưu trạng thái hiện tại vào biến trợ giúp tương ứng, rồi thực hiện hành động. Nếu bạn muốn đảo ngược, bạn sẽ kiểm tra xem trạng thái có thay đổi từ bật sang tắt hay không, và nếu có, bạn sẽ đặt giá trị của mỗi thiết bị trở lại giá trị đã được lưu trong biến trợ giúp của bạn.
Đây chỉ là một minh chứng về cách bạn có thể xây dựng các tự động hóa mạnh mẽ trong Home Assistant để kiểm soát toàn bộ ngôi nhà của mình. Bạn có thể thực hiện bất cứ điều gì miễn là phần mềm được tích hợp và bạn có thể thu thập dữ liệu từ mọi nơi để ảnh hưởng đến một thiết bị hoàn toàn không liên quan. Việc khởi chạy một trò chơi trên PC có thể tự động chuyển điện thoại của tôi sang chế độ không làm phiền, mà không cần phải chạm vào điện thoại. Điện thoại thậm chí không tham gia trực tiếp vào quá trình này, nhưng Home Assistant đã biến điều đó thành hiện thực. Kể từ đó, tôi đã phát triển hệ thống này đáng kể và nó đã trở thành một phần thiết yếu trong trải nghiệm nhà thông minh của tôi. Bước tiếp theo là thay đổi nội dung hiển thị trên màn hình ePaper đặt cạnh tôi khi chơi game, để tôi thực sự có thể thư giãn và tập trung vào trò chơi.