Componente Home Assistant “Python Scripts”

Produttore: Home Assistant Community
Disponibilità: incluso nell’HUB personale Home Assistant
Categoria: software
Tipologia: componente Home Assistant
Difficoltà di implementazione: media

A differenza della stragrande maggioranza dei componenti Home Assistant, “Python Script” non è utile per la definizione di entità bensì alla nuda, cruda e utilissima esecuzione di script personali scritti in linguaggio Python.

L’aspetto più interessante di questa possibilità sta nel fatto di poter controllare entità e servizi propri di Home Assistant all’interno degli script, permettendo di personalizzare il comportamento dell’HUB in modalità non nativamente incluse.

Le variabili utilizzabili a tal fine sono:

NomeDescrizione
hassL’oggetto “Home Assistant”. È possibile utilizzarlo solo per chiamare servizi, impostare stati e innescare eventi. Riferimento API
dataI dati passati come payload alla chiamata del servizio proiezione dello script stesso.
loggerIl logger di Home Assistant: logger.info(), logger.warning(), logger.error()Riferimento API

Per attivare questo componente è sufficiente indicare in configurazione la voce:

python_script:

E riavviare Home Assistant. Inoltre, è necessario creare la cartella

python_scripts/

dentro la quale andranno copiati i file relativi agli script che si vorranno eseguire da Home Assistant.

Ciò fatto, Home Assistant creerà tanti servizi quanti sono gli script rilevati in tale cartella.
Poniamo, per esempio, di avere uno script chiamato “example.py” correttamente copiato all’interno della cartela “python_scripts“. Il servizio ad esso associato (il quale può essere eseguito al pari e nelle modalità ordinarie di esecuzione dei servizi Home Assistant) si chiamerà “python_script.example“.

Come EVOCARE i servizi

L’esempio che segue spiega come scrivere uno script che preveda due variabili in ingresso: entity_id (richiesto) e rgb_color (opzionale). Lo script, quando evocato tramite corrispondente servizio, provvede ad accendere la luce indicata con entity_id impostando l’eventuale colore rgb passato con rgb_color e imposta la luminosità al massimo (255):

entity_id = data.get('entity_id')
rgb_color = data.get('rgb_color', [255, 255, 255])
if entity_id is not None:
    service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 }
    hass.services.call('light', 'turn_on', service_data, False)

Sarà poi sufficiente evocare il servizio corrispondente lo script e passargli un payload di questo tipo:

{"entity_id": "light.camera", "rgb_color": [255, 0, 0] }

Per far sì di scatenare l’effetto dello script descritto.


Home Assistant Official LogoATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica a Home Assistant, per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.

🔻 Clicca QUI per commentare l'articolo. 🔻