Accendere PC da Remoto…Magie con Home Assistant

Accendere PC da Remoto…Magie con Home Assistant

Nel mio precedente articolo Wake On Lan + Home Assistant, vi ho mostrato come accendere i vostri dispositivi da remoto; in questo articolo invece vediamo come spegnerli!

 

Hai già dato un occhio all’indice di articoli inerenti la Domotica presenti nel mio sito?

Facci un salto: Indice articoli di Domotica

 

Se volete il Bundle:

Progetto Accendere pc da remoto

Nonostante sia in grado di controllare l’accensione in remoto tramite WOL del mio PC e della mia NAS Qnap, non mi sentivo ancora soddisfatto al 100%. Per spegnerli dovevo sempre accedere tramite l’applicazione di Qnap e via RDP al PC.

Come sapete, l’idea cardine con la quale sto portando avanti tutti questi progetti è la centralizzazione di tutte le tecnologie e gli strumenti in un’unica piattaforma: Home Assistant nel mio caso.

Sapendo che il componente WOL di Home Assistant comprende anche la funzionalità di “spegnimento“, ho deciso di farci un pensierino e di sviluppare qualcosa che mi permettesse con 1 click di spegnere PC e NAS contemporaneamente.

La Nas che ho a casa è una Qnap 453-pro.

Hai già letto Miglior NAS per casa. Synology Vs Qnap. ?

Il PC invece è un assemblato.
La caratteristica comune di entrambi i dispositivi è che supportano il WOL, cosa fondamentale in questo progetto.
Per prima cosa dobbiamo configurare Home Assistant in modo tale che sia in grado di accendere i nostri dispositivi. Se non l’avete ancora fatto, potete seguire questa guida: Wake On Lan + Home Assistant
Fatto questo, possiamo procedere con la parte divertente, lo spegnimento.
Come funziona la parte di spegnimento del componente che si occupa di accendere il pc da remoto di Home Assistant? Non è difficile. In pratica questo componente non fa altro che chiamare un comando o script che scatena lo spegnimento dei dispositivi.
Nell’esempio che propongono nella pagina del componente: Wake On Lan Switch Home Assistant viene lanciato un comando shell che innesca lo spegnimento. Io ho preso spunto dalla rete e ho deciso di implementare queste 2 soluzioni:
  • Per quanto riguarda il PC avremo la possibilità non solo di spegnerlo ma anche di riavviarlo!
  • Per quanto riguarda la NAS, azionando il pulsante (switch) che l’ha accesa, la faremo spegnere.

 

Configurazione PC

Nel PC è necessario installare un programma che ci permetta di interagire, tramite una paginetta WEB, ai comandi WOL necessari per lo spegnimento. Trovate il software qui

Scaricato e installato il software nel vostro PC, avviatelo. Nella barra start, in basso a destra potete trovare l’icona del software AiryTech Switch Off, cliccate col destro del mouse sopra il programma e spostatevi su “Remote“.

Dovrebbe comparirvi una finestra come questa:

Abilitate “Enable web interface” e cliccate poi su “View Web interface“. Questo programmino, tramite la porta 8000 (volendo si può cambiare) apre una paginetta web con i comandi da poter utilizzare per scatenare: spegnimento, riavvio, ibernazione e altri stati che possiamo far prendere al PC.

 

Piccolo Focus sulla sicurezza. Bellissimo come programma ma allo stesso tempo, “fastidioso”. Chiunque punti a questa interfaccia WEB conoscendo l’IP del vostro PC, può spegnerlo.

Consiglio di configurare una password e di limitare l’accesso a questa pagina solo all’indirizzo IP di Home Assistant. Personalmente, modificherei anche la porta di default giusto per essere più sicuro.

 

Purtroppo al giorno oggi non possiamo essere sicuri al 100% su nulla, ma prendere tutte le giuste precauzioni trovo che sia la cosa più corretta.

La stringa di comando che vi serve, qualora decidiate di utilizzare username e password è
Tutto quello che viene dopo “http://” è riportato di seguito

‘curl -u User:VOSTRA_PASSWORD -k http://INDIRIZZO_IP:PORTA/?action=System.Restart’

Se invece decidete che l’utente non vi serve, usate questo:

‘curl -k http://INDIRIZZO_IP:PORTA/?action=System.Shutdown’

Il pezzo del comando che segue “?action=” varia in base a cosa volete fare. Dalla pagina web, copiatevi i Link che volete usare su un Notepad così da avere la sintassi corretta. E’ tutto Case Sensitive, quindi prestate attenzione.

 

Configurazione NAS per accendere pc da remoto

