Volt korábban egy posztom, amiben a szenvedésemet foglaltam össze a nem működő Wake on LAN-ról.
A firmware és BIOS upgrade-ek nem oldották meg a gondomat, de mindenképpen automatizálni akartam a gépem ki- és bekapcsolását. Végül összedobtam ESPHome-mal egy kis egyszerű kis dobozkányi cuccot.
Túrtam picit a netet, biztonságosan lehet-e kapcsolgatni a gépet így és arra jutottam, hogy igen.
A design
Kiderült, hogy másnak is volt már ilyen problémája, gondolkodtam is rajta, hogy megépítem az ő designját:

Végül csak az ESPHome kódot használtam fel, mert az ellenállások és a tranzisztor helyett inkább optocsatolókat használtam, így az ESP és a számítógépem alaplapja el van egymástól választva galvanikusan.

Ismét fogtam egy univerzális NYÁK-ot, feltettem rá két optocsatolót. Elé tettem egy ellenállást annak, amelyikkel a power gombot nyomogatom.
Az egyik optocsatoló egy kimenet az ESP-n, amivel összezárom a bekapcsológomb érintkezőit, míg a másik egy bemenet és a power ledhez van kötve. A megoldás teljesen az, mint amit az Aroma Diffusernél alkalmaztam.
A kód
Mivel tök ugyan az a design, mint az aroma diffuserben, a kód is majdnem ugyan az:
switch:
# Rövid gomb nyomás, sima be/kikapcsolás vagy bekapcsolás és alvás
- platform: gpio
name: "PC bekapcsológomb"
icon: "mdi:electric-switch"
pin: GPIO25
id: power_short_press
inverted: no
on_turn_on:
- delay: 150ms
- switch.turn_off: power_short_press
# Hosszú gombnyomás, force shutdown
- platform: gpio
name: "PC erőltetett leállítás"
icon: "mdi:electric-switch"
pin: GPIO25
id: power_long_press
inverted: no
on_turn_on:
- delay: 3500ms
- switch.turn_off: power_long_press
# Template switch, amivel ki/be lehet kapcsolni a gépet. Az állapotot a power ledből veszi.
- platform: template
name: "aryx-ryzen számítógép"
lambda: |-
if (id(pc_power_status).state) {
return true;
} else {
return false;
}
turn_on_action:
- switch.turn_on: power_short_press
turn_off_action:
- switch.turn_on: power_short_press
binary_sensor:
# Power LED alapján a számítógép állapota.
- platform: gpio
id: pc_power_status
pin:
number: GPIO26
mode: INPUT_PULLDOWN
name: "PC állapot"
device_class: power
Itt nincs elrejtve viszont a két „gomb” vezérlő, amivel röviden és hosszan meg lehet nyomni a power gombot. Így akár ha valami miatt teljesen lefagyna a gépem, a hosszú gombnyomást is tudom szimulálni, amivel force-olhatom a leállítást.
Mint a fenti képen látható, egy egyszerű kötődobozba tettem bele, a végén pedig egy rövid USB kábel van. Ez most egyelőre ki van vezetve egy PCI slot helyén és a külső portba van bedugva, de már szereztem egy belső USB kábelt, amire ki fogom cserélni.
A gépem átállítottam, hogy készenléti módba lépjen, ha a bekapcsoló gombot megnyomom, így viszonylag gyors a kikapcsolás és a visszakapcsolás is.
Home Assistant

Így
- reggel, ha munkanap van és nincs beírva a naptárba, hogy szabadságon lennék, bekapcsol a gépem, ha hazaérek a boltból,
- be tudom kapcsolni távolról a gépem, ha be kellene rá SSH-zzak, pl. a munkám kapcsán,
- este ki tudom kapcsolni a gépem a mobilomról.
Update: egy ESPHome update után ki kellett vegyem az „erőltetett leállítás” kapcsolót, mert már nem engedi az ESPHome, hogy egy pin két dologhoz legyen kötve. Nem is használtam, ezért nem kerestem rá megoldást.