Probleme de compréhension calcul et sensors

Mon problème

Création d’un sensors

Bonjour à tous,

À la suite de la reception de mon Onduleurs pour pallier les microcoupures qui me cramais le SQLite régulièrement. J’ai réussi à en récupérer les infos de fonctionnement de base. Mais il me manque l’essentiels la consommation instantanée, pour pouvoir calculer la consommation totale de la partie informatique.
Mais
Je n’arrive pas à créer le sensors qui va calculer la conso et je comprends pas mon erreur malgré les indices trouvé sur le forum.

J’ai d’abord voulu intégrer ce sensors dans la configuration en faisant un include du fichier sensors
/config/sensors.yaml

sensors: !include sensors.yaml

en y plaçant dedans ce bout de code

- platform: template        
  sensors:
  conso_ups:
        value_template: "{{states(‘sensor.onduleur_garage_nominal_power) | float /100 | float *(‘sensor.onduleur_garage_load)}}"
        unit_of_measurement: "W"
        icon: 'mdi:lightning-bolt'
        device_class: energy

Et ça ne fonctionne pas j’ai deux erreurs que je ne comprends pas et je recherche de l’aide pour les comprendre.

1/ l’include dans le configuration.yaml ne fonctionne pas, quand je veut relancer HA j’ai cette erreur ?

Cannot quick reload all YAML configurations because the configuration is not valid: Integration error: sensors - Integration ‹ sensors › not found.

2/ si je mets le code dans le configuration.yaml direct sans include j’ai cette erreur

Cannot quick reload all YAML configurations because the configuration is not valid: Invalid config for [sensor.template]: expected dictionary for dictionary value @ data[‹ sensors ›]. Got None extra keys not allowed @ data[‹ conso_ups ›]. Got {‹ value_template ›: ‹ {{states(‘sensor.onduleur_garage_nominal_power) | float /100 | float *(‘sensor.onduleur_garage_load)}} ›, ‹ unit_of_measurement ›: ‹ W ›, ‹ icon ›: ‹ mdi:lightning-bolt ›, ‹ device_class ›: ‹ energy ›}. (See ?, line ?).

Quelqu’un peut m’aiguiller svp merci

Salut,
La construction des template sensor a changé.
Voici la doc officielle qui t’explique comment procéder.

Bonjour,

Sensor doit être sans « s » :

sensor: !include sensors.yaml

Ensuite, pour les template vous devriez utiliser la nouvelle façon de faire.
Dans votre fichier configuration.yaml :

template: !include templates.yaml

Puis dans le fichier templates.yaml :

- sensor:
    - name: conso_ups
      state: "{{states(‘sensor.onduleur_garage_nominal_power) | float /100 | float *(‘sensor.onduleur_garage_load)}}"
      unit_of_measurement: "W"
      icon: 'mdi:lightning-bolt'
      device_class: power
      state_class: measurement

Ok donc le fichier sensor sans s est remplacer par templates.yalm
J’ai donc déplacé les sensors qui était sous template dans mon configuration.yaml et je présume que les codes

sensor:
  - platform: template
    sensors:

Qu’il me reste dans ce fichier peuvent être déplacer ?

Cependant j’ai une erreur qui apparais dans les logs après redémarrage et je comprends pas de quels syntax il me parle

Logger: homeassistant.config
Source: config.py:864
First occurred: 21:31:54 (1 occurrences)
Last logged: 21:31:54

Invalid config for [template]: invalid template (TemplateSyntaxError: unexpected char ‹ ‘ › at 9) for dictionary value @ data[‹ sensor ›][0][‹ state ›]. Got ‹ {{states(‘sensor.onduleur_garage_nominal_power) | float /100 | float *(‘sensor.onduleur_garage_load)}}\n ›. (See /config/templates.yaml, line 45).

  - sensor:
     - name: "Conso Ups"
       unique_id: conso_ups
       state: >
        {{states(‘sensor.onduleur_garage_nominal_power) | float /100 | float *(‘sensor.onduleur_garage_load)}}
       unit_of_measurement: "W"
       icon: 'mdi:lightning-bolt'
       device_class: power
       state_class: measurement

