เปิดปิดคอมพิวเตอร์จาก Home Assistant ผ่าน Wake on LAN และ RPC Shutdown

หลายๆ คนคงเคยเจอปัญหา ออกจากบ้านแล้วลืมปิดคอม หรืออยากรีโมทคอมจากนอกบ้าน แต่คอมดันปิดอยู่ วันนี้เลยจะมาแนะนำวิธีการใช้งาน Wake on LAN และ RPC Shutdown เพื่อเปิด-ปิดคอมพิวเตอร์ผ่าน Home Assistant กันครับ

1. เตรียมคอมพิวเตอร์ให้รองรับ Wake on LAN

– เปิดการใช้งาน Wake on LAN ใน BIOS

การตั้งค่านี้จะแตกต่างไปแต่ละ BIOS แต่ละยี่ห้อเมนบอร์ด สามารถเข้าไปใน BIOS แล้วลองค้นหาดูได้เลยครับ โดยของผมเป็น Asus Maximus XI จะอยู่ที่

Advance > APM Configuration > Power ON By PCI-E

– เปิด Wake on Magic Packet ให้ Network Adapter ใน Windows

คลิกขวาที่ปุ่ม Windows จากนั้นเลือก Device Manager มองหา Network Adapter ที่เราใช้งานอยู่ ในที่นี้ของผมจะเป็น Intel(R) Ethernet Connection I219-V ที่ติดมากับเมนบอร์ดครับ

จากนั้นเลือก Properties ไปที่แท็บ Advance มองหา Property: Wake on Magic Packet แล้วตั้ง Value เป็น Enable ครับ จากนั้นกด OK ก็เป็นอันเสร็จเรียบร้อย

2. เปิด Wake on LAN บน Home Assistant

Intergration Wake on LAN มีอยู่แล้วบน Home Assistant ครับ เราแค่ต้องไปตั้งค่าบน /config/configuration.yaml ก็จะสามารถใช้งานได้เลย

wake_on_lan:
switch:
  - platform: wake_on_lan
    mac: <MAC_ADDRESS>
    name: "<NAME>"
    host: <IP_ADDRESS>

โดยในส่วนของ Switch สิ่งที่ต้องตั้งค่าคือ Mac Address อย่างเดียวครับ ส่วน parameter อื่นๆ จะใส่หรือไม่ก็ได้ ในที่นี้คือตั้งค่า name ซึ่งเป็นชื่อของ Switch และ host ซึ่งคือไอพีของเครื่องเราเพื่อใช้ในการเช็คว่าเครื่องเปิดหรือปิดอยู่ และจะนำมาเป็นสถานะของ Switch ครับ

เท่านี้ก็สามารถใช้งาน Wake ON LAN ได้แล้ว

3. ติดตั้ง RPC Shutdown บน Home Assistant

การปิดคอมที่เป็น Windows นั้นจะต้องติดตั้ง add-on ที่ชื่อว่า RPC Shutdown ก่อนครับ โดยไปที่

Supervisor > Add-on Store > RPC Shutdown > Install

จากนั้นก็ตั้งค่า Add-on โดยไปที่หน้า Add-on แล้วเลือกแท็บ Configuration ครับ

computers:
  - alias: Nuttdam-PC
    address: <IP_ADDRESS>
    credentials: <USERNAME>%<PASSWORD>
    delay: 0
    message: Shutting down Nuttdam's PC from Home Assistant!

โดยการตั้งค่ามี Alias คือชื่อของคอมพิวเตอร์ของเรา, address คือไอพีของคอม และ Credentials โดยการใส่ในรูปแบบของ username%password ครับ และเราสามารถตั้ง message ที่ขึ้นบนหน้าจอก่อนที่คอมจะปิดได้ด้วย

4. เพิ่ม RPC Shutdown เข้าไปยัง Switch

ต่อไปก็ไปตั้งค่า Switch ที่เราสร้างไว้แล้วในการใช้ WoL ครับ โดยเพิ่มการตั้งค่าเข้าไปดังนี้

wake_on_lan:
switch:
  - platform: wake_on_lan
    mac: <MAC_ADDRESS>
    name: "<NAME>"
    host: <IP_ADDRESS>
    turn_off:
      service: hassio.addon_stdin
      data:
        addon: core_rpc_shutdown
        input: Nuttdam-PC

โดยการเพิ่มตัวแปร turn_off เข้าไปตามโค้ดด้านบน และอย่าลืมเปลี่ยน input ให้เป็นชื่อที่เราตั้งไว้ด้วยครับ เท่านี้ตัว Switch ที่เราสร้างไว้ก็สามารถใช้งานได้ทั้งเปิด และปิดคอมแล้วครับ

5. ตั้งค่า Windows ให้รับคำสั่งจาก RPC Shutdown

ถ้าหาก Switch ยังไม่สามารถปิดคอมได้ เราจะต้องทำการตั้งค่าในส่วนของ Windows เพิ่มเติมดังนี้

– เปิด Remote Registry Service

เข้าไปยังหน้า Services ของ Windows หา Service ที่ชื่อ Remote Registry

Run (Windows + R) > services.msc > Remote Registry

จากนั้นคลิกขวาเลือก Properties ตั้งค่า Startup type เป็น Automatic

– ตั้งค่า Windows Firewall

เข้าผ่าน Control Panel โดยไปที่

Control Panel > System and Security > Windows Defender Firewall > Allowed apps

หรือจะค้นหาจาก Windows เลยก็ได้ครับ จากนั้นมองหาแอพที่ชื่อว่า Windows Management Instrumentation (WMI)

เลือก Change settings และ Allow แอพนี้ให้ใช้งานได้ครับ โดยเลือกเป็น Private

– เพิ่ม Registry

เข้าไปยัง Registry Editor ผ่านการค้นหาที่ปุ่ม Windows ครับ แล้วไปที่

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

จากนั้นคลิกขวา เลือก New > DWORD (32-bit) Value ตั้งชื่อว่า LocalAccountTokenFilterPolicy แล้วคลิกขวาที่ Registry เลือก Modify ตั้งค่า Value data เป็น 1 ครับ

6. เพิ่ม Switch เข้าไปยัง Lovelace UI

สุดท้ายทำการเพิ่ม Switch เข้าไปในหน้า Lovelace UI ก็จะสามารถเปิดปิดคอมพิวเตอร์ พร้อมแสดงสถานะได้แล้วครับ โดยจะเลือกใช้ Card แบบไหนก็ได้ และปรับแต่งข้อมูลต่างๆ ได้เลยครับ อันนี้เป็นตัวอย่าง Card ที่ผมใช้อยู่

type: entities
entities:
  - entity: switch.nuttdam_pc
    icon: hass:desktop-classic
    secondary_info: last-changed
title: Nuttdam's PC
state_color: true
show_header_toggle: false

เท่านี้ก็สามารถใช้งาน Wake on LAN และ RPC Shutdown เพื่อเปิดปิดคอมพิวเตอร์ และแสดงสถานะของคอมพิวเตอร์ของเราบน Home Assistant ได้แล้วครับ