Utilisation de fonctions Python dans une automatisation

Bonjour,

Est-il possible d’utiliser des fonctions python avec Home assistant ?

Je souhaiterais pouvoir déterminer certaines valeurs de sensor en utilisant les valeurs de certains sensors comme variables dans une fonction.

Par exemple:

> import math as m
> def fonction(sensor_temperature_1, sensor_temperature_2):
>     calcul = m.log(sensor_temperature_1) + m.log(sensor_temperature_2)
>     return calcul

SI c’est réalisable, avez-vous une direction à me donner ? (python script, etc…)
Je vous remercie par avance.

Ma configuration


System Information

version core-2024.7.3
installation_type Home Assistant OS sous PROXMOX
dev false
hassio true
docker true
virtualenv false
python_version 3.12.4
os_name Linux
os_version 6.6.33-haos
arch x86_64
timezone Europe/Paris
___

Salut

Pyscript ne ferait pas l’affaire ? cela te permet d’utiliser Python dans des automations: GitHub - custom-components/pyscript: Pyscript adds rich Python scripting to HASS

Vincèn

Salut @vincen,

Effectivement, j’avais identifié au moins 2 solutions:

  • Faire une intégration « maison »
  • Utiliser Pyscript

J’ai jeté un oeil pour l’intégration. La structure est compréhensible mais je m’y perd, je vais potasser quelques exemples. :wink:

J’ai finalement utilisé Pyscript avec 3 étapes:

  1. Création d’un template sensor

C’est le sensor qui va recevoir la valeur calculée.

- name: NOM_TEMPLATE_SENSOR
  unique_id: NOM_TEMPLATE_SENSOR
  unit_of_measurement: "UNITE_TEMPLATE_SENSOR"
  state: "{{ states('sensor.NOM_TEMPLATE_SENSOR') }}"
  1. Ajout d’un fichier .py avec ma fonction dans le dossier /config/pyscript
#Import des modules éventuellement nécessaires
import math as m

#Déclaration des variables éventuelles
C=200

#La fonction

@service
def NOM_FONCTION(VARIABLE_UTILISEE=None):
   # Mon calcul, ici un exemple
   resultat = m.exp(VARIABLE_UTILISEE+C)
   # J'écris la valeur dans le sensor de Home Assistant
   state.set("sensor.NOM_TEMPLATE_SENSOR", resultat)
  1. Ajout de l’automatisation qui permet de faire le calcul dès que VARIABLE_UTILISEE change
- id: ...
  alias: "Calculer sensor NOM_TEMPLATE_SENSOR"
  description: "..."
  trigger:
    - platform: state
      entity_id: sensor.VARIABLE_UTILISEE
  action:
    - service: pyscript.NOM_FONCTION
      data:
        VARIABLE_UTILISEE: "{{ states('sensor.VARIABLE_UTILISEE') }}"
1 « J'aime »