Help, déplacer sensor de configuration.yaml vers sensors.yaml

Bonjour,
je susi en train de m’arracher les quelques cheveux qu’il me reste en essayant de placer mes sensors fonctionnels de configuration.yaml vers le fichier sensors.yaml
j’ai essayé plein de trucs lus sur les forum, sans succès !
voici ce que j’ai dans le config.yaml qui est fonctionnel, comment le convertir dans le sensors.yaml (fichier bien déclaré dans le config.yaml)
merci

template:                                                                                                                       
  - sensor:                                                                                                                     
    - name: "Total APS"                                                                                                         
      device_class: "power"                                                                                                     
      unique_id: total_aps                                                                                                                           
      state: "{{ states('sensor.inv0_totalpwr0') | float + states('sensor.inv1_totalpwr1') | float  + states('sensor.inv2_totalp
      unit_of_measurement: "W"

Bonjour a toi !
Les templates vont dans template.yaml et non dans sensors.yaml :slight_smile:

Un formattage comme celui ci ddans template.yaml devrait fonctionner.

- sensor:
    - name: "Total APS"
      device_class: "power"
      unique_id: total_aps
      state: "{{ states(‹ sensor.inv0_totalpwr0 ›) | float + states(‹ sensor.inv1_totalpwr1 ›) | float +  states('sensor.inv2_totalp 
      unit_of_measurement: "W"

Même si j’en doute car ce que tu as mis dans « state » semble érroné

Merci frosh…
Ok donc j’utilise pas le bon fichier …
Que met on dans sensors.yaml alors ?

Le sensor fonctionne bien dans configuration.yaml

Et bien les sensors XD

Alors ca doit etre ton copier coller sur le site qui a du reformater tes " qui fait qu’iles ne sont pas retransmit dans ici

Bonjour @defaliz ,
Utilise la balise texte préformaté image quand tu colles du code ou log. Ça permet une meilleure visibilité et respecte les espaces. Penses-y les prochaines fois.
J’ai modifié ton message.

1 « J'aime »

Merci beaucoup, je teste ta solution…

j’ai rempli le templates.yaml comme ceci

-sensor:
    - name: "Temp reelle CE"
      device_class: "temperature"
      unique_id: temp_real_ce
      state: >
          {% if states('sensor.temp_ce_ds18b20_temperature')|int > 40 %}
          {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 18 }}
          {%endif%}

et j’ai ce message
could not find expected ':
in « /config/configuration.yaml », line 23, column 1

quand je mets la ligne en commentaire
template !include templates.yaml dans configuration.yaml je n’ai plus l’erreur, c’est donc bien lié à templates.yaml…

Ce que tu entres en « state » est-il fonctionnel quand tu l’essayes dans un modèle ?
Peut être est ce parce qu’il manque un espace entre - et sensor ?

bon, effectivement un espace entre - et sensor ne provoque plus d’erreur
mais c’est la perte du sensor…
je craque…
je remets tout dans configuration.yaml, car le code est parfaitement fonctionnel…
trop sensible ce truc…

en tout cas encore merci de ton aide…
Alain

Peux tu me copier le code que tu mets dans configuration.yaml stp? copier en mode texte préformaté

bonsoir
merci, voici les sensors que je voudrais mettre dans templates.yaml ou sensors.yaml

# divers calculs
template:
  - sensor:
    - name: "Total APS"
      device_class: "power"
      unique_id: total_aps
      #state: "{{ states('sensor.inv0_totalpwr0') | float + states('sensor.inv1_totalpwr1') | float  }}"
      state: "{{ states('sensor.inv0_totalpwr0') | float + states('sensor.inv1_totalpwr1') | float  + states('sensor.inv2_totalpwr2') | float}}"
      unit_of_measurement: "W"
        
    - name: "Total Energie APS"
      device_class: "energy"
      unique_id: total_en_aps
      state: "{{ states('sensor.inv0_totalen0') | float + states('sensor.inv1_totalen1') | float  + states('sensor.inv2_totalen2') | float }}"
      unit_of_measurement: "W/h"
      
    - name: "Puissance totale PZEM"
      device_class: "power"
      unique_id: total_pzem
      state: "{{ states('sensor.pzem16_energy_power') | float  + states('sensor.pzem004_garage_energy_power') | float }}"
      unit_of_measurement: "W"

#calcul la temp reelle du CE
    - name: "Temp reelle CE"
      device_class: "temperature"
      unique_id: temp_real_ce
      state: >
          {% if states('sensor.temp_ce_ds18b20_temperature')|int > 40 %}
          {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 18 }}
          {% elif states('sensor.temp_ce_ds18b20_temperature')|float(0) > 31 and states('sensor.temp_ce_ds18b20_temperature')|float(0) < 39 %}
          {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 19 }}
          {% elif states('sensor.temp_ce_ds18b20_temperature')|float(0) > 26 and states('sensor.temp_ce_ds18b20_temperature')|float(0) < 31 %}
          {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 16 }}
          {% else %}
          {{ states('sensor.temp_ce_ds18b20_temperature')|float(0) + 11}}   
          {% endif %}