Per quanto riguarda la NAS, è sufficiente seguire i passi riportati nella pagina del componente Wake On Lan Switch Home Assistant.

Nel mio caso, la NAS non ha la possibilità di editare il file sudoers, ho quindi optato per usare l’utente admin.

 

Attenzione! Nel momento in cui dovete copiare la vostra chiave SSH dentro la NAS, NON dovete utilizzare l’utente pi (se state usando quello di default) ma bensì “homeassistant”.

Ricordatevi che tutte le azioni che vengono scatenate dall’interfaccia WEB del software Home Assistant sono coordinate dall’utente omonimo.

 

Nella mia NAS il comando responsabile dello spegnimento soft, è poweroff e lo trovate qui: /sbin/poweroff.

Create quindi uno script chiamato off.sh, copiatelo dentro /root e dategli i permessi di esecuzione.

echo “/sbin/poweroff” > /root/off.sh && chmod 777 /root/off.sh

Con la NAS abbiamo terminato. Passiamo ad Home Assistant!

 

Configurazione Home Assistant

Concludiamo la nostra configurazione settando tutti i parametri necessari ad Home Assistant per poter scatenare lo spegnimento via WOL di NAS e PC.

Ve la rendo facile includendo tutto quello che serve nel file configuration.yaml, ma ognuno è libero di dividere i componenti come meglio preferisce.

 

input_select:
  pcoptions:
    name: pc mode
    options:
      - Restart
      - Shutdown
      - None
    initial: None
    icon: mdi:desktop-tower

shell_command:
  shutdown_pc: 'curl -k http://INDIRIZZO_IP:PORTA/?action=System.Shutdown'
  restart_pc 'curl -k http://INDIRIZZO_IP:PORTA/?action=System.Restart'
  turn_off_nas: '/home/homeassistant/.homeassistant/commands/off.sh &'

automation:
  - alias: pc_restart
    trigger:
      platform: state
      entity_id: input_select.pcoptions
      to: "Restart"
    action:
      - service: shell_command.restart_pc
  - alias: pc_shutdown
    trigger:
      platform: state
      entity_id: input_select.pcoptions
      to: "Shutdown"
    action:
      - service: shell_command.shutdown_pc
switch:
  - platform: wake_on_lan
    mac_address: MAC_NAS
    name: "Nas WOL"
    host: "IP_NAS"
    turn_off:
      service: shell_command.turn_off_nas

 

Occhio che i comandi “Shell_Command” devono essere tutti in minuscolo!

Avrete notato che il terzo comando SHELL fa riferimento ad un percorso all’interno della Raspberry. Creiamolo subito.

Connettiamoci in SSH alla Raspberry e, con l’utente Pi, lanciamo il comando “sudo su –” e poi questo:

cd /home/homeassistant/.homeassistant/ && mkdir commands && echo “ssh [email protected]IP_NAS ‘/root/off.sh'” > commands/off.sh && chmod 777 commands/off.sh && chown homeassistant.homeassistant -R /home/homeassistant/.homeassistant/

Sostituite IP_NAS con l’indirizzo della vostra NAS. Fate la stessa cosa nelle configurazioni riportate sopra, cambiando IP e MAC con quello della vostra NAS.

Riavviate il servizio di Home Assistant tramite il comando:

sudo service home-assistant restart

 

 

Se volete il Bundle:

Verifica configurazione WOL:

Ora nell’interfaccia WEB dovreste trovarvi il nuovo componente “PC MODE” configurato come un menu a tendina, per quanto riguarda invece il pulsante WOL della NAS non è cambiato nulla, tranne che se ora lo azionate quando la NAS è accesa, si spegne.

Bene, chiamate il vostro migliore amico e mostrategli come spegnere i vostri dispositivi tramite WOL!

Se vi sentite parecchio motivati dopo aver letto questa guida, perché non creare con SNIPS un bell’Intent per accendere un pc da remoto o che spegne i vostri dispositivi tramite un comando vocale?

 

