[AIDE] Créer un sensor à partir d'un template

Mon problème

Bonjour à tous,

J’ai un capteur de température qui retourne une valeur avec 2 décimales et je voudrait faire un arrondi à 1 décimale.
Ex:

  • Actuellement; « Température Cuisine : 20,03 °C »
  • Ce que je veux: « Température Cuisine: 20.0 °C »

Je veux donc faire un nouveau capteur avec un template mais je n’arriva pas le faire…

J’ai un fichier sensor.yaml que je veux utiliser pour stocker ce nouveau capteur.

Voici ce que j’ai mis:

  - platform: template
    cuisine:
      friendly_name: "Temperature Cuisine"
      entity_id: sensor.temp_cuisine
      unit_of_measurement: '°C'
      device_class: temperature
      value_template: "{{ states('sensor.temperature_158d0003cb8863') | round(1) }}"

Et voici le message d’erreur que j’obtiens:

Logger: homeassistant.components.hassio
Source: components/hassio/__init__.py:454
Integration: Hass.io (documentation, issues)
First occurred: 14:20:59 (1 occurrences)
Last logged: 14:20:59

Invalid config for [sensor.template]: [cuisine] is an invalid option for [sensor.template]. Check: sensor.template->cuisine. (See ?, line ?).

J’ai essayé plein de variantes mais j’ai systématiquement un message d’erreur.
Est-ce que quelqu’un peu à une proposition pour m’aider à résoudre ce problème?

Autres variante tester (également en erreur):

  - platform: template
    sensor:
      cuisine:
        friendly_name: "Temperature Cuisine"
        entity_id: sensor.temp_cuisine
        unit_of_measurement: '°C'
        device_class: temperature
        value_template: "{{ states('sensor.temperature_158d0003cb8863') | round(1) }}"

Ma configuration


System Health

version core-2021.3.4
installation_type Home Assistant Supervised
dev false
hassio true
docker true
virtualenv false
python_version 3.8.7
os_name Linux
os_version 5.10.17-v7+
arch armv7l
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4982
Installed Version 1.11.3
Stage running
Available Repositories 841
Installed Repositories 8
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud pending
Hass.io
host_os Raspbian GNU/Linux 10 (buster)
update_channel stable
supervisor_version supervisor-2021.03.6
docker_version 20.10.5
disk_total 117.0 GB
disk_used 24.7 GB
healthy true
supported failed to load: Unsupported
supervisor_api ok
version_api ok
installed_addons File editor (5.2.0), MariaDB (2.2.2), Node-RED (8.1.2), ESPHome (1.16.2)
Lovelace
dashboards 1
resources 5
views 7
mode storage
Spotify
api_endpoint_reachable pending
___

Bonjour,

Il te manque un « s » à sensor sous platform: template et entity_id ne fait pas parti des options possibles

Comme ceci

- platform: template
    sensors:
      cuisine:
        friendly_name: "Temperature Cuisine"
        unit_of_measurement: '°C'
        device_class: temperature
        value_template: "{{ states('sensor.temperature_158d0003cb8863') | round(1) }}"

Merci !!!
Je sens comme un c** la. J’ai passé 1 heure la dessus à cause d’un « s » :rage:

De rien,

PAs que le s, ton entity_id ne fonctionnait pas non plus, tu aurais eu une autre erreur :wink:
et on fait tous la boulette de ce style :wink:

Effectivement je l’ai enlevé aussi.

Hello.

Je profite de ce poste, car j’essai depuis un bout de temps de créer ce type de sensor:

  - sensor:
    - name: "Temperature Zone Vie"
      unique_id: 907b2391-07d4-4f14-9cf2-c7f029fe473a
      device_class: temperature
      unit_of_measurement: '°C'
      state:  >
          {% set baie = states('sensor.temperature_158d0001e456ec') | float %}
          {% set cuisine = state_attr('climate.domicile_zone_vie', 'current_temperature') | float %}

          {{ (baie + cuisine) / 2 }}

Par contre je ne comprend pas, car il ne me propose pas un graphique historique dans les logs… Je ne sais pas pourquoi…

image

Ok j’ai trouvé mon erreur. Je n’étais pas dans le bon bloc

Partage ton code corrigé… :innocent:

Je n’avais pas encore corrigé. Et je vois que cela ne fonctionne pas non plus :confused:

Voici mon code en entier afin d’assurer que je sois sur le bon code:

template:
  - sensor:
    - name: "Temperature Zone Vie"
      device_class: temperature
      state:  >
          {% set baie = states('sensor.temperature_158d0001e456ec') | float %}
          {% set cuisine = state_attr('climate.domicile_zone_vie', 'current_temperature') | float %}

          {{ (baie + cuisine) / 2 }}

hmm bon je pense que ca vient de l’attribut

Bonjour,
Super intéressant. Merci beaucoup je cherchai justement comment récupérer la température depuis une api et l’afficher.
Bonne continuation

Bonjour à tous,
Je vais moi aussi profiter de ce poste pour poser mes interrogation
Je débute encore avec HA (et la domotique en générale). Il y a encore beaucoup de chose que je ne saisis pas…

Je cherche à créer un sensor qui soit la somme de deux autres.

Dans un premier temps j’ai deux capteur qui sont la production pour l’un de mes panneau solaire, et pour l’autre de mon éolienne, tous deux arrive sous la forme de « watt », je veux donc créer un sensor qui m’affichera en une seul ligne « production solaire + éolienne »

Ensuite j’ai un capteur qui est la tension de ma batterie en « millivolt » et son courant de décharge en « milliampère » j’aimerai affiché le résultat en watt, soit « (mv x ma) x 0.001 »

J’ignore totalement comment m’y prendre, si ce n’est que ce serait a l’aide de template, mais je ne trouve aucun tuto en français et mon anglais est plus que déplorable…

Merci à ceux qui voudront bien prendre le temps de m’aider ! :smiley:

Voici ce que j’ai trouver comme exemple :

- platform: template
  sensors:
    E_renouvelable: #a remplacer par le nom que tu souhaite lui donner
      unit_of_measurement: "A" # voir documentation
      value_template: "{{ (states('sensor.panneausolaire') | float) + (states('sensor.eolienne') | float) }}"

Merci, j’ai testé le bout de code tu m’a donner, ça marche pour les addition et multiplication, en revanche, impossible de faire « x 0.001 » (enfin, avec « * » et non pas « x »)

Une idée de comment je pourrait m’y prendre ? pour passer de mon résultat en milliwatt a un affichage en watt ?

J’ai récemment eu le cas ou j’ai eu du mal a trouver mais pour moi ce code fonctionne pour diviser et il fonctionne aussi pour addition multiplication apparemment mais jamais tester.

en espérant que cela fonctionne pour toi :slight_smile:

sensor:
  - platform: template
    sensors: 
      down_max_freebox: #le nom de ton sensor (attention a mettre "_" entre 2mots et minuscule
        friendly_name: "Max Down"        #nom qui apparaitra  
        unit_of_measurement: 'Mo/s' #a changer en milliwatt dans ton cas
        value_template: "{{ (state_attr('sensor.stats_freebox_download_speed', 'max_value') | float / 1000) | round(2) }}" #round(2) signifie 2 nombre après la virgule

si ce n’est pas un attribut dans le sensor que tu veut remplace le par

value_template: "{{ (states('sensor.freebox_upload_speed') | float / 1000)| round(2) }}"
1 « J'aime »

Il faut partager ton code :+1:

Merci @Felix62 pour ce nouvel exemple, je cerne mieux la chose :grinning:

Si ça peut en aider d’autre, voici ce que j’ai réussi à faire :

