AppDaemon: automazioni al massimo

AppDaemon: automazioni al massimo

 

Argomento: Appdaemon
Livello: Pro (Novizio,Esperto, Pro)
Difficoltà: Media (Bassa, Media, Alta)

Introduzione

AppDaemon è un ambiente di esecuzione multithread Python per la scrittura di applicazioni per Home Assistant. Non è pensato per sostituire script e automazioni, ma piuttosto per completare e potenziare quanto già offre Home Assistant. Per molte cose le automazioni funzionano bene e possono essere molto efficaci. Tuttavia, esistono automazioni molto complesse per le quali diventa difficile usare YAML: AppDaemon, in queste situazioni, ci da una mano.

Punti fondamentali di AppDaemon sono:

  • Nuovo paradigma: alcuni problemi richiedono un approccio procedurale e/o iterativo e le app scritte con AppDaemon rispondo a questa esigenza, con esse si possono fare cose che le automazioni classiche di HA non possono fare.
  • Facilità d’uso: l’API di AppDaemon è il più semplice e naturale possibile. Le funzioni e il loro funzionamento sono il più possibile simile a Python; un programmatore esperto di Python dovrebbe sentirsi come a casa.
  • Riutilizzo del codice: è possibile scrivere un pezzo di codice una volta e riutilizzarlo quando necessario con parametri diversi; ad esempio un’automazione per accendere una luce quando un sensore PIR intercetta un movimento: il codice sarà il medesimo, quello che cambia sono le entità luci e PIR.
  • Dinamicità: AppDaemon è stato pensato per consentire all’utente di apportare modifiche senza richiedere il riavvio di Home Assistant. Inoltre anche la modifica delle applicazioni create in Appdaemon non richiede il riavvio stesso di Appdaemon. Infine anche la rimozione o l’aggiunta di app viene acquisita in modo dinamico, di conseguenza, effettuare test diventa molto più efficiente.
  • Logica complessa: i costrutti If / Else di Python sono più chiari e facili da codificare per una logica nidificata che può diventare anche molto complessa.
  • Variabili e stato durevoli – Le variabili possono essere mantenute tra gli eventi per tenere traccia degli stati.

Installazione

Attenzione a gennaio 2020 è uscita la versione 4 di appdaemon e il relativo nuovo addon, in fondo all’articolo c’è un nuovo capitolo riguardante la configurazione.

Installare AppDaemon versione 3 con Hass.io è molto semplice per fortuna, visto che esiste un addon ufficiale mantenuto dal solito Franck Nijhof, questa è la pagina ufficiale dell’addon https://github.com/hassio-addons/addon-appdaemon3/blob/v4.1.0/README.md.

Le istruzioni per l’installazione sono:

  1. Verificare che gli addon della community siano presenti nell’addon-store, se non lo fosse occorre aggiungere il repository degli addon.
  2. Installare l’addon Appdaemon.
  3. Modificare la configurazione dell’addon.
  4. Avviare l’addon.

Per quanto riguarda il punto 3, per un’installazione iniziale senza personalizzazioni sui system_packages e sui python_packages non c’è da aggiungere nulla quindi la configurazione dell’addon sarà questa:

Configurazione

Per quanto riguarda la configurazione di Appdaemon ho preso ad esempio quanto fatto da Kevin Eifinger con la predisposizione di un file globals.py per effettuare alcune operazioni e la possibilità di gestione di dati “segreti” che non si vogliono pubblicare nelle app. Veniamo quindi agli aspetti pratici di configurazione:

1 – configurazione del file appdaemon.yaml nella cartella /config/appdaemon con il setup di alcuni file di log in /config/logs/appdaemon, ovviamente potrete cambiare a vostro piacimento questa cartella di log, ricordo anche che la cartella va creata in maniera manuale.

Per la spiegazione di tutti i parametri vi rimando al link seguente: https://appdaemon.readthedocs.io/en/stable/CONFIGURE.html, mi soffermo solo su un paio di aspetti:

  • la gestione dei secrets non funziona con l’attuale versione dell’addon che “containerizza” Appdaemon 3, con Appdaemon 4 questo problema dovrebbe essere risolto .
  • il token varia di continuo, quindi non vi preoccupate
  • production_mode (opzionale) – se impostato su True, AppDaemon controllerà le modifiche nei file delle apps e in apps.yaml al riavvio di AppDaemon, anziché ogni secondo. Questo parametro è importante perché se impostato su True e modificate le vostre app non vedrete cambiamenti fino a quando non riavviate l’addon. Il valore predefinito è False.

2 – alberatura delle app: il mio approccio è stato quello di inserire ogni singola app sviluppata in Appdaemon in una cartella dentro /config/appdaemon/apps, quindi l’alberatura è la seguente, /config/appdaemon/apps/app1, /config/appdaemon/apps/app2, etc. Dentro ogni cartella ci sono i file Python (.py) e YAML (.yaml) che realizzano l’app stessa.

3 – file apps.yaml: questo file si trova in /config/appdaemon/apps e contiene, nell’implementazione che propongo, solo il riferimento ai “moduli globali”, un’altra strada possibile è quella di popolare questo file con tutte le “definizioni” YAML delle app, ma lascio a voi di cercare nei vari Github e tutorial come procedere.

4 – file globals.py e secrets.py: questi file da inserire nella cartella /config/appdaemon/apps contengono i metodi di utilizzo globale get_arg e get_arg_list che non fanno altro che recuperare dati dal file YAML dell’app ma se l’argomento inizia con “secret_” cercano il valore effettivo nel modulo secrets.py.

Appdaemon v4

Il 15 gennaio 2020 è ufficialmente uscita anche come addon su Hassio la nuova versione di Appdaemon, al link seguente il nuovo addon: Addon Appdaemon.

Per quanto riguarda la configurazione del file appdaemon.yam sono cambiate alcune cose rispetto ad Appdaemon 3.x, intanto funziona il collegamento con il file secret.yaml, di seguito un esempio di configurazione (da personalizzare) che utilizza il file secret, per tutti gli aspetti fate riferimento alla documentazione ufficiale: Appdaemon Configuration.

Documentazione

Appdaemon è molto ben documentato, qui di seguito vi lascio una serie di link utili per progredire nella creazione di automazioni. Buon divertimento!

 

Donazione

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger