I packages, tradotti in italiano "pacchetti", nascono per dare un modo alternativo di raggruppare la configurazione di diversi componenti. I metodi di configurazione dei dispositivi richiedono la creazione tramite apposite keyword all'interno del file configuration.yaml
I packages vengono usati soprattutto per creare ordine nel proprio sistema e quindi di conseguenza rendono le configurazioni molto più semplici da leggere e automaticamente gestibili in maniera corretta.
Nei packages quindi potremmo avere la dichiarazione di tutti gli elementi base presenti nel sistema come switch, light binaty_sensor, automation, script e tanto altro.
Configurazione in Home Assistant
Affinchè questi file, contenenti le varie configurazioni, possano essere riconosciuti all'interno del nostro sistema dovrete eseguire i seguenti passaggi:
- Collegatevi in Home Assistant tramite Ftp o Samba
- Recatevi nella cartella config e aprite il file configuration.yaml
- Modificate immettendo sotto la riga contenente la keyword homeassistant: la stringa packages: !include_dir_named packages spostata di due spazi da destra verso sinistra, in modo tale da avere un risultato simile:

- Dopo aver salvato e chiuso il file, create nella cartella config una sottocartella chiamata packages che includerà tutti i nostri file yaml ordinati con le nostre configurazioni.
- Riavviate Home Assistant per rendere effettive le modifiche
Creazione di un packages
Dirigetevi nella nuova cartella packages situata nella sottocartella config e iniziate a creare un file yaml denominandolo con un nome a vostra scelta, ex: prova.yaml



Commenti e Esempio Pratico
Una piccola parte che consiglio, ma che non è obbligatoria, sono i commenti, ovvero nel vostro file yaml potrete inserire qualcosa che indirizzi sia voi stessi che un altro programmatore a compiere eventuali modifiche future. Per eseguire questa operazione basta semplicemente anteporre alle vostre note il simbolo del cancelletto(#).

Esempio Finale
In questa parte potrete vedere un package che riassume molto brevemente la struttura dei packages che crea semplicemente dei timer tramite automazioni alle luci precedentemente dichiarate e esposte tramite una configurazione mqtt con delle semplici automazioni:
# INTEGRAZIONI LUCI AD HOME ASSISTANT
light:
- platform: mqtt
name: "Luce Corridoio" # NOME ASSEGNATO ALLA PRIMA LUCE
state_topic: "stat/Luce_Corridoio/RESULT"
value_template: "{{ value_json.POWER }}"
command_topic: "cmnd/Luce_Corridoio/POWER"
availability_topic: "tele/Luce_Corridoio/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: "Luce Disimpegno"
state_topic: "stat/luce_disimpegno/RESULT"
value_template: "{{ value_json.POWER }}"
command_topic: "cmnd/luce_disimpegno/POWER"
availability_topic: "tele/luce_disimpegno/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
# CREAZIONE AUTOMAZIONI
automation:
- alias: Timer Disimpegno
initial_state: 'on'
trigger:
platform: template
value_template: '{% if is_state(''light.luce_disimpegno'', ''on'') %}true{% endif %}' #Se lo stato della luce nel disimpegno è on
for: 00:00:45
action:
- service: light.turn_off
entity_id: light.luce_disimpegno
- alias: Timer Ingresso
initial_state: 'on'
trigger:
platform: template
value_template: '{% if is_state(''light.luce_ingresso'', ''on'') %}true{% endif %}'
for: 00:00:45
action:
- service: light.turn_off
entity_id: light.luce_ingresso
- alias: Timer Corridoio
initial_state: 'on'
trigger:
platform: template
value_template: '{% if is_state(''light.luce_corridoio'', ''on'') %}true{% endif %}'
for: 00:00:45
action:
- service: light.turn_off
entity_id: light.luce_corridoio
- alias: accendi_Luce_ingresso
initial_state: 'on'
trigger:
- platform: state
entity_id: binary_sensor.door_window_sensor
from: 'off'
to: 'on'
condition:
condition: or
conditions:
- condition: sun
after: sunset
after_offset: "-00:30:00"
- condition: sun
before: sunrise
action:
- service: light.turn_on
data:
entity_id: light.luce_ingresso
- alias:
initial_state: 'on'
trigger:
- platform: state
entity_id: person.antonio
to: not_home
action:
- service: light.turn_off
entity_id:
- light.luce_corridoio
- light.luce_ingresso
- light.luce_disimpegno
###########################FINE DEL PACKAGE#########################################
Se la guida è poco chiara spero di rimuovere i vostri dubbi con il video a seguire
{youtube:P7Os0Tpi7XI}