Nếu bạn (vẫn còn) sử dụng máy tính Windows, bạn có muốn đưa chúng lên Home Assistant? Đưa lên ở đây bao gồm cả hai chiều: theo dõi tình trạng và điều khiển. Nhiều khách hàng và bạn đọc của KonnectED Việt Nam đặt ra câu hỏi này:
tại sao có thể đưa cái tủ lạnh – 🍅 lên Home Assistant mà lại không thể đưa cái máy tính lên được?
Một câu hỏi thú vị vì rõ ràng máy tính phù hợp với mục đích kết nối – k(c)onnect hơn nhiều. Câu trả lời của chúng tôi, như thông thường:
hoàn toàn có thể theo dõi tình trạng và điều khiển một cái máy tính (cũng như mọi thứ khác) từ Home Assistant, chỉ là có cần thiết và có đáng hay không
Nếu bạn cho là rất đáng thì hãy tiếp tục theo dõi bài viết này. Chúng tôi sẽ hướng dẫn sơ lược cách “đưa một máy tính cá nhân chạy Windows lên Hass”.
Tuy hướng dẫn này là về Home Assistant, bạn có thể dùng cùng hướng dẫn này để sử dụng cho bất cứ nền tảng SmartHome nào hỗ trợ MQTT như Node-RED hay Domoticz.
Tất nhiên cũng sẽ có câu hỏi ngược lại rằng: đưa máy tính lên Hass để làm gì?
Nếu bạn có câu trả lời, vui lòng đăng vào mục Bình luận, còn đây là một số câu trả lời:
- Vì tôi sử dụng tablet Windows 10 để làm bảng điều khiển Home Assistant nên cần theo dõi tình trạng của chúng và cần điều khiển (như mở sạc pin khi pin xuống dưới mức 40%, kích hoạt màn hình khi có người đến gần)
chúng tôi sẽ có một số bài về sử dụng các tablet/màn hình gắn tường điều khiển Hass, mong các bạn đón xem - Vì tôi đang quản lý một lượng máy tính của nhân viên, của con cái v.v..
- Vì thích, vì muốn thử nghiệm (rất nhiều người dùng Hass thuộc nhóm này 😅)
Yêu cầu tối thiểu/khuyến nghị về bảo mật
Bảo mật: máy tính không phải cái tủ lạnh. Bạn không mang cái tủ lạnh ra quán cafe nhưng máy tính thì có, và hack một cái máy tính thì dễ hơn hack cái máy hút bụi rất nhiều (cả 2 đều hack được). Một khi bạn kết nối máy tính vào Hass, có một số thông tin xác thực sẽ được lưu giữ trên bộ nhớ máy tính. Bạn phải chú ý bảo mật các thông tin này, đặc biệt khi bạn sử dụng máy tính của công ty (tốt nhất là đừng) hoặc dùng chung.
Để làm theo hướng dẫn ở bài này, bạn sẽ cần tài khoản có quyền quản trị – Administrator Account của máy tính. Điều này thông thường có nghĩa là tài khoản có quyền chỉnh sửa thiết đặt hệ thống và cài đặt phần mềm. Một số máy tính của tổ chức không cho phép người dùng làm việc này.
Bạn phải sở hữu quyền sử dụng hợp pháp với máy tính này.
Bạn phải có một MQTT Broker (như addon Mosquitto MQTT trên Hass) đang hoạt động.
Hướng dẫn này đã được chúng tôi thử nghiệm hoạt động hoàn hảo trên máy tính chạy Windows 10 phiên bản mới nhất (1803+) và hoạt động khá tốt trên máy tính chạy Windows 7 SP1. Gần như mọi phiên bản Windows từ Windows 7 trở lên đều có thể chạy được, tuy nhiên số lượng và loại tính năng hỗ trợ sẽ khác nhau. Bạn sẽ phải tự trải nghiệm trên hệ thống của mình.
Trên hệ thống Windows 7 chúng tôi thử nghiệm, các tính năng liên quan đến display – màn hình, bật/tắt âm thanh không hoạt động. Tương tự, tính năng shutdown và reboot máy tính hoạt động nhưng tính năng suspend (cho ngủ) không hoạt động.
Các máy tính MacOS/Linux
Với máy tính Linux, khá đơn giản để đưa các thông số lên Hass. Chỉ cần một mqtt client (như mosquitto_sub) hoặc http client (như curl) và một đoạn script đơn giản. Để điều khiển từ Hass thì sẽ phức tạp hơn một chút nhưng vẫn không có gì khó.
Với máy tính chạy MacOS, việc theo dõi trạng thái và điều khiển sẽ khó hơn một chút do các giới hạn bảo mật đến từ Apple nhưng vẫn là có thể.
Nếu bạn cần đưa các máy này lên Hass, hãy gửi yêu cầu ở mục Bình luận cuối bài viết này. Chúng tôi sẽ cố gắng đưa ra hướng dẫn.
Cài đặt và cấu hình máy tính Windows
Cài phần mềm IOTLink
Trước tiên bạn cần tải về và cài đặt phiên bản mới nhất – hiện tại là 2.1.1 của phần mềm IOTLink (cho cả hệ thống 32bit và 64bit) tại đây: tải về IOTLink.
Sau khi tải về, cài đặt phần mềm này bằng cách click chuột phải vào file cài đặt, chọn Run as administrator rồi đồng ý để cài đặt. Phần mềm cần có .NET Framework 4.7.2 (bộ runtime từ Microsoft) để hoạt động, nếu máy tính bạn chưa có sẵn, trong quá trình cài đặt, phần mềm IOTLink sẽ tự yêu cầu được cấp quyền tải về và cài.
Tuy nhiên nếu quá trình trên không thành công, bạn có thể tải về rồi cài đặt thủ công từ trang web của Microsoft tại liên kết tải về .Net Framework 4. Bạn chỉ cần tải bản Runtime.
Tải về và cài đặt .Net Framework trước, sau đó cài IOTLink.
Bạn chọn cài đặt cả 2 addons Commands và Windows Monitor để thực hiện được hai tính năng theo dõi và điều khiển. Nếu chỉ muốn một trong hai tính năng, bạn chọn addon tương ứng.
Sau khi hoàn tất cài đặt, IOTLink sẽ cài đặt tiếp service để khởi chạy cùng Windows và thực hiện các tính năng của phần mềm. Sẽ có thông báo khi hoàn tất, hoặc bạn cũng có thể tự cài đặt bằng cách chọn Start Menu > All Programs > IOT Link > Install Windows Services.
Phần mềm IOT Link là an toàn theo thử nghiệm của cộng đồng và theo mã nguồn của họ (công bố tại đây), tuy nhiên một số chương trình chống virus vẫn có thể đưa ra cảnh báo và/hoặc ngăn phần mềm IOTLink kết nối đến MQTT Broker. Bạn sẽ cần thay đổi cấu hình của các phần mềm diệt virus hay tường lửa này cho phù hợp.
Cấu hình IOTLink
Phần mềm IOTLink sẽ công bố – publish trạng thái và nhận lệnh điều khiển từ Hass qua giao thức MQTT. Nếu bạn chưa rõ về MQTT, bạn có thể xem bài viết: Giao thức MQTT từ chuyên mục Tech – Công Nghệ chung.
IOTLink cũng không đi cùng giao diện đồ hoạ GUI, mọi cấu hình phần mềm này phải thực hiện bằng cách trực tiếp chỉnh sửa file cấu hình. File này sử dụng ngôn ngữ YAML, tương tự như Hass. Bạn có thể chỉnh sửa bằng các trình soạn thảo văn bản thô như Notepad đi cùng Windows hoặc trình soạn thảo code chuyên dụng (có thể bạn đang dùng để chỉnh sửa cấu hình Hass) như NotePad++ hay Visual Studio Code.
Trước tiên, ta cần cấu hình MQTT để phần mềm có thể kết nối được đến MQTT Broker.
Cấu hình MQTT
Trên máy tính Windows, bạn vào Start Menu > All Programs > IOT Link > Open Configuration File để mở file cấu hình configuration.yaml. Bạn cũng có thể truy cập file này với đường dẫn C:\ProgramData\IOTLink\Configs\configuration.yaml
giả sử rằng bạn cài đặt phần mềm IOTLink tại C:\ProgramData\IOTLink.
Bạn thêm hoặc thay đổi nội dung ở các mục tương ứng:
port:
cổng của MQTT, thông thường là 1883 cho kết nối mqtt, 8883 cho kết nối mã hoá mqtts
hostname:
tên miền hoặc ip của MQTT Broker. Nếu bạn đang dùng MQTT trên máy chủ Hass thì có thể điền IP của máy chủ hoặc tên miền. Sử dụng tên miền và cấu hình MQTT phù hợp sẽ giúp điều khiển máy tính này ở mọi nơi, miễn là có kết nối Internet. Xem ở dưới: chú ý về bảo mật.
secure:
kết nối qua mqtt hay mqtts
discovery:
cấu hình hỗ trợ tính năng MQTT Discovery của Hass.
username:
và password:
tên tài khoản và mật khẩu kết nối vào MQTT Broker. Nếu bạn sử dụng addons Mosquitto MQTT trên Hass, bạn có thể tạo username và password riêng cho IOTLink tại trang cấu hình của addons Mosquitto như ảnh dưới.
Chú ý về bảo mật
Nếu dự định mang máy tính này đi khắp nơi, bạn hãy thiết lập kết nối qua giao thức mqtts bằng tuỳ chọn secure và thay đổi port.
Hãy đặt username và mật khẩu an toàn và riêng cho mọi thiết bị có khả năng kết nối đến mqtt từ bên ngoài nhà/mạng nội bộ của bạn. Không dùng chung tài khoản.
Tiến hành phân quyền ACL cho Mosquitto để ngăn các thiết bị này truy cập vào các topic không cần thiết.
Sau khi hoàn tất cấu hình, bạn lưu lại cấu hình này. IOTLink sẽ tự động tải lại cấu hình và kết nối vào MQTT Broker.
Bạn có thể xem Nhật ký – Logs của IOTLink bằng cách vào Start Menu > All Programs > IOT Link > Open Logs Folder, mục Service_log_xxx.txt.
Cấu hình Addon
Sau khi kết nối thành công đến MQTT, IOTLink sẽ publish các thông tin máy từ máy tính lên các topic con tương ứng bên dưới topic chính iotlink/konnected/duytruong-pc/windows-monitor/stats/
đồng thời subscribe vào các topic con khác nằm dưới topic iotlink/konnected/duytruong-pc/commands/
Trong đó konnected là workgroup và duytruong-pc là tên của máy tính. Bạn có thể xem và thay đổi các tên này trong mục Control Panel\All Control Panel Items\System.
Nếu bạn muốn thay đổi số lượng thông tin được gửi đi cũng như thời gian giữa các lần cập nhật, cần chỉnh sửa file cấu hình addon của IOTLink bằng cách vào Start Menu > All Programs > IOT Link > Open Addons Folder, trong thư mục WindowsMonitor > config.yaml.
enabled:
để kích hoạt các thành phần bạn muốn theo dõi
interval:
số giây giữa hai lần publish lên MQTT Broker
cache: true
chỉ publish khi thông số thay đổi so với lần đo trước.
Nếu bạn không thích một số sensor trên Hass bị chuyển sang unknown do không được cập nhật sau một khoảng thời gian thì hãy chọn giá trị false.
Tương tự như bước trên, sau khi cấu hình xong, bạn lưu lại file này và IOTLink sẽ tự tải lại cấu hình mới.
Cấu hình Home Assistant
Cấu hình các sensor
Nếu bạn đang kích hoạt tính năng MQTT Discovery trong Hass, các sensor từ IOTLink sẽ được tự động nhận dạng. Bạn có thể xem trong mục Configuration > Integrations > Devices.
MQTT Discovery không tìm thấy IOTLink device
MQTT Discovery được kích hoạt mặc định trong Hass. Tuy nhiên, đôi khi việc này cũng không giúp nhận ra các thiết bị cấu hình qua MQTT. Trước tiên, bạn cần khởi động lại máy tính chạy IOTLink và trong lúc đó khởi động lại addon Mosquitto rồi khởi động lại Hass.
Nếu vẫn không được, có lẽ bạn cần cấu hình MQTT thủ công cho Hass. Hãy tạo thêm username và password riêng cho Hass như ảnh trong bước phía trên, sau đó cấu hình MQTT trong Hass tại file /config/configuration.yaml như bên dưới. Nhớ thay đổi username/password do bạn tạo.
mqtt: discovery: true broker: core-mosquitto username: konnected password: konnected birth_message: topic: 'hass/status' payload: 'online' will_message: topic: 'hass/status' payload: 'offline'
Sau khi cấu hình, khởi động lại Hass rồi kiểm tra xem các thiết bị IOTLink có được nhận dạng hay không.
Nếu bạn không sử dụng MQTT Discovery thì có thể chọn cấu hình thủ công cho từng sensor như cấu hình mẫu bên dưới.
Chỉ tạo các sensor tương ứng với thông tin bạn muốn theo dõi và nhớ thay đổi các thông số cho đúng.
Cấu hình IOTLink sensor thủ công
binary_sensor: - platform: mqtt name: "My Computer - Connected" state_topic: "iotlink/workgroup/my-computer/lwt" value_template: "{{ value }}" payload_on: "ON" payload_off: "OFF" device_class: "connectivity" qos: 1 - platform: mqtt name: "My Computer - Charging" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/power/status" value_template: "{{ value }}" payload_on: "Online" payload_off: "Offline" device_class: "plug" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Battery Status" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/battery/status" value_template: "{{ value }}" payload_on: "Online" payload_off: "Offline" device_class: "plug" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 sensor: - platform: mqtt name: "My Computer - Current User" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/system/current-user" unit_of_measurement: '' icon: mdi:account value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Idle Time" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/system/idle-time" unit_of_measurement: 'seconds' icon: mdi:timer value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - CPU Usage" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/cpu/usage" unit_of_measurement: '%' icon: mdi:speedometer value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - RAM Usage" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/memory/usage" unit_of_measurement: '%' icon: mdi:memory value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - RAM Available" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/memory/available" unit_of_measurement: 'MB' icon: mdi:memory value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - RAM Used" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/memory/used" unit_of_measurement: 'MB' icon: mdi:memory value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - RAM Total" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/memory/total" unit_of_measurement: 'MB' icon: mdi:memory value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Remaining Battery" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/battery/remaining-percent" unit_of_measurement: '%' device_class: battery value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Remaining Battery Time" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/battery/remaining-time" unit_of_measurement: 'minutes' icon: mdi:timer value_template: "{{ ( value | float / 60 ) | int }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Predicted Lifetime" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/battery/full-lifetime" unit_of_measurement: 'minutes' icon: mdi:timer value_template: "{{ ( value | float / 60 ) | int }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Usage (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/drive-usage" unit_of_measurement: '%' icon: mdi:chart-donut value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Total Size (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/total-size" unit_of_measurement: 'GB' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Total Free Space (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/total-free-space" unit_of_measurement: 'GB' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Free Space (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/available-free-space" unit_of_measurement: 'GB' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Used Space (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/used-space" unit_of_measurement: 'GB' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Format (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/drive-format" unit_of_measurement: '' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - HDD Label (C)" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/hard-drive/c/volume-label" unit_of_measurement: '' icon: mdi:harddisk value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Network IPv4" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/network/0/ipv4" unit_of_measurement: '' icon: mdi:lan value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Network IPv6" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/network/0/ipv6" unit_of_measurement: '' icon: mdi:lan value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Network Speed" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/network/0/speed" unit_of_measurement: 'Mbps' icon: mdi:speedometer value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 - platform: mqtt name: "My Computer - Network Wired" state_topic: "iotlink/workgroup/my-computer/windows-monitor/stats/network/0/wired" unit_of_measurement: '' icon: mdi:ethernet value_template: "{{ value }}" availability_topic: "iotlink/workgroup/my-computer/lwt" payload_available: "ON" payload_not_available: "OFF" qos: 1 camera: - platform: mqtt name: "My Computer - Screen 0" topic: "iotlink/workgroup/my-computer/windows-monitor/stats/display/0/screen" switch: - platform: template switches: my_computer: friendly_name: "My Computer" value_template: "{{ is_state('binary_sensor.my_computer_connected', 'on') }}" turn_on: service: script.my_computer_wake turn_off: service: script.my_computer_shutdown icon_template: mdi:laptop
Cấu hình các script điều khiển
Bạn sẽ cần cấu hình các script để điều khiển máy tính này từ Hass hoặc bạn có thể dùng cách gọi các service mqtt.publish với topic và payload tương ứng. Tuy nhiên, tạo script dành cho các thao tác thường dùng sẽ thuận tiện hơn.
Bạn tạo script này trong /config/scripts.yaml hoặc tuỳ theo file bạn cấu hình Hass. Chỉ tạo các script cần thiết và nhớ thay đổi cấu hình script cho đúng.
#IOTLink Begin-- my_computer_wake: alias: "DT-PC - Wake" sequence: - service: wake_on_lan.send_magic_packet data: mac: "70:85:C2:63:9F:11" my_computer_shutdown: alias: "DT-PC - Shutdown" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/shutdown" payload: "" my_computer_suspend: alias: "DT-PC - Suspend" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/suspend" payload: "" my_computer_hibernate: alias: "DT-PC - Hibernate" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/hibernate" payload: "" my_computer_reboot: alias: "DT-PC - Reboot" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/reboot" payload: "" my_computer_lock: alias: "DT-PC - Lock" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/lock" payload: "" my_computer_logoff: alias: "DT-PC - Logoff" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/logoff" payload: "" my_computer_vol_mute: alias: "DT-PC - Toggle Mute" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/volume/mute" payload: "" my_computer_vol_max: alias: "DT-PC - Vol Max" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/volume/set" payload: "100" my_computer_displays_on: alias: "DT-PC - Displays ON" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/displays/on" payload: "" my_computer_displays_off: alias: "DT-PC - Displays OFF" sequence: - service: mqtt.publish data: topic: "iotlink/konnected/duytruong-pc/commands/displays/off" payload: "" #-- End IOTLink
Riêng với script.my_computer_wake
, bạn sẽ phải kết nối máy tính này vào mạng bằng cáp (Ethernet cable), máy tính phải hỗ trợ tính năng Wake On Lan và bạn phải mở integration này trên Hass bằng cách thêm dòng wake_on_lan:
vào file cấu hình /config/configuration.yaml của Hass.
Trong cấu hình mẫu trên, mac: là địa chỉ mac của card Ethernet của máy tính.
Bạn cũng có thể cấu hình thêm các script khác, ví dụ script.my_computer_volume_set để cài đặt mức âm lượng bằng cách publish giá trị của một, ví dụ, input_number vào topic: “iotlink/konnected/duytruong-pc/commands/volume/set”.
Tạo giao diện quản lý và điều khiển trên Lovelace
Sau khi tạo các sensor và script thành công, ta sẽ thêm các thông số chính của máy tính này vào giao diện Lovelace. Cấu hình và giao diện mẫu như bên dưới, bạn cần thay tên, các entity_id, service và service_data cho phù hợp với cấu hình của mình.
Đây chỉ là cấu hình mẫu, bạn có thể sử dụng các cách khác để thực hiện.
Để dùng cấu hình mẫu, trong Lovelace, chọn Configure UI > thêm một Manual Card rồi thay thế nội dung sẵn có bằng code ở dưới. Sau đó bạn có thể chuyển sang chế độ Visual Editor (Chỉnh sửa trực quan) để thay thế các nội dung và entity cho đúng.
Lưu ý các service, bạn cần đổi service và data cho chính xác. Bạn có thể dùng bất cứ service nào có thể bật máy tính mà không cần dùng dịch vụ wake_on_lan.
cards: - cards: - entity: sensor.duytruong_pc_cpu_usage name: CPU Usage max: 100 min: 0 severity: green: 0 red: 60 yellow: 30 type: gauge - entities: - entity: sensor.duytruong_pc_network_0_bytes_received hours_to_show: 8 refresh_interval: 0 type: history-graph type: horizontal-stack - cards: - entities: - entity: sensor.duytruong_pc_system_uptime name: Uptime - entity: sensor.duytruong_pc_memory_usage name: Mem Usage - entity: sensor.duytruong_pc_battery_remaining name: Battery type: entities - entities: - entity: binary_sensor.duytruong_pc_power_status name: Power Plugged - entity: sensor.duytruong_pc_storage_c_usage name: 'C: Usage' - entity: >- sensor.duytruong_pc_default_output_speakers_high_definition_audio_device_volume icon: 'mdi:volume-high' name: Vol Level type: entities type: horizontal-stack - cards: - entity: binary_sensor.duytruong_pc_power_status hold_action: action: call-service confirmation: text: Bạn muốn Standby máy tính này? service: script.my_computer_suspend icon: 'mdi:power' name: Power ON show_icon: true show_name: true state_color: true tap_action: action: call-service service: wake_on_lan.send_magic_packet service_data: mac: '70:85:C2:63:9F:11' type: button - entity: script.my_computer_displays_on hold_action: action: call-service service: script.my_computer_displays_off icon: 'mdi:monitor-screenshot' name: Display ON show_icon: true show_name: true state_color: true tap_action: action: call-service service: script.my_computer_displays_on type: button - entity: >- binary_sensor.duytruong_pc_default_output_speakers_high_definition_audio_device_volume_muted hold_action: action: call-service service: script.my_computer_vol_mute icon: 'mdi:volume-medium' name: Mute show_icon: true show_name: true state_color: true tap_action: action: call-service service: script.my_computer_vol_mute type: button type: horizontal-stack type: vertical-stack title: Duy Truong PC @KonnectED
Nếu một số entity chuyển sang trạng thái unknown do không được cập nhật định kỳ, bạn hãy chọn cache: false trong cấu hình addons của phần mềm IOTLink như hướng dẫn ở bước trên nếu muốn thể hiện chúng trên Lovelace.
Nếu máy tính này không thường được mở và bạn muốn thu gọn giao diện điều khiển khi nó không mở, hãy sử dụng conditional card để làm việc đó.
Bên dưới là cấu hình mẫu sử dụng conditional card để chỉ hiển thị trạng thái power của máy tính nếu đang ‘off’/’unavailable’ và hiển thị đầy đủ nếu đang ‘on’. Bạn có thể bấm vào card này để gọi service bật máy tính.
type: horizontal-stack cards: - type: conditional conditions: - entity: binary_sensor.duytruong_pc_power_status state_not: 'on' card: type: entities entities: - entity: binary_sensor.duytruong_pc_power_status name: Duy Truong PC @KonnectED icon: 'mdi:laptop-windows' tap_action: action: call-service confirmation: text: Bạn muốn BẬT máy tính này? service: wake_on_lan.send_magic_packet service_data: mac: '70:85:C2:63:9F:11' - type: conditional conditions: - entity: binary_sensor.duytruong_pc_power_status state: 'on' card: type: vertical-stack title: Duy Truong PC @KonnectED cards: - cards: - entity: sensor.duytruong_pc_cpu_usage name: CPU Usage max: 100 min: 0 severity: green: 0 red: 60 yellow: 30 type: gauge - entities: - entity: sensor.duytruong_pc_network_0_bytes_received hours_to_show: 4 refresh_interval: 0 type: history-graph type: horizontal-stack - cards: - entities: - entity: sensor.duytruong_pc_system_uptime name: Uptime - entity: sensor.duytruong_pc_memory_usage name: Mem Usage - entity: sensor.duytruong_pc_battery_remaining name: Battery type: entities - entities: - entity: binary_sensor.duytruong_pc_power_status name: Power Plugged - entity: sensor.duytruong_pc_storage_c_usage name: 'C: Usage' - entity: >- sensor.duytruong_pc_default_output_speakers_high_definition_audio_device_volume icon: 'mdi:volume-high' name: Vol Level type: entities type: horizontal-stack - cards: - entity: binary_sensor.duytruong_pc_power_status hold_action: action: call-service confirmation: text: Bạn muốn Standby máy tính này? service: script.my_computer_suspend icon: 'mdi:power' name: Power ON show_icon: true show_name: true state_color: true tap_action: action: call-service service: wake_on_lan.send_magic_packet service_data: mac: '70:85:C2:63:9F:11' type: button - entity: script.my_computer_displays_on hold_action: action: call-service service: script.my_computer_displays_off icon: 'mdi:monitor-screenshot' name: Display ON show_icon: true show_name: true state_color: true tap_action: action: call-service service: script.my_computer_displays_on type: button - entity: >- binary_sensor.duytruong_pc_default_output_speakers_high_definition_audio_device_volume_muted hold_action: action: call-service service: script.my_computer_vol_mute icon: 'mdi:volume-medium' name: Mute show_icon: true show_name: true state_color: true tap_action: action: call-service service: script.my_computer_vol_mute type: button type: horizontal-stack
Nguồn/Tham khảo:
- https://gitlab.com/iotlink/iotlink/-/wikis/Integrations/Home-Assistant
- https://www.home-assistant.io/integrations/wake_on_lan
- https://www.home-assistant.io/lovelace/conditional/
- https://www.home-assistant.io/docs/mqtt/discovery/
Về Bài viết
Bài viết chưa đầy đủ hoặc bạn còn có ý kiến khác? Bạn có thắc mắc và cần thêm thông tin. Vui lòng đăng ý kiến vào mục bình luận để tác giả và Team có thêm thông tin cải thiện chất lượng bài viết. Chúng tôi sẽ giải đáp các thắc mắc ngay trong mục bình luận để giúp được nhiều đọc giả với cùng vấn đề hơn hoặc chúng tôi sẽ trả lời trong một bài viết riêng. Trân trọng cảm ơn bạn!
Cảm ơn bạn đã xem bài viết này!
konnectED Team.