GiorgioRavera.it

il mio blog: ciò che penso e faccio, trucchi di programmazione, linux, reti e molto altro

sabato, 4 Aprile 2020

Home Assistant: Automazione di reboot in caso di errori

Domotica, Home Assistant, by Giorgio.

Recentemente mi sono cimentato in un problema relativo a home assistant e al riavvio dell’host in caso, ad esempio, di mancata corrente.

Più in generale, se all’avvio di home assistant un integrazione o un dispositivo (e.g. sensore) non fosse momentaneamente disponibile il nostro hub non lo configura rendendo di fatto inutilizzabile tutto ciò che ad esso è collegato (automazioni, script etc). Vediamo come ovviare a questo problema.

Nella mia architettura posseggo un server fisico su cui ho installato xcp-ng che schedula diverse virtual machines, tra cui una che si occupa di gestire container docker. Su quest’ultima è installato il docker home assistant.

Quando dovesse mancare la corrente e successivamente ritornare il server riparte e potrebbe capitare che la connessione ad internet, il server dns o qualche servizio e/o integrazione configurati su home assistant non siano ancora disponibile.

In questo caso home assistant, dopo aver fallito l’inizializzazione del componente, segnalerà un errore di invalid config (persistent_notification.invalid_config) e non attiverà tutto ciò che è associato a questo elemento.

Un workaround per questo può essere quella di creare un automazione:

automation:
  - alias: "Startup: Restart on Error"
    trigger:
      - platform: homeassistant
        event: start
    action:
      - delay: 00:00:60
      - condition: state
        entity_id: persistent_notification.invalid_config
        state: 'notifying'
      - service: script.homeassistant_restart

Questa automazione di fatto viene eseguita allo startup di home assistant. Attende 1 minuto e se si verifica un invalid configuration esegue lo script di restart. Di seguito è riportato lo script di restart:

script:
  homeassistant_restart:
    alias: "Riavvio servizio"
    sequence:
      - service: shell_command.docker_restart

Riporto infine lo shell_command associato:

shell_command:
  docker_restart: '/sbin/reboot'

Nel mio caso, essendo home assistant in esecuzione su un container docker, il comando reboot verrà eseguito sul container (e non sull’host o vm in cui è in esecuzione docker).

Nota: è consigliabile disabilitare questa automazione quando si prova a modificare la configurazione di home assistant per, ad esempio, aggiungere nuove funzionalità o modifiche varie.

Alla prossima.

Back Top