- platform: template
  sensors:
    pylon_custom_charge_batterie: 
      friendly_name: "Charge Batterie" 
      unit_of_measurement: "W"
      value_template: "{{ ((states('sensor.pylontech1_courant_charge') | float / 1000) * (states('sensor.pylontech1_tension') | float / 1000)) | round(1) }}"
    
    pylon_custom_decharge_batterie: 
      friendly_name: "Conso Batterie" 
      unit_of_measurement: "W" 
      value_template: "{{ ((states('sensor.pylontech1_courant_decharge') | float / 1000) * (states('sensor.pylontech1_tension') | float / 1000)) | round(1) }}"
      
    pylon_custom_content_batterie: 
      friendly_name: "Capacité Batterie restant" 
      unit_of_measurement: 'Wh' 
      value_template: "{{ ((states('sensor.pylontech1_tension') | float / 1000) * (states('sensor.pylontech1_residuelmA') | float / 1000)) | round(1) }}" 
      

Maintenant je recherche moyen pour faire que si la valeur afficher par une soustraction est négative, alors elle affiche « 0 »

Bonjour,

Je déterre ce fil car je viens de passer une heure à essayer de configurer un template sensor et je ne m’en sors pas.

Voici ma config:
configuration.yaml

template: !include_dir_merge_named template

template/sensor/temperatures.yaml

sensor:
  - name: "Température chambre R"
    unit_of_measurement: "°C"
    state: '{{ sensor.wemos_temp_etage_ds18b20_4_temperature - 0.3 }}'

Et voici le log d’erreur:

TemplateError('UndefinedError: 'sensor' is undefined') while processing template 'Template("{{ sensor.wemos_temp_etage_ds18b20_4_temperature - 0.3 }}")' for attribute '_attr_native_value' in entity 'sensor.temperature_chambre_r'
20:02:45 – (ERREUR) helpers/template_entity.py
Template variable error: 'sensor' is undefined when rendering '{{ sensor.wemos_temp_etage_ds18b20_4_temperature - 0.3 }}'
20:02:45 – (ERREUR) helpers/template.py - message survenu pour la première fois à 20:02:45 et apparu 2 fois.
Error while processing template: Template("{{ sensor.wemos_temp_etage_ds18b20_4_temperature - 0.3 }}")
20:02:45 – (ERREUR) helpers/template.py

Le sensor « sensor.temperature_chambre_r » apparait bien dans la liste des entités mais à l’état « unavailable »

Quelqu’un aurait-il une idée ?

Merci

Hello

essai avec ce modele

      - name: "Temp. "
        unit_of_measurement: '°C'      
        state: >   
          {{ states.sensor.wemos_temp_etage_ds18b20_4_temperature.state |float| round(0)}}
        icon: "mdi:thermometer"
        device_class: "temperature"
        state_class: "measurement" 

Bonsoir,

Merci, cela fonctionne.

Je vais regarder comment faire pour soustraire une valeur.

[EDIT]
J’ai trouvé:

state: >   
          {{ states.sensor.wemos_temp_etage_ds18b20_4_temperature.state |float - 0.3 }}
1 « J'aime »

Bonsoir,

je profite de ce post pour demander si certains parmi vous ont un template qui permet de créer des capteurs pour les informations météo de Meteorologisk institutt (Met.no).
C’est pour pouvoir stocker température et humidité relative (notamment) dans InfluxDB ?

J’essaye avec

template:
  - sensor:
      - name: "temp_ext"
        unit_of_measurement: '°C'
        device_class: temperature
        state_class: measurement
        state: "{{ state_attr('weather.forecast_maison_vivonne', 'temperature') }}"

dans mon /config/configuration.yaml et ça semble fonctionner car je trouve bien sensor.temp_ext sur http://homeassistant.local:8123/config/entities … maintenant il faut le faire pour les autres info… c’est long si certain l’on fait je suis preneur

Merci d’avance pour votre aide