Là một người đam mê tự động hóa và thường xuyên sử dụng Home Assistant, việc tích hợp nền tảng này vào các thiết bị và dịch vụ hiện có luôn là một thách thức thú vị. Quá trình này đã mở ra nhiều cách tiếp cận độc đáo, và một trong những ứng dụng yêu thích của tôi là việc triển khai “chế độ chơi game” tự động. Tính năng này kết hợp hai phương pháp riêng biệt để hoạt động hiệu quả với cả trò chơi trên Steam và các game ngoài Steam, mang lại trải nghiệm không gián đoạn, tập trung cao độ vào cuộc chơi.
Phương pháp đầu tiên là tích hợp trực tiếp với Steam. Điều này đòi hỏi bạn phải có một API key từ Steam để truy vấn dữ liệu trạng thái trực tuyến của người chơi và trò chơi họ đ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ố đủ lớn cho hầu hết các nhu cầu cơ bản như tự động hóa này. Phương pháp thứ hai tận dụng HASS.Agent 2, một công cụ hữu ích cho người dùng Home Assistant trên Windows, có khả năng báo cáo cửa sổ hiện đ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 trò chơi không phải của 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 đã cài đặt và cấu hình sẵn các công cụ này.
Tạo Cảm Biến Hỗ Trợ “Chế Độ Chơi Game” Trong Home Assistant
Theo dõi trạng thái chơi game qua Steam và HASS.Agent
Trước hết, chúng ta cần xác định hai cách để nhận biết một trò chơi đã được khởi chạy và đang hoạt động. Với Steam, việc này trở nên đơn giản hơn nhiều: ngay cả khi bạn tạm thời thoát ra khỏi game vài giây để kiểm tra thứ gì đó, cảm biến vẫn sẽ báo là bạn đang “trong game” miễn là trò chơi đó vẫn chạy. Điều này không đúng với HASS.Agent, và hiện tại tôi vẫn chưa tìm ra giải pháp khắc phục triệt để. Chúng ta có thể dùng tích hợp Steam để theo dõi trạng thái trực tuyến hoặc ngoại tuyến của bạn. Khi một trò chơi được khởi chạy, cảm biến Steam sẽ tự động cập nhật với các thuộc tính bổ sung, đặc biệt là thông tin về trò chơi đang chơi.
Giao diện Home Assistant hiển thị thông tin tích hợp Steam khi game đang chạy
Việc bổ sung các thuộc tính này cực kỳ hữu ích, vì nó đồng nghĩa với việc chúng ta không cần phải liên tục truy vấn dữ liệu 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 đó nghĩa là bạn đã khởi chạy một trò chơi và chúng ta 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 này không tồn tại, chúng ta biết rằng bạn không ở trong trò chơi, và có thể giữ chế độ chơi game tắt. Điều này chỉ hoạt động nếu trạng thái trò chơi của bạn trên Steam được đặt công khai, nhưng với đa số người dùng, nó sẽ hoàn thành tốt nhiệm vụ.
{{ (state_attr('sensor.adam_steam', 'game') is not none) or (states('sensor.desktop_73d9nef_activewindow') == 'VALORANT') }}
Như vậy, chúng ta đã tạo ra một cảm biến nhị phân (binary sensor) mẫu đơn giản, được định nghĩa dựa trên việc “chế độ chơi game” có đang được bật hay không. Cảm biến này đọc xem thuộc tính “game” có tồn tại trong cảm biến Steam hay không, đồng thời chúng ta cũng đã thêm một cấu hình ví dụ cho một trò chơi không phải Steam, Valorant. 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 của mình.
Cấu hình cảm biến nhị phân Home Assistant để tự động kích hoạt chế độ chơi game
Xây Dựng Quy Trình Tự Động Hóa Chế Độ Chơi Game
Triển khai các hành động tự động hóa cơ bản
Giờ đây, khi chúng ta đã có thể phát hiện thời điểm đang chơi game, đã đến lúc quyết định những hành động cần thực hiện. Cá nhân tôi đã liên kết GoXLR của mình với Home Assistant, cùng với đèn và điện thoại. Hành động đầu tiên và rõ ràng nhất là đặt điện thoại của tôi vào chế độ không làm phiền, điều này có thể dễ dàng thực hiện với Home Assistant. Về cơ bản, bạn gửi một thông báo đến thiết bị khách với thông điệp “command_dnd” và dữ liệu là “command: total_silence”. Điều này khiến ứng dụng Home Assistant thay đổi điện thoại của bạn sang chế độ hoàn toàn im lặng, giúp bạn không bị làm phiền khi 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”. Building block là một tính năng nâng cao hơn của khả năng tự động hóa Home Assistant, cho phép các hành động như chờ một mẫu được đánh giá, thực hiện một chuỗi sự kiện, hoặc có một khối if-then lồng nhau 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 phòng làm việc (nơi đặt PC của tôi) đã bật chưa. Nếu bật, chúng ta giảm độ sáng và đặt màu đèn sang đỏ. Điều này cũng khá đơn giản trong YAML, và trông như sau:
- 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: 7443cc0d215861e4624f05e2ea6c3fb3
Cuối cùng, nhờ tích hợp GoXLR, chúng ta tăng âm lượng “Game” lên 100% và giảm âm lượng nhạc. Điều này cho phép chúng ta nghe game rõ hơn và ngăn âm nhạc làm nhiễu âm thanh nếu đang nghe nhạc cùng lúc. Bạn có thể tùy chọn đặt nó để tạm dừng trình phát nhạc Spotify thay vì giảm kênh nhạc, nếu bạn đang sử dụng Spotify.
Đó là toàn bộ quy trình! Mặc dù đây chỉ là một bản demo cơ bản, nó đã cho thấy chính xác cách bạn có thể triển khai một thứ như “chế độ chơi game” tự động. Để đảo ngược các hành động này và lưu lại trạng thái của các thiết bị trước khi kích hoạt, bạn sẽ cần thiết lập một trigger để phát hiện bất kỳ thay đổi trạng thái nào. Sau đó, tạo các biến hỗ trợ (như input_text
) để lưu dữ liệu vào một chuỗi trước khi thực hiện hành động. 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 lưu trạng thái hiện tại vào biến hỗ trợ tương ứng, sau đó thực hiện hành động. Nếu muốn đảo ngược, bạn kiểm tra xem nó có chuyển từ bật sang tắt hay không, và nếu có, bạn đặt giá trị của mỗi thiết bị trở lại giá trị đã xác định trong biến hỗ trợ của mình.
Tóm lại, bài viết này đã trình bày cách bạn có thể xây dựng các quy trình tự động hóa mạnh mẽ trong Home Assistant để kiểm soát toàn bộ ngôi nhà của mình. Khả năng là vô tận 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 nguồn để ả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ủa tôi có thể tự động đặt điện thoại sang chế độ không làm phiền, mà không cần chạm vào điện thoại chút nào. Điều này cho thấy sức mạnh của Home Assistant trong việc đơn giản hóa cuộc sống và tối ưu hóa trải nghiệm cá nhân. Chế độ chơi game này đã trở thành một phần thiết yếu trong trải nghiệm nhà thông minh của tôi, và tôi tin rằng nó cũng sẽ hữu ích cho bạn. Hãy chia sẻ ý kiến của bạn về cách bạn sẽ tận dụng chế độ chơi game tự động này trong Home Assistant nhé!