template:
  - sensor:
    - name: "Total APS"

Bonjour,
faut bien respecter les espaces.

exemple

template:
  - sensor:
      - name: "Average temperature"

Si tu veux découper le fichier template, il faut ajouter la ligne template: !include template.yaml dans ton configuration.yaml
Tu créer un fichier template.yaml dans /config ou /homeassistant sous file editor.

Dans le fichier template.yaml ( en respctant les espaces ) :

  - sensor:
      - name: "Average temperature"

exemple de ton 1er template:

  - sensor:
      - name: "Total APS"
        device_class: "power"
        unique_id: total_aps
        state: >
          {{ states('sensor.inv0_totalpwr0') |float(0) 
           + states('sensor.inv1_totalpwr1') |float(0)  
           + states('sensor.inv2_totalpwr2') |float(0) }}
        unit_of_measurement: "W"
        

Comme l’a dit WarC0zes, faire attention à bien respecter les intendations
Tu peux essayer ce code dans ton template.yaml et supprimer les sensors de ton configuration.yaml.

# divers calculs
- sensor:
    - name: "Total APS"
      device_class: "power"
      unique_id: total_aps
      state: >
        {{ states('sensor.inv0_totalpwr0') | float(0)
            + states('sensor.inv1_totalpwr1') | float(0)
            + states('sensor.inv2_totalpwr2') | float(0) }}
      unit_of_measurement: "W"
        
    - name: "Total Energie APS"
      device_class: "energy"
      unique_id: total_en_aps
      state: >
        {{ states('sensor.inv0_totalen0') | float(0)
            + states('sensor.inv1_totalen1') | float(0)
            + states('sensor.inv2_totalen2') | float(0) }}
      unit_of_measurement: "W/h"
      
    - name: "Puissance totale PZEM"
      device_class: "power"
      unique_id: total_pzem
      state: >
        {{ states('sensor.pzem16_energy_power') | float(0)
            + states('sensor.pzem004_garage_energy_power') | float(0) }}
      unit_of_measurement: "W"

#calcul la temp reelle du CE
    - name: "Temp reelle CE"
      device_class: "temperature"
      unique_id: temp_real_ce
      state: >
        {% if states('sensor.temp_ce_ds18b20_temperature')|int > 40 %}
           {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 18 }}
        {% elif states('sensor.temp_ce_ds18b20_temperature')|float(0) > 31 and states('sensor.temp_ce_ds18b20_temperature')|float(0) < 39 %}
           {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 19 }}
        {% elif states('sensor.temp_ce_ds18b20_temperature')|float(0) > 26 and states('sensor.temp_ce_ds18b20_temperature')|float(0) < 31 %}
           {{ states('sensor.temp_ce_ds18b20_temperature') |float(0) + 16 }}
        {% else %}
           {{ states('sensor.temp_ce_ds18b20_temperature')|float(0) + 11 }}   
        {% endif %}

En esperant que ca résoude ton soucis :wink:

Il faut utiliser |float(0) ou |float(defaut=0) maintenant, sinon il y aura une erreur au redémarrage de HA.

ha? Ca doit etre nouveau, j’ai beaucoup de template avec juste float et j’ai aucun soucis.
Je vais voir a les mettres a jour avant de les voirs disparaitre ^^

Non, ça fait un moment ( plus de 8 mois ). C’est surtout pour éviter une erreur si l’entité n’est pas encore disponible au reboot. les appareils Zigbee mettre un peu de temps au reboot suivant le nombre d’appareils et suivant la config de ton HA.

De mettre |float(0) permet d’avoir une valeur si l’entité est indisponible , la valeur 0.

1 « J'aime »

Merci pour votre aide, je vais retenter …
En sachant que j’ai déjà un fichier mqtt.yaml et un scripts.yaml qui fonctionnent parfaitement…
Mais sur le template j’ai du mal …

Okay j’allais rajouter cette valeure par défaut dans mes templates et je comprend pourquoi jusque là je n’ai jamais eu d’erreur.
Tout mes |float sont executer derrière un {% if has_value('sensor.XXXXX') %}
pas de valeur pas de calcule, et si valeur alors pas besoin de défaut ^^

1 « J'aime »

Bravo les gars !
ça fonctionne parfaitement !
encore merci à vous, je désespérais d’y arriver…
bonne soirée
Alain

2 « J'aime »