Il y a plusieurs erreur dont le fait que vous n’utilisez pas les bonnes quote. Il faut utiliser ' et non ´

Ça devrait être :

states('sensor.onduleur_garage_load')

Il manque également un simple quote pour le 1er sensor :

states('sensor.onduleur_garage_nominal_power')

Si vous parlez de vos autres template sensor alors oui ils peuvent être déplacé en les réécrivant au bon format. Si vous parlez juste des 3 lignes que vous avez affiché, elles peuvent être supprimés

Merci @Makai ça commence à prendre forme et le code est plus propre avec les bon quote.
Cependant la formule semble fausse ou non comprise par Ha

J’ai la puissance max en VA de 550 qui est fixe [sensor.onduleur_garage_nominal_power]
Et j’ai [sensor.onduleur_garage_load] qui 'indique le pourcentage utiliser de ces 550 VA

donc 550 /100 * (% instant t)

{{states('sensor.onduleur_garage_nominal_power') | float /100 | float *('sensor.onduleur_garage_load')}}

cela me retourne unavailable ?
unit_of_measurement: "VA" qui serais pas bonne ?

Il manque le mot states devant votre second sensor :

{{ states('sensor.onduleur_garage_nominal_power') | float /100 | float *states('sensor.onduleur_garage_load') }}

hum il ne comprend pas la valeur de states('sensor.onduleur_garage_load') si je le remplace par l’état actuel qui est de 15 ça donne le bon résultats
sensor.onduleur_garage_load a bien un état de 15% actuellement

A part peut être un |int derrière la dernière parenthèse je vois pas.

Vous pouvez tester votre « code » dans la partie « Outils de développement / Modèle » pour essayer de voir ce qui ne va pas. Il doit également y avoir des choses dans le log (Paramètres / système / journaux).

Salut

Attention à bien décaler la ligne qui suit juste après de 2 espaces supplémentaires (pas 1 comme sur les échanges ici)

merci @Pulpy-Luke je viens de corriger et j’en ai profiter pour corriger le reste des sensors .

Mais ça ne corrige pas mon souci.
Dans les logs j’ai ce souci de float ?

TemplateError(‹ TypeError: can’t multiply sequence by non-int of type ‹ float › ›) while processing template ‹ Template<template=({{ states(‹ sensor.onduleur_garage_nominal_power ›) | float /100 | float *states(‹ sensor.onduleur_garage_nominal_power ›) }}) renders=4> › for attribute ‹ _attr_native_value › in entity ‹ sensor.conso_ups ›

10:07:30 – (ERREUR) helpers/template_entity.py

Error while processing template: Template<template=({{ states(‹ sensor.onduleur_garage_nominal_power ›) | float /100 | float *states(‹ sensor.onduleur_garage_nominal_power ›) }}) renders=2>

10:07:30 – (ERREUR) helpers/template.py

Et quand je le test dans les outils de développement il me donne ce souci

TypeError: can’t multiply sequence by non-int of type ‹ float ›

J’ai essayé d’enlever le second float mais non ça veut pas et si je remplace states('sensor.onduleur_garage_nominal_power') par la valeur T power ça fonctionne pourtant il y a le second float ? {{ states('sensor.onduleur_garage_nominal_power') | float /100 | float *15 }}

L’idéal c’est de partager aussi le template (pas que les erreurs) pour bien voir. Là avec la serie de correction, c’est pas simple tout suivre
Il faut aussi que tu changes tous les float en float(default=0), et tu peux simplifier la multiplication
Je pense que ça doit s’approcher de ça

state: >
  {{ (states('sensor.onduleur_garage_nominal_power') | float(default=0) /100) *(states('sensor.onduleur_garage_load') | float(default=0)) }}