17 commenti

  1. Giorgio Sarcletti on

    Nicola come al solito hai pibblicato un altro bellissimo articolo su home hassistant! Sei veramente un mago. Ho un problema però con il software AiryTech Switch Off che gira solo sotto windows. Io ho un pc sul quale gira Ubuntu 16.04. Non ho trovato in giro software analoghi che girino sotto Ubuntu. Pertanto l’idea che mi è venuta è se potessi lanciare con uno switch in home assistant uno scritto bash .sh del tipo “sudo shutdown -h now” magari riesco ad effettuare lo spegnimento del PC. E’ pur vero che potrei spegnere il mio computer da shell (con JuiceSSH riesco a spegnerlo), ma mi piace l’idea di poterlo fare da home assistant così come faccio il WOL. Ti saluto molto cordialmente e ti auguro un anno ricco di soddisfazioni (e di realizzare tanti nuovi articoli di domotica su HA), buona serata Giorgio

  2. Ciao Giorgio,

    Mi hanno chiamato in tanti modi ma mai “Mago” 🙂 Grazie!
    Voglio augurarti un buon anno rispondendo al tuo quesito:

    Nulla di più facile se hai Ubuntu in quanto Linux parla benissimo con Homeassistant.
    Segui in dettaglio tutti i passi riportati sotto “Configurazione WOL NAS” e sarai perfettamente in grado di accendere e spegnere il tuo PC Linux con lo “Swipe” del dito 🙂

    Io faccio così con la mia NAS.

    Felici automazioni per il 2018!

    Nik

  3. Giorgio Sarcletti on

    ok Nik ti ringrazio per la rapidità della risposta appena mi riesce provo a fare quanto mi dici. Grazie ancora

  4. Giorgio Sarcletti on

    Ciao Nik, rieccomi con le mie perplessità e soprattutto con la mia incapacità. Ho seguito le tue indicazioni per quanto riguarda turn_off in HA.
    ti posto parte del file configuration.yaml per come l’ho impostato io:

    – platform: wake_on_lan
    mac_address: “”
    name: “PcIntelNUC”
    host: “192.168.0.129”
    turn_off:
    service: shell_command.turn_off_pcintelnuc

    shell_command:
    turn_off_pcintelnuc: ‘/home/homeassistant/.homeassistant/commands/off.sh &’

    Precedentemente sul raspberry dove ho installato HA ho dato i seguenti comandi come root:

    cd /home/homeassistant/.homeassistant/ && mkdir commands && echo “ssh [email protected] ‘/root/off.sh’” > commands/off.sh && chmod 777 commands/off.sh && chown homeassistant.homeassistant -R /home/homeassistant/.homeassistant/

    Morale della favola: non funziona il turn_off. Mi sai dire dove sbaglio o non ho capito bene? Ti ringrazio per la collaborazione e ti auguro una buona serata. Giorgio Sarcletti

  5. Ciao Nicola grazie per i tuoi post e i tuoi articoli davvero interessanti ti volevo chiedere un consiglio .Io voglio utilizzare iun servizio dns tipo no ip
    Direttamente da modem aprendo solamente le porte relative a home assistant accedendo direttamente da remoto.
    È possibile modificare il file configuration yaml
    Inserendo l’indirizzo dns e accedere da remoto grazie se vorrai rispondermi.

  6. Giorgio Sarcletti on

    Ciao Nik, scusi se ti disturbo ancora, ma senza il tuo aiuto non ne vengo a capo! Sono due giorni che mi arrabatto su questo turn_off ma non ne vuole sapere di funzionare. Ho seguito l’idicazione che hai dato tu di seguire i passi della guida Wake On Lan Switch Home Assistant. In effetti lanciando dal terminale del Raspberry sul quale ho installato HomeAssistant (server) il comando: ssh [email protected] sudo poweroff, il PC (targhet) sul quale ho installato Ubuntu si spegne senza chiedere la password. Mi da l’impressione che home-assistant non mandi in esecuzione la:
    shell_command:
    turn_off_nas: ‘/home/homeassistant/.homeassistant/commands/off.sh &’.
    Scusa la mia ignoranza ma che significato ha il simbolo & in fondo alla riga precedente?
    Ti prego aiutami. Buona serata Giorgio

  7. Ciao Giorgio,

    Il comando che hai lanciato nel precedente commento dovrebbe averti creato e strutturato una serie di cose tra cui:
    – Cartella “commands” dentro il path di home assistant
    – script off.sh creato nel Raspberry con all’interno questo comando: ssh [email protected]_NAS ‘/root/off.sh’
    – Sistemato i permessi di Homeassistant per far girare gli script.

    Per te ho 2 domande:
    – quando hai generato la chiave SSH e l’hai copiata dentro il PC Linux, lo hai fatto con l’utente Homeassistant? E’ obbligatorio ai fini del funzionamento 🙂
    – Hai creato lo script “/root/off.sh” dentro il tuo PC linux? Questo script all’interno deve avere questa riga: “sudo poweroff”

    Ovviamente per funzionare, lo script del PC Linux deve essere eseguibile. Dagli permessi 777 per fare delle prove.
    Da quello che mi dici nel tuo commento sembra che la chiave ssh non sia stata creata con l’utente giusto, in ogni caso prova a verificare quanto ti ho scritto.

    PS. la “&” in fondo al comando dice al server: “Lancia il comando in background senza aspettare che comando finisca”.

    Ciao!

    Nik

  8. Giorgio Sarcletti on

    Nik scusami se continuo ad importunarti su questa problematica: ma non mi funziona ancora il turn_off.
    Ti spiego i passi che ho effettuato:
    Ho seguito la guida Wake on LAN Switch fino al punto 5 (mi dici poi cosa vuol dire la seguente frase riportata al punto 1) della guida :On the server, log in as the user account Home Assistant is running und er. (I’m using hass in this example))?
    Passi che immagino servano a generare la chiave SSH e copiarla dentro il PC Linux.
    Quando mi chiedi: lo hai fatto con l’utente Homeassistant? E’ obbligatorio ai fini del funzionamento 🙂( e qui secondo me sta l’inghippo), che cosa intendi? Spiegati meglio perchè non comprendo (sono un po’ tardo). Per il resto ho seguito tutte le tue indicazioni……. ma nulla. Ti chiedo di aver un po’ di pazienza e ti ringrazio ancora molto per la tua disponibilità. Un caro saluto Giorgio

  9. Ciao io ho un nas qnap 228a, riesco ad accenderlo ma non a spegnerlo, mi fai sapere per favore cosa devo mettere in file configuration? Grazie

  10. Ciao Cristian,

    nel file di configurazione devi mettere quello che ho specificato nell’articolo. Per quanto riguarda la Qnap assicurati di avere la chiave SSH correttamente caricata dentro e che se lanci lo script da dentro la Qnap funzioni correttamente. Per il resto si tratta di fare prove 🙂

    Ciao

    Nik

  11. Ciao Nicola,
    ho seguito anche io la tua guida per sfruttare il wake on lan e funziona. Anche io mi sono impantanato sulla funzionalità per spegnerlo. Io ho un QNAP TS-251. Lanciando da terminale il comando poweroff, il nas si spegne, e po da home assistant, intervenendo sullo switch si accende. Rientrando via terminale sul NAS ho notato che il file off.sh, nella cartella root, è sparito. Il mio problema è che non sono riuscito a seguire la guida per creare la chiave ssh e trasferirla sul NAS, in quanto io mi collego al rapsberry tramite l’utente pi, mentre non è possibile collegarmi usando l’utente homeassistant. Seguendo questa guida, https://www.home-assistant.io/docs/installation/raspberry-pi/, io ho creato l’utente homeassistant con questo comando “$ sudo useradd -rm homeassistant -G dialout,gpio”.
    A capire come fare a creare la chiave tramite l’utente homeassistant, probabilmente tutto si sistemerebbe

  12. Ciao Luca,

    – Se non trovi più il file “off.sh”, è probabile che la NAS lo cancelli. In questo caso è sufficiente spostarlo (magari mettilo sotto /home/). Ricordati poi di cambiare il percorso statico anche nello script di Homeassistant!
    – l’utente “homeassistant” di default se ricordo bene non può essere usato per connettersi in SSH al Raspberry. Per connetterti con quell’utente, prima entri come “pi” poi con il comando “sudo su – homeassistant” ti logghi con l’altro utente. A questo punto copi la chiave SSH come indicato nel mio articolo.

    Fammi sapere se poi hai risolto!

    Ciao

    Nik

  13. Ciao Luca,

    lanci il comando da dove?
    In questi casi di solito il problema è solo la chiave SSH, hai provato a leggere i commenti? credo di aver risposto a Giorgio in merito.

    Fammi sapere

    Ciao

    Nik

  14. Ciao Nik,
    ho provato a ricontrollare il tutto ed anche le tue guide. In quella dove spiegavi come implementare il comando WOL, io non ho modificato il servizio di Home Assistant in quanto mi accendeva il qnap perfettamente.
    Il comando ‘ssh-keygen’, riportato nella guida sul sito di home assistant, lo lancio dopo aver lanciato il comando ‘sudo su – homeassistant’, dopo eseguo il comando ‘ssh-copy-id [email protected].1.4′.
    Dopo averlo eseguito ho notato che lui mi dice di provare a connettermi lanciando il comando “ssh ‘[email protected]′”, ed in questa maniera mi si connette senza problemi. Se lancio il comando “ssh ‘[email protected]’ ‘/share/CACHEDEV1_DATA/homes/off.sh'” il NAS si spegne. Ho cambiato lo script per home assistant mettendo il comando come ho scritto sopra ma non funziona.
    Non so più dove sbattere la testa
    grazie

Lascia un commento