Utilisation de fonctions personalisées pour mes sensors (calcul puissance light rgb)

Ayant fait un peu de php, je voudrai créer une fonction personnalisée

j’essaye de lister tous mes sources d’Energie et ce qu’elles consomment, pour la plupart j’ai des capteurs de puissance donc pas de soucis.

  • Mais toutes mes lumières(ampoules ikea) ne possède pas de capteur. j’ai donc créer un sensor « light*_power » par lumière.

Pour éviter la redondance du code je voulais créer une fonction qui puisse me permettre de calculer la puissance de l’ampoule

def calculate_light_power(entity_id, wattage, lumens):
    if is_state(entity_id, 'on'):
        R = state_attr(entity_id, 'rgb_color')[0] / 255
        G = state_attr(entity_id, 'rgb_color')[1] / 255
        B = state_attr(entity_id, 'rgb_color')[2] / 255
        I = state_attr(entity_id, 'brightness') / 255 * lumens
        R_weight = 0.30
        G_weight = 0.59
        B_weight = 0.11
        power = ((I / lumens) * wattage * (R * R_weight + G * G_weight + B * B_weight))
        return round(power, 2)
    else:
        return 0

cette fonction (theorique) calcule la puissance a l’instant T de l’ampoule en prenant en compte sa puissance max , son intensite lumineuse, et pondéré suivant la couleur utilisée.
j’ai donc collé ce code dans un fichier (functions.py) dans un dossier config/python_scripts.

et j’ai mis dans mon fichier de configuration

python_script:

vu que j’ai 2 autres fichiers dans ce dossier, j’hésitais avec:

python_script: !include_dir_merge_list python_script/

apres dans mon fichier « /config/sensors/energy.yaml »

cuisinelight_power:
      device_class: power
      friendly_name: "puissance Lumière Cuisine"
      unique_id: light_cuisine1
      unit_of_measurement: W
      icon_template: mdi:lightbulb
      value_template: >-
          {% set power = calculate_light_power('light.cuisinelight', 8.6, 806) %}
          {{ power }}

Donc assez content de ma trouvaille, car si je met le contenu de ma fonction dans mon sensor , ca marche, mais le fait de vouloir creer une fonction pour pouvoir l’utilisé sur chaque entite lumiere, et bé ca marche pas, d’ou mon post

Merci de vos lumières…

Salut

jettes un coup d’oeil a cela

1 « J'aime »

bordel, j’ai l’impression que j’ai passé du temps a réinventer la roue :thinking:
fais chier j’etais pas mecontent de mon code lol
vais tester ca.

1 « J'aime »

lol

bon j’ai tester, ca marche pas mal, un peu sceptique avec les mesures relevées, je les trouve basse, une E14 rgb de chez ikea, l’integration me donne pour une lumière blanche intensité a fond a 4000K, 3.94W avec une puissance au repos de 0.23w. ikea me dis 5.2w et 0.3w au repos.

J’ai tester avec une prise connectee, qui mesure la puissance, bon j’ai pas les dixieme, ca arrondi au w. et elle me dis 4w.

Ce serait les donnees constructeurs qui seraient un peu généreuse… bizarre

Merci du tuyau, vais partir sur cette soluc, puisque ca me fourni aussi les donnees energy

apres si quelqu’un peut quand même répondre sur l’utilisation des scripts python, mais d’apres ce que j’ai vu ce serait lié aux services…