ok c’était ça il manquait des () et le (default=0), merci @Pulpy-Luke
à quoi sert ce (default=0) ?

Si ta valeur n’est pas numérique , ça donne 0

Salut a tout
Je me suis aperçue que certaine de mes sondes de T Bresser avais de gros décalage de température.
J’ai donc voulu créer des nouveau sensors de correction mais je n’arrive pas à faire la formule j’ai une erreur à chaque fois. d’où proviens mon erreur car quand je lis sur le forum je trouve de tout sans comprendre réellement la Façon de procéder

  - sensors:        
     - name: "sonde_cuisine_temperature_reajust"
       unique_id: sonde_cuisine_temperature_reajust
       state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
       unit_of_measurement: "temperature"
       icon: 'mdi:temperature-celsius'
       device_class: temperature
       state_class: measurement

Merci par avance

Si tu as une erreur, il serai bien de la partager.
On ne peut pas deviner.

Tu es sûr de ca ?

Je mettrais plutôt ca :

unit_of_measurement: °C

salut oui vrai mais comme je presume une erreur de formule je n’y ai pas pensée désoler
pour unité de mesure je viens de corriger

Logger: homeassistant.config
Source: config.py:864
First occurred: 16:43:54 (1 occurrences)
Last logged: 16:43:54

Invalid config for [template]: expected dictionary for dictionary value @ data['sensors']. Got [{'name': 'sonde_cuisine_temperature_reajust', 'unique_id': 'sonde_cuisine_temperature_reajust', 'state': "{{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}\n", 'unit_of_measurement': '°C', 'icon': 'mdi:temperature-celsius', 'device_class': 'temperature', 'state_class': 'measurement'}]. (See /config/templates.yaml, line 55).

Ta bien qu’un seul - sensors: dans le templates.yaml ?

exemple de plusieurs template sensor dans le template.yaml (BIEN!!):

  - sensor:        
     - name: "sonde_cuisine_temperature_reajust"
       unique_id: sonde_cuisine_temperature_reajust
       state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
       unit_of_measurement: "temperature"
       icon: 'mdi:temperature-celsius'
       device_class: temperature
       state_class: measurement

     - name: "sonde_cuisine_temperature_reajust_2"
       unique_id: sonde_cuisine_temperature_reajust
       state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
       unit_of_measurement: "temperature"
       icon: 'mdi:temperature-celsius'
       device_class: temperature
       state_class: measurement

PAS BIEN !!

  - sensor:        
     - name: "sonde_cuisine_temperature_reajust"
       unique_id: sonde_cuisine_temperature_reajust
       state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
       unit_of_measurement: "temperature"
       icon: 'mdi:temperature-celsius'
       device_class: temperature
       state_class: measurement

  - sensor:     
     - name: "sonde_cuisine_temperature_reajust_2"
       unique_id: sonde_cuisine_temperature_reajust
       state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
       unit_of_measurement: "temperature"
       icon: 'mdi:temperature-celsius'
       device_class: temperature
       state_class: measurement

sinon montre ce qui a a c’est ligne 55

salut @WarC0zes

Bien sûr que non :crazy_face: mais ça fonctionnait comme ça depuis le debut d’année mais comme je commence à mettre les mains dans le cambouis je trouve des trucs bizarres.
J’avais donc la version PAS BIEN que je viens de corriger pour passer en BIEN

Mais c’est pire tous mes sensors ne fonctionne plus (j’ai perdu sensor.lune par exemple)
Et maintenant j’ai deux boulettes dans la réécriture
c’est quoi qui le dérange a ce point ?

