Después de leer este tutorial, serás capaz de enviar comandos por SSH y ejecutar scripts desde el dispositivo en donde tienes instalado Home Assistant a otros dispositivos, para poder reiniciarlos remotamente, entre otras cosas.
Para ello generaremos "keys" entre los dispositivos para que se puedan reconocer entre si y mandarse órdenes.
Lo primero que hay que hacer es abrir un terminal en el dispositivo donde tengamos instalado home assistant.
Logueamos con el usuario que creamos al instalar home assistant con el siguiente comando:
1 |
sudo su -s /bin/bash homeassistant |
Y activamos el entorno virtual de python (PASO IMPORTANTE) de la siguiente forma:
1 |
source /srv/homeassistant/bin/activate |
Ahora vamos a generar la clave o key que será necesaria para vincular los dispositivos usando el siguiente comando:
1 |
ssh-keygen |
El sistema nos preguntará en que archivo y si queremos ponerle contraseña a la clave, dejamos en blanco a todo y damos a enter para generar la clave. Una vez generada la clave nos debe aparecer algo parecido a esto:
Recordad el guardar la ruta del archivo que contiene la clave, por si la necesitáramos más adelante para usarla en otros dispositivos.
Ahora que tenemos la clave segura generada, es el momento de instalarla en el dispositivo al que queremos enviar el comando.
Si queremos controlar el dispositivo local procedemos con el siguiente comando:
1 |
ssh-copy-id -i /home/homeassistant/.ssh/id_rsa pi@127.0.0.1 (Recordad poned vuestro usuario e ip si son diferentes) |
Una vez realizado el comando os pedirá la contraseña del dispositivo a conectar , la introducimos y se nos quedarán vinculados los dos dispositivos.
Si es el primer dispositivo que vais a vincular utilizando el siguiente comando es suficiente:
1 |
ssh-copy-id pi@127.0.0.1 |
Una vez realizado esto si queréis vincular más dispositivos por SSH no hace falta generar nuevas claves, puesto que siempre utilizaremos la creada anteriormente, pero para estos nuevos dispositivos SÍ necesitais especificar la ruta del archivo y ejecutar la línea de la siguiente manera:
1 |
ssh-copy-id -i /home/homeassistant/.ssh/id_rsa user@ip |
Vamos a comprobar si los pasos anteriores han funcionado, para ello solo debemos ejecutar la siguiente línea:
1 |
ssh pi@127.0.0.1 |
Y ahora deberías estar logueado en el terminal SSH del otro dispositivo desde el usuario de home assistant, una SSH inception en toda regla , y a partir de aquí ya podéis crear vuestros scripts en home assistant para mandar órdenes por SSH.
Aquí os dejamos un pequeño ejemplo de un switch para reniciar una raspberry pi por SSH:
1 2 3 4 |
- platform: command_line switches: reiniciarpi: command_on: "ssh pi@127.0.0.1 'sudo shutdown -r now'" |
Asímismo, una vez hecho los pasos anteriores, el usuario homeassistant será capaz de ejecutar scripts, a través del usuario pi.
Por ejemplo, vamos a crear un script para actualizar Home Assistant.
Así no tendrás que abrir la consola y meter los comandos como explicamos aquí
Para ello creamos un archivo que llamaremos por ejemplo upgradeha.sh
Incluiremos lo siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#!/bin/bash # upgrade system echo "Actualizando repositorios" sudo apt-get update sudo apt-get upgrade -y #upgrade home assistant echo "Parando servicio Home Assistant" sudo systemctl stop home-assistant@homeassistant.service #Become user 'homeassistant' sudo -u homeassistant -H -s <<'EOF' # Activate the virtualenv echo "Entrando en entorno de virtualizacion" source /srv/homeassistant/bin/activate echo "Lanzando actualizacion a la ultima version de HomeAssistant" # Install Home Assistant pip install --upgrade pip pip3 install --upgrade homeassistant EOF echo "Reiniciando servicio HomeAssistant" # Restart Home Assistant sudo systemctl start home-assistant@homeassistant.service |
Guardamos los cambios.
Ahora en home assistant añadimos a shell_comands lo siguiente:
1 2 3 |
shell_command: actualizar_ha: ssh pi@127.0.0.1 sudo bash /ruta/del/scripts/upgradeha.sh |
En este caso lo que hacemos es decirle al usuario pi de nuestra misma raspberry que ejecute el script, el cual podrás usar tanto el switch como el script, lo podrás organizar en tu home assistant con la guía de grupos y pestañas