Home Assistant command_line a shell_command integrace.

Příprava pro remote command + dump informace. Home Assistent (HA) jakožto linuxový operační systém umí SSH a příkazovou řádku. Ta je dostupná přímo v rozhraní HA, pomocí addonu Terminal. Zajisté neprovozujete Home Assistant proto, aby jste používali shell, ale jak to už bývá, to nejlepší je i v tomto případě ukryto v černočerné tmě. HA je jeden velký příkazový řádek, zahalený do vkusného klikacího GUI.

Za uplynulých 5 let byla publikována řada zajímavých IoT projektů (automatizací). Se základní znalostí Linuxu ale prakticky žádnou komplexnejší automatizaci neuvedete do funkčního stavu. Alfou i omegou je vzdálený přístup s možností provést libovolný příkaz či získat informaci.

Definovaný informační výstup z hardware paltformy umí třeba SNMP nebo IPMI. Ze software platformy lze získat – poskytnout informaci, provést příkaz – změnu, pomocí API. Stále populárnější trend „odstříhávání se od cloudu“ nás ale vrací na počátek všeho. Terminál.

Addon Terminál & SSH

Získáme přímo v HA Supervisor menu.

Home Assistant ssh_pass
Home Assistant command_line supervisor

sshpass

Zjednodušeně řečeno umožní odeslat heslo pomocí SSH a to v jednom řádku s loginem. Což SSH neumožňuje jelikož vyžaduje interakci (počkat na výzvu na potvrzení certifikátu + výzvu na zadáni hesla + zadání + odeslání hesla). Balíček sshpass získáme v instalovaném Home Assistant Terminálu pomocí příkazu apk (s nejdříve provedenou aktulaizací)

apk update
apk upgrade
apk add sshpass
cli ha terminal

Test spojení

na další unixlike systém lze samosebou provést obousměrně. Z Home Assistnt terminálu na unixový počítač / sever, z Ubuntu či MacOS terminálu na Home Assistant. Test spojení z Home Assistant na MacOs.

Nejdříve provedeme standarní přihlášení pomocí SSH a potvrdíme šifrovací certifikát pro spojení.

ssh uživatel@ip_adresa
yes (enter)
heslo
exit

Následně již bude funkční spojení pomocí Home Assistant sshpass aplikace na vzdálený počítač s možností provést vzdálený příkaz

sshpass -p 'heslo' ssh uživatel@ip_adresa příkaz

To samé z MacOS směrem na HA. Zde je malý háček jelkož MacOS sshpass blokuje, sshpass je vyloučen i z brew. Pomůžeme si zadaním příme cesty k brew casc a sshpass se nainstaluje již bez problému

brew install hudochenkov/sshpass/sshpass

Ve výstupu z instalace je použita proměnná (negace) no auto update.

papo@imac ~ % HOMEBREW_NO_AUTO_UPDATE=1 brew install hudochenkov/sshpass/sshpass                                                            
 ==> Tapping hudochenkov/sshpass
 Cloning into '/usr/local/Homebrew/Library/Taps/hudochenkov/homebrew-sshpass'…
 remote: Enumerating objects: 14, done.
 remote: Total 14 (delta 0), reused 0 (delta 0), pack-reused 14
 Receiving objects: 100% (14/14), done.
 Resolving deltas: 100% (3/3), done.
 Tapped 1 formula (29 files, 33.0KB).
 ==> Installing sshpass from hudochenkov/sshpass
 ==> Downloading https://downloads.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
 ==> Downloading from https://deac-fra.dl.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz
 ################################################################## 100.0%
 Warning: A newer Command Line Tools release is available.
 Update them from Software Update in System Preferences or run:
   softwareupdate --all --install --force
 If that doesn't show you any updates, run:
   sudo rm -rf /Library/Developer/CommandLineTools
   sudo xcode-select --install
 Alternatively, manually download them from:
   https://developer.apple.com/download/more/.
 ==> ./configure --prefix=/usr/local/Cellar/sshpass/1.06
 ==> make install
 /usr/local/Cellar/sshpass/1.06: 9 files, 46.0KB, built in 18 seconds

Další dva kroky jsou totožné. Do HA se připojíme pomocí login / heslo definované v Home Assistant SSH & Web Terminal konfiguraci. Pokud nemáte z dřívějška připraveny podmínky pro sshpass (ne)interaktivní session z MacOS, postup je podrobně popsán na webu superuser.

cli mac terminal ha

Tip. Chytrá lednice přes vzdálený příkaz shell_command

Používáte Grocy na vlastním serveru? Z HA lze volat Grocy API pomocí shell_command. Třeba odepisovat spotřebované položky. Popsaný postup integrace vzdálené intstalace Grocy, včetně funkčních příkladů najdete na webové stránce phil hawthorne.

HA command_line + shell_command

Kontrola Grocy serveru (www port 9192) s command_line + netstat

binary_sensor:
  - platform: command_line
    command: 'netstat -na | find "9192" | find /c "LISTENING" > nul && (echo "1") || (echo "0")'
    name: "grocy_server"
    device_class: moving
    payload_on: "Running"
    payload_off: "Not running"

Start Grocy serveru shell_command + sshpass + ssh + systemctl

shell_command:
  systemctl_grocy_start: "sshpass -p 'heslo' ssh user@ipadresa -pport systemctl start grocy.service"

Zjištění verze operačního systému pomocí shell_command + SSH passwordless + uname

shell_command:
  system_uname: "ssh -i /certifikat -o StrictHostKeyChecking=no -q user@192.168.101.101 uname"

SSH připojení bez hesla (passwordless) je popsané v článku o Home Assistant integraci Nextcloud Linux server cloudu.

Užitečné

Domovská stránka Home Assistant.

ICTIS.CZ