Logger: homeassistant.config
Source: config.py:864
First occurred: 19:12:10 (1 occurrences)
Last logged: 19:12:10
Invalid config for [template]: expected dictionary for dictionary value @ data[‹ sensors ›]. Got [{‹ name ›: ‹ Total énergie convecteur lou ›, ‹ unique_id ›: ‹ total_energie_convecteur_lou ›, ‹ unit_of_measurement ›: ‹ kWh ›, ‹ device_class ›: ‹ energy ›, ‹ state_class ›: ‹ total_increasing ›, ‹ state ›: « {% set energy = state_attr(‹ climate.convecteur_lou_ann ›, ‹ total_energy ›) %} {% if energy == ‹ unavailable › or energy is none%}unavailable{% else %} {{ ((energy | float) /1000.0) | round(2, default=0) }} {% endif %}\n »}, {‹ name ›: ‹ Total énergie convecteur bureau ›, ‹ unique_id ›: ‹ total_energie_convecteur_bureau ›… (See /config/templates.yaml, line 0).

- sensors:
   - name: "Total énergie convecteur lou"
     unique_id: total_energie_convecteur_lou
     unit_of_measurement: "kWh"
     device_class: energy
     state_class: total_increasing
     state:  >
       {% set energy = state_attr('climate.convecteur_lou_ann', 'total_energy') %}
       {% if energy == 'unavailable' or energy is none%}unavailable{% else %}
       {{ ((energy | float) /1000.0) | round(2, default=0) }}
       {% endif %}

   - name: "Total énergie convecteur bureau"
     unique_id: total_energie_convecteur_bureau
     unit_of_measurement: "kWh"
     device_class: energy
     state_class: total_increasing
     state:  >
       {% set energy = state_attr('climate.bureau', 'total_energy') %}
       {% if energy == 'unavailable' or energy is none%}unavailable{% else %}
       {{ ((energy | float) /1000.0) | round(2, default=0) }}
       {% endif %}

   - name: "Total énergie convecteur salon"
     unique_id: total_energie_convecteur_salon
     unit_of_measurement: "kWh"
     device_class: energy
     state_class: total_increasing 
     state:  >
        {% set energy = state_attr('climate.connecteur_salon', 'total_energy') %}
        {% if energy == 'unavailable' or energy is none%}unavailable{% else %}
        {{ ((energy | float) /1000.0) | round(2, default=0) }}
        {% endif %}

   - name: "Total énergie convecteur sejour"
     unique_id: total_energie_convecteur_sejour
     unit_of_measurement: "kWh"
     device_class: energy
     state_class: total_increasing
     state:  >
        {% set energy = state_attr('climate.convecteur_sejour', 'total_energy') %}
        {% if energy == 'unavailable' or energy is none%}unavailable{% else %}
        {{ ((energy | float) /1000.0) | round(2, default=0) }}
        {% endif %}

   - name: "Power Ups"
     unique_id: power_ups
     state:  >
        {{ (states('sensor.onduleur_garage_nominal_power') | float(default=0) /100) *(states('sensor.onduleur_garage_load') | float(default=0)) }}
     unit_of_measurement: "W"
     icon: 'mdi:lightning-bolt'
     device_class: power
     state_class: measurement
       
   - name: "sonde_cuisine_temperature_reajust"
     unique_id: sonde_cuisine_temperature_reajust
     state:  >
        {{ (states('sensor.sonde_t_cuisine_temperature') | float(default=0) - 0.9) }}
     unit_of_measurement: °C
     icon: 'mdi:temperature-celsius'
     device_class: temperature
     state_class: measurement
       
   - name: Lune
     state: >-
       {% set phases = {'first_quarter': 'Premier quartier', 'full_moon': 'Pleine lune',
                         'last_quarter': 'Dernier quartier', 'new_moon': 'Nouvelle lune',
                         'waning_crescent': 'Dernier croissant', 'waning_gibbous': 'Gibbeuse décroissante',
                         'waxing_crescent': 'Premier croissant', 'waxing_gibbous': 'Gibbeuse croissante'} %}
          {% set phase = states('sensor.moon_phase') %}
          {{ phases[phase] if phase in phases.keys() else 'Error' }}
        picture: /local/moon_phases/{{ states('sensor.moon_phase') }}.png