Quante volte ti sei alzato dalla poltrona per accendere il PC in ufficio prima di iniziare una sessione di gaming o lavoro remoto? Con Wake-on-LAN (WOL) e Home Assistant puoi accendere qualsiasi computer della rete con un tap sullo smartphone, automazione temporizzata o persino comando vocale Alexa/Google. Il magic packet WOL è standard supportato da 99% delle schede di rete moderne, sia Ethernet che WiFi (limitazioni), e funziona anche con PC completamente spento (non solo sleep).
In questa guida completa creiamo switch Home Assistant bidirezionale: tap per accendere PC via WOL, altro tap per spegnere tramite RPC Shutdown (Windows) o SSH (Linux/Mac), con rilevamento stato automatico tramite ping sensor che mostra se PC è online/offline in tempo reale. Bonus: automazioni avanzate come spegnimento automatico dopo inattività, accensione condizionale quando arrivi a casa, e risparmio energetico stimato 50-100€/anno per PC acceso 24/7 ridotto a on-demand.
Cos’è Wake-on-LAN e come funziona
Magic packet: il “grilletto” hardware
Wake-on-LAN (WOL) è standard di rete che permette di accendere computer spento inviando speciale pacchetto UDP chiamato “magic packet”.
Struttura magic packet:
-
6 byte FF (header):
FF FF FF FF FF FF -
16 ripetizioni MAC address target: MAC ripetuto 16 volte consecutivamente
-
Dimensione totale: 102 byte (6 header + 96 MAC ripetuti)
Come funziona tecnicamente:
-
Scheda di rete rimane sempre alimentata (anche PC spento) tramite standby 5V da PSU
-
Chip WOL sulla NIC ascolta continuamente broadcast UDP porta 9 (o 7)
-
Quando riceve magic packet con proprio MAC address → attiva segnale PME (Power Management Event)
-
PME va a motherboard → trigger power-on pin → PC si accende come se avessi premuto bottone fisico
Consumo standby: 0,5-2W (scheda di rete sempre alimentata in ascolto).
Limitazioni da conoscere
Non funziona se:
-
PC completamente staccato da corrente (presa spenta, UPS scarico)
-
WOL disabilitato in BIOS/UEFI (default spesso disabilitato)
-
Driver NIC non supporta WOL (raro su hardware moderno)
-
Switch/router blocca broadcast UDP (alcune configurazioni enterprise)
WiFi WOL problematico:
-
Molte schede WiFi disabilitano radio quando PC spento → non ricevono magic packet
-
Soluzione: usa Ethernet per WOL affidabile, oppure verifica specifiche scheda WiFi (Intel AX201/AX211 supportano WOL, Realtek no)
Abilitare Wake-on-LAN sul PC
1: Configurazione BIOS/UEFI
Riavvia PC e entra in BIOS (tasto Del, F2, o F12 all’avvio, dipende da marca):
Cerca opzioni (nomi variano per produttore):
-
Wake on LAN o WOL
-
Wake on PCI/PCIe
-
Power on by PCIE device
-
Resume on LAN
-
PME Event Wake Up
Imposta su: Enabled
ASUS BIOS: Advanced → APM Configuration → Power On By PCI-E
MSI BIOS: Settings → Advanced → Wake Up Event Setup → Resume By PCI-E Device
Gigabyte BIOS: BIOS Features → Wake on LAN Enable
Salva e esci (F10).
2: Configurazione Windows
Abilita WOL in driver scheda di rete:
-
Pannello di Controllo → Gestione dispositivi (o
devmgmt.msc) -
Espandi Schede di rete → tasto destro sulla scheda Ethernet → Proprietà
-
Tab Avanzate → cerca opzioni:
-
Wake on Magic Packet: Enabled
-
Wake on pattern match: Enabled (opzionale)
-
Energy-Efficient Ethernet: Disabled (se presente, può bloccare WOL)
-
-
Tab Risparmio energia:
-
☑️ Consenti al dispositivo di riattivare il computer
-
☑️ Consenti solo a un magic packet di riattivare il computer
-
OK → chiudi
Disabilita Avvio rapido Windows (impedisce WOL):
-
Pannello di Controllo → Opzioni risparmio energia
-
Specifica comportamento pulsanti di alimentazione
-
Deseleziona ☐ Attiva avvio rapido (scelta consigliata)
-
Salva modifiche
3: Configurazione Linux
Verifica supporto WOL:
sudo ethtool eth0 | grep Wake-on
Output esempio:
Supports Wake-on: pumbg Wake-on: d
Legenda flags:
-
d = disabled (disabilitato)
-
g = magic packet (quello che vogliamo)
-
p = physical activity
-
u = unicast
Abilita WOL:
sudo ethtool -s eth0 wol g
Rendi persistente dopo riboot (crea systemd service):
sudo nano /etc/systemd/system/wol.service
Incolla:
[Unit] Description=Configure Wake-on-LAN [Service] Type=oneshot ExecStart=/sbin/ethtool -s eth0 wol g [Install] WantedBy=basic.target
Abilita service:
sudo systemctl daemon-reload sudo systemctl enable wol.service
4: Configurazione macOS
System Preferences → Energy Saver:
-
Wake for network access (Ethernet)
Nota: WiFi WOL su Mac molto inaffidabile, usa solo Ethernet.
Fase 2: Ottenere MAC address del PC
1: Windows
Command Prompt (Win+R → cmd):
ipconfig /all
Cerca sezione Ethernet adapter (non WiFi) → copia Indirizzo fisico:
Indirizzo fisico: 20-CF-30-32-F7-89
Formato Home Assistant: 20:CF:30:32:F7:89 (cambia trattini in due punti).
2: Linux
ip link show eth0
Output:
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
MAC address: 52:54:00:12:34:56
3: macOS
ifconfig en0 | grep ether
Output:
ether a4:83:e7:12:34:56
4: Router/DHCP lease
Accedi interfaccia web router → DHCP Clients o Connected Devices → trova PC per hostname → copia MAC address.
Fase 3: Integrazione Wake-on-LAN Home Assistant
Aggiungere integrazione WOL
Metodo 1: UI (consigliato):
-
Impostazioni → Dispositivi e Servizi → + Aggiungi integrazione
-
Cerca Wake on LAN → seleziona
-
Integrazione aggiunta (no configurazione necessaria)
Metodo 2: YAML:
Aggiungi in configuration.yaml:
# Abilita integrazione WOL wake_on_lan:
Riavvia Home Assistant.
Testare servizio WOL manualmente
Developer Tools → Services → cerca wake_on_lan.send_magic_packet:
Compila campi:
-
mac:
20:CF:30:32:F7:89(tuo MAC address) -
broadcast_address:
255.255.255.255(broadcast locale, default) -
broadcast_port:
9(porta UDP standard WOL)
Call Service → PC dovrebbe accendersi in 5-10 secondi.
Se non funziona:
-
Verifica BIOS WOL enabled
-
Controlla firewall router non blocca UDP port 9 broadcast
-
Assicurati PC collegato a corrente e switch/router acceso
Fase 4: Ping sensor per rilevare stato PC
Perché serve ping sensor
Per creare switch bidirezionale (on/off) serve sapere stato corrente PC: online (acceso) o offline (spento).
Ping sensor invia ICMP echo request periodicamente e rileva se host risponde.
Aggiungere ping sensor
Metodo UI:
-
Impostazioni → Dispositivi e Servizi → + Aggiungi integrazione
-
Cerca Ping (ICMP) → seleziona
-
Host: inserisci IP fisso PC (es.
192.168.1.50) -
Nome:
PC Ufficio(personalizza) -
Invia
Entità create:
-
binary_sensor.pc_ufficio– stato on/off -
sensor.pc_ufficio_round_trip_time_avg– latenza ping media (ms)
Metodo YAML:
# configuration.yaml
binary_sensor:
- platform: ping
host: 192.168.1.50
name: "PC Ufficio"
count: 2
scan_interval: 30 # Ping ogni 30 secondi
Assegnare IP statico al PC
Problema: se PC prende IP dinamico DHCP diverso dopo riavvio, ping sensor perde traccia.
Soluzione: DHCP reservation sul router → PC riceve sempre stesso IP.
Procedura generica:
-
Router → DHCP Settings → Address Reservation
-
Aggiungi: MAC address PC → IP fisso desiderato (es.
192.168.1.50) -
Salva e riavvia PC
Alternative:
-
IP statico su PC (impostazioni rete Windows/Linux)
-
Ping usando hostname invece IP (richiede mDNS funzionante)
Template binary sensor con delay_off
Problema: ping sensor diventa “off” immediatamente quando PC non risponde (es. carico CPU momentaneo, sospensione breve) → false negative.
Soluzione: delay_off – considera PC offline solo dopo 5 minuti di mancate risposte consecutive:
# configuration.yaml
binary_sensor:
- platform: template
sensors:
pc_ufficio_online:
friendly_name: "PC Ufficio Online"
device_class: connectivity
delay_off:
minutes: 5
value_template: >-
{{ is_state('binary_sensor.pc_ufficio', 'on') }}
Riavvia HA → usa binary_sensor.pc_ufficio_online nelle automazioni (più affidabile).
Fase 5: Template switch WOL + Shutdown
Creare switch template bidirezionale
Template switch combina:
-
Turn ON → servizio
wake_on_lan.send_magic_packet -
Turn OFF → servizio shutdown (RPC Windows o SSH Linux)
-
Stato → ping sensor
Aggiungi in configuration.yaml
# Abilita WOL integration
wake_on_lan:
# Template switch
switch:
- platform: template
switches:
pc_ufficio:
friendly_name: "PC Ufficio"
unique_id: pc_ufficio_wol_switch
value_template: "{{ is_state('binary_sensor.pc_ufficio_online', 'on') }}"
icon_template: >-
{% if is_state('binary_sensor.pc_ufficio_online', 'on') %}
mdi:desktop-tower
{% else %}
mdi:desktop-tower-off
{% endif %}
turn_on:
- service: wake_on_lan.send_magic_packet
data:
mac: "20:CF:30:32:F7:89" # Sostituisci con tuo MAC
- service: notify.mobile_app
data:
message: "🖥️ Accensione PC Ufficio in corso..."
turn_off:
# Configurazione shutdown vedi sezioni successive (Windows/Linux)
- service: notify.mobile_app
data:
message: "⚠️ Shutdown non configurato ancora"
Riavvia HA → nuovo switch switch.pc_ufficio appare.
Testare switch WOL
Developer Tools → Stati → cerca switch.pc_ufficio:
-
Dovrebbe mostrare stato off (PC spento) o on (PC acceso) basandosi su ping sensor
Tap switch ON → PC si accende, dopo 30-60 secondi ping sensor rileva online → switch diventa on automaticamente.
Fase 6: Shutdown remoto Windows (RPC Shutdown)
Cos’è RPC Shutdown Add-on
RPC Shutdown è add-on Home Assistant Supervisor che usa Windows RPC (Remote Procedure Call) per inviare comando shutdown remoto a PC Windows.
Requisiti:
-
Home Assistant con Supervisor (HAOS, Supervised installation)
-
PC Windows con Remote Registry service abilitato
-
Credenziali administrator Windows
1: Installare RPC Shutdown Add-on
-
Impostazioni → Add-ons → Add-on Store
-
Cerca RPC Shutdown → Install
-
Attendi installazione completa (2-3 minuti)
2: Configurare Add-on
Tab Configuration nell’add-on:
computers:
- alias: pc-ufficio
address: 192.168.1.50 # IP PC Windows
credentials: username%password # Username e password Windows (formato user%pass)
delay: 0
message: >-
Home Assistant sta spegnendo questo PC. Salva il lavoro!
Parametri:
-
alias: nome identificativo (senza spazi, usato nelle automazioni)
-
address: IP fisso PC
-
credentials:
username%password(usa % come separatore) -
delay: ritardo shutdown (0 = immediato, 60 = 1 minuto)
-
message: messaggio mostrato su PC prima shutdown
Salva configurazione → Tab Info → Start add-on → abilita Start on boot.
3: Configurare Windows per RPC
A) Avvia Remote Registry Service:
-
Windows: Win+R →
services.msc→ OK -
Trova Remote Registry → doppio click
-
Startup type: Automatic
-
Click Apply → Start
-
OK
B) Aggiungi Policy Registry (risolve errore “Access Denied”):
-
Win+R →
regedit→ OK -
Naviga:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -
Tasto destro → New → DWORD (32-bit) Value
-
Nome:
LocalAccountTokenFilterPolicy -
Doppio click → valore:
1 -
OK → chiudi Registry Editor
C) Firewall WMI (se firewall attivo):
-
Windows Firewall → Impostazioni avanzate
-
Regole connessioni in entrata
-
Abilita regola: Strumentazione gestione Windows (WMI-In)
-
Oppure crea regola personalizzata per porta TCP 135 e range dinamico 49152-65535
4: Aggiungere turn_off allo switch
Modifica switch in configuration.yaml:
switch:
- platform: template
switches:
pc_ufficio:
# ... configurazione precedente turn_on ...
turn_off:
- service: hassio.addon_stdin
data:
addon: core_rpc_shutdown
input: pc-ufficio # Stesso alias del config add-on
- service: notify.mobile_app
data:
message: "🖥️ Shutdown PC Ufficio inviato"
Riavvia HA → testa switch OFF → PC Windows si spegne dopo 5-10 secondi.
Fase 7: Shutdown remoto Linux/Mac (SSH)
Configurazione PC Linux per shutdown SSH
1: Creare utente dedicato:
SSH in PC Linux:
sudo adduser homeassistant sudo usermod -aG sudo homeassistant
2: Configurare sudo senza password per shutdown:
sudo visudo
Aggiungi alla fine:
homeassistant ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/shutdown
Salva (Ctrl+X, Y, Enter).
3: Generare chiavi SSH in Home Assistant
Home Assistant CLI (Terminal add-on o SSH):
mkdir -p /config/ssh_keys cd /config/ssh_keys ssh-keygen -t rsa -b 4096 -f id_rsa_homeassistant -N ""
Trasferisci chiave pubblica a PC Linux:
ssh-copy-id -i /config/ssh_keys/id_rsa_homeassistant.pub homeassistant@192.168.1.50
Testa connessione:
ssh -i /config/ssh_keys/id_rsa_homeassistant homeassistant@192.168.1.50 sudo poweroff -h now
PC dovrebbe spegnersi senza chiedere password.
4: Shell command in Home Assistant
Crea shell_command.yaml (o aggiungi in configuration.yaml):
# configuration.yaml
shell_command:
shutdown_pc_linux: >-
ssh -i /config/ssh_keys/id_rsa_homeassistant
-o 'StrictHostKeyChecking=no'
homeassistant@192.168.1.50
sudo shutdown -h now
Switch template turn_off:
switch:
- platform: template
switches:
pc_linux:
# ... turn_on WOL ...
turn_off:
- service: shell_command.shutdown_pc_linux
- service: notify.mobile_app
data:
message: "🐧 Shutdown PC Linux inviato"
Shutdown macOS via SSH
Identico a Linux, comando shutdown:
shell_command:
shutdown_mac: >-
ssh -i /config/ssh_keys/id_rsa_homeassistant
user@192.168.1.60
sudo shutdown -h now
Fase 8: Integrazione dashboard Lovelace
Card switch semplice
type: entities
title: Controllo PC
entities:
- entity: switch.pc_ufficio
name: PC Ufficio
icon: mdi:desktop-tower
- entity: binary_sensor.pc_ufficio_online
name: Stato Connessione
- entity: sensor.pc_ufficio_round_trip_time_avg
name: Latenza Ping
Button card personalizzata (HACS)
Installa Button Card via HACS per UI avanzata:
type: custom:button-card
entity: switch.pc_ufficio
name: PC Ufficio
icon: mdi:desktop-tower
show_state: true
state:
- value: "on"
color: rgb(68, 115, 158)
icon: mdi:desktop-tower
- value: "off"
color: rgb(128, 128, 128)
icon: mdi:desktop-tower-monitor
tap_action:
action: toggle
hold_action:
action: more-info
Glance card multi-PC
type: glance
title: Stato PC Casa
entities:
- entity: switch.pc_ufficio
name: Ufficio
- entity: switch.pc_gaming
name: Gaming
- entity: switch.server_linux
name: Server
columns: 3
Fase 9: Automazioni avanzate
Accensione PC quando arrivi a casa
automation:
- alias: "Accendi PC Ufficio Arrivo Casa"
description: "WOL PC quando device_tracker rileva presenza"
trigger:
- platform: state
entity_id: person.mario
to: "home"
condition:
# Solo giorni lavorativi
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
# Solo orario lavorativo
- condition: time
after: "08:00:00"
before: "18:00:00"
# PC attualmente spento
- condition: state
entity_id: switch.pc_ufficio
state: "off"
action:
- service: switch.turn_on
target:
entity_id: switch.pc_ufficio
- service: notify.mobile_app
data:
message: "🖥️ PC Ufficio acceso automaticamente - buon lavoro!"
mode: single
Shutdown automatico dopo inattività
automation:
- alias: "Shutdown PC Ufficio Dopo Inattività"
description: "Spegni PC se nessuno a casa da 2 ore"
trigger:
- platform: state
entity_id: group.family
to: "not_home"
for:
hours: 2
condition:
# PC attualmente acceso
- condition: state
entity_id: switch.pc_ufficio
state: "on"
action:
# Notifica pre-shutdown
- service: notify.mobile_app
data:
message: "⚠️ PC Ufficio si spegnerà tra 5 minuti per risparmio energetico"
data:
actions:
- action: "CANCEL_SHUTDOWN"
title: "Annulla"
# Attendi 5 minuti (tempo per annullare)
- delay:
minutes: 5
# Shutdown
- service: switch.turn_off
target:
entity_id: switch.pc_ufficio
- service: notify.mobile_app
data:
message: "🖥️ PC Ufficio spento automaticamente"
mode: single
Automazione annullamento (notification action):
automation:
- alias: "Annulla Shutdown PC"
trigger:
- platform: event
event_type: mobile_app_notification_action
event_data:
action: CANCEL_SHUTDOWN
action:
- service: automation.turn_off
target:
entity_id: automation.shutdown_pc_ufficio_dopo_inattivita
- delay:
hours: 1
- service: automation.turn_on
target:
entity_id: automation.shutdown_pc_ufficio_dopo_inattivita
Accensione schedulata mattina
automation:
- alias: "Accendi PC Ufficio Mattina"
description: "WOL PC ogni mattina giorni lavorativi"
trigger:
- platform: time
at: "08:30:00"
condition:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
# Solo se PC spento
- condition: state
entity_id: switch.pc_ufficio
state: "off"
action:
- service: switch.turn_on
target:
entity_id: switch.pc_ufficio
Controllo vocale Alexa/Google
Esponi switch a Alexa/Google tramite Nabu Casa Cloud o Alexa Media Player:
Configuration → Cloud → Alexa → abilita switch.pc_ufficio
Comandi vocale:
-
“Alexa, accendi PC ufficio” → WOL
-
“Alexa, spegni PC ufficio” → shutdown
-
“Alexa, il PC ufficio è acceso?” → stato ping sensor
Calcolo risparmio energetico
Scenario: PC gaming H24 → on-demand
Parametri:
-
PC gaming: 350W carico medio (GPU + CPU)
-
Utilizzo effettivo: 4 ore/giorno
-
Prima: lasciato acceso 24/7 per pigrizia
-
Dopo automazione: acceso solo quando serve
Consumo annuo prima:
350W × 24h × 365 giorni = 3.066 kWh/anno
Consumo annuo dopo:
350W × 4h × 365 giorni = 511 kWh/anno
Risparmio:
-
2.555 kWh/anno
-
Costo risparmiato: 2.555 × 0,25 €/kWh = 639€/anno 💰
ROI: setup WOL richiede 30 minuti configurazione → tempo ripagato immediatamente.
Benefit aggiuntivi
-
Riduzione usura hardware: PC spento dura 2-3x più a lungo
-
Temperatura ambiente: -200W calore continuo → stanza più fresca estate
-
Rumore: silenzio assoluto quando non serve PC
-
Sicurezza: PC spento = superficie attacco ridotta (no RDP/SSH vulnerabilities)
Troubleshooting problemi comuni
WOL non funziona mai
Causa: WOL disabilitato BIOS o driver
Soluzione:
-
Verifica BIOS → WOL enabled (vedi Fase 1)
-
Windows: Driver NIC → Proprietà Avanzate → Wake on Magic Packet = Enabled
-
Testa con tool esterno (Android app “Wake on LAN”) per escludere problema Home Assistant
WOL funziona localmente, ma non da remoto
Causa: Router non inoltra broadcast UDP fuori subnet
Soluzione routing WOL:
-
VPN Wireguard/OpenVPN → connetti HA a rete home → WOL funziona come locale
-
Port forwarding UDP 9 a indirizzo broadcast (es.
192.168.1.255) -
Directed broadcast abilitato su router (attenzione sicurezza)
Ping sensor sempre “unavailable”
Causa: Firewall PC blocca ICMP echo request
Soluzione:
Windows:
netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
Linux:
sudo ufw allow from 192.168.1.0/24 to any proto icmp
RPC Shutdown “Access Denied” error
Causa: Local Account Token Filter Policy non configurato
Soluzione: Segui Step 3B Fase 6 (registry key)
Alternativa: usa account Microsoft online invece local account (Azure AD join elimina problema)
SSH shutdown lento (20+ secondi)
Causa: SSH DNS reverse lookup timeout
Soluzione: Aggiungi -o 'StrictHostKeyChecking=no' in shell_command
Alternative e integrazioni avanzate
IOTLink – agent Windows avanzato
IOTLink è agent Windows che espone centinaia sensori a Home Assistant via MQTT:
-
CPU usage, RAM, GPU temperature
-
Processi attivi (rileva se gaming, streaming, videoconferenza)
-
Display on/off, idle time
-
Commands: shutdown, restart, sleep, hibernate, lock
Vantaggio: shutdown più affidabile di RPC + sensori aggiuntivi
Link: https://iotlink.gitlab.io
HASS.Agent – alternativa moderna IOTLink
HASS.Agent (2024+) è evoluzione IOTLink con UI moderna:
-
Integrazione nativa HA (no MQTT)
-
Notifiche Windows native
-
Media player control
-
Custom commands
GitHub: https://github.com/hass-agent/HASS.Agent
Integrazione presenza smart
Combina WOL con room presence detection (ESPresense, Bermuda BLE):
-
PC si accende automaticamente quando entri in stanza ufficio
-
Shutdown automatico quando esci da stanza da 30+ minuti
Best practices sicurezza
1. Limita WOL a rete locale
Non esporre WOL su internet pubblico → chiunque con tuo MAC può accendere PC.
Accesso remoto sicuro:
-
VPN Wireguard → connessione rete home → WOL sicuro
-
Nabu Casa Cloud → tunnel criptato senza port forwarding
2. Credenziali RPC Shutdown
Non usare admin account principal per RPC:
-
Crea account Windows dedicato con privilegi minimi
-
Password complessa (16+ caratteri, random)
-
Se possibile, local account invece Microsoft account (evita lateral movement se breach)
3. SSH keys invece password
Per Linux shutdown, sempre chiavi SSH mai password:
-
Chiave privata protetta da filesystem HA
-
Nessuna password inviata su rete
4. Firewall rules restrittive
PC Windows:
-
Consenti RPC solo da IP Home Assistant (non 0.0.0.0/0)
-
Blocca WMI da internet esterno
Wake-on-LAN con Home Assistant trasforma controllo PC da manuale (alzarsi, premere bottone) a completamente automatizzato con risparmio energetico misurabile fino a 600€/anno per PC gaming H24 convertito a on-demand. L’integrazione nativa WOL è semplicissima (3 click), mentre shutdown remoto richiede configurazione extra (RPC Windows o SSH Linux) ma garantisce controllo bidirezionale completo.
Le automazioni avanzate (accensione arrivo casa, shutdown inattività, scheduling) eliminano completamente necessità di controllo manuale → “zero touch” operation dove PC è sempre disponibile quando serve, spento quando non serve. Integrazione con Alexa/Google aggiunge layer vocale comodo per accensione rapida senza aprire app.
Prossimi step: espandi a multi-PC (gaming, server, workstation) con dashboard centralizzata, aggiungi monitoraggio consumo energetico con smart plug per tracking risparmio reale, integra con calendar per accensione automatica pre-meeting videocall.
