Home Assistant

Home Assistant: đưa máy tính Windows lên Hass

Kiểm soát và điều khiển máy tính Windows qua Home Assistant từ mọi nơi

33 phút để đọc hết nội dung

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ốik(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:

  1. 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
  2. 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..
  3. 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

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.

IOTLink Installation

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.

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.

IOTLink MQTT Config

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: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 usernamepassword riêng cho IOTLink tại trang cấu hình của addons Mosquitto như ảnh dưới.

Hass Mosquitto Configs
Cấu hình Username và Password cho nhiều client khác nhau
! 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.

IOTLink Addon Configs

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.

IOTLink Devices in Hass
Mỗi mục trong cấu hình addon IOTLink sẽ là một device trong Hass
Hass IOTLink Power Device
Bạn cũng có thể thêm trực tiếp các Device này vào giao diện Lovelace
Hass IOTLink Screenshot Camera
Thậm chí thể đưa cả screenshot/ảnh chụp màn hình từ máy tính lên Hass như một Camera thế này
! 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 sensorscript 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, serviceservice_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 servicedata 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.

Windows PC Lovelace Card
Giao diện quản lý Windows PC trên Hass
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.

Windows PC Lovelace Conditional Card
Giao diện thu gọn của Card khi máy tính không được bật
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:

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.

Lên Đầu
  • Đăng ký
Bạn quên mất mật khẩu? Vui lòng nhập tên đăng nhập và địa chỉ email đã đăng ký. Bạn sẽ nhận được liên kết tạo mật khẩu mới qua email (bạn nhớ kiểm tra hộp spam trong trường hợp email đi lạc).