Pollens custom component sensor

Bonjour @Lesuperlolo

Il te faut créer un input select, si tu regarde le code,
{% set dpt = states('input_select.departement')|string %}
Sinon tu peux toujours t’en passer (comme moi) en faisant :
{% set dpt = '60' %}

Comme indiqué ci dessus également par @Neuvidor

Oui, suite à la remarque de @Neuvidor j’ai créé l’input select :


Et comme 3 départements m’intéressent, je ne vais pas figer la variable en dur.
Mon problème c’est juste
image
avec les remarques que je fais au-dessus.

@Lesuperlolo
Utilise les outils de développement de HA (dans le menu, puis Modèle) cela te permettra de tester le code dans « Éditeur de modèles »

{% set dpt = states('input_select.departement')|string %}
{% set sensordpt = 'sensor.pollens_'+ dpt + '_risklevel' %}
{{ dpt }}

Tu devrais avoir le numero du département qui s’affiche sur la fenêtre « Type de résultat: string » a droite
Dans ton cas j’ai l’impression que dans ton code il doit y avoir :

{% set sensordpt = 'sensor.pollens_'+ 'dpt' + '_risklevel' %}

Donc des quotes autour de DPT ou pas de quotes mais pas de + non plus
D’ailleurs en regardant de plus près, le nom du sensor c’est sensor.pollens_xx_risklevel

@chris60600 Merci pour ta réponse, mais je ne comprends toujours pas.
Ton code renvoie bien la valeur du département, et tu ne mets pas de quotes autour de dpt.
Mais dans le code du post 130 que j’ai repris, il n’y en a pas non plus.

Ton input ne porte pas le même nom

Tu peux détailler, s’il te plaît, car je ne vois pas où, et comme indiqué je reprends un code qui semble fonctionner chez celui qui l’a mis.

Déjà ce code de template est d’une ancienne méthode qui risque de ne plus fonctionner prochainement.

Si tu as gardé le.meme nom que ci dessous ton sensor peut être :
Sensor.pollens_du_dpt

# Pollen Risque
  - name: pollens du dpt
    unique_id: pollens_dpt_risks
    state: >
      {% set dpt = states('input_select.departement')|string %}
      {% if dpt == '' %}
        {% set dpt = '91' %}
      {% endif %}
      {% set sensordpt = 'sensor.pollens_'+ dpt + '_risklevel' %}
      {% set riskdptvalue = states(sensordpt) %}
      {{ riskdptvalue }}
    icon: mdi:alert-decagram-outline
    attributes:
      dpt: >
        {% set dpt = states('input_select.departement')|string %}
        {{ dpt }}

J’ai essayé le code du template de @FROlCi et il fonctionne bien chez moi, mais attention il doit se trouver dans la section template du configuration.yaml

template: 
  - sensor:
    - name: pollens du dpt
      unique_id: pollens_dpt_risks
      state: >
        {% set dpt = states('input_select.departement')|string %}
        {% if dpt == '' %}
          {% set dpt = '60' %}
        {% endif %}
        {% set sensordpt = 'sensor.pollens_'+ dpt + '_risklevel' %}
        {% set riskdptvalue = states(sensordpt) %}
        {{ riskdptvalue }}
      icon: mdi:alert-decagram-outline
      attributes:
        dpt: >
          {% set dpt = states('input_select.departement')|string %}
          {{ dpt }}

C’est normalement la nouvelle representation des templates

J’ai bien bougé le code dans le fichier template, supprimé les lignes dans le fichier sensor, redémarré, mais j’ai toujours la même erreur sur la carte.

Hello @Lesuperlolo

tu as donc bien ajouté dans le fichier configuration.yaml toutes les lignes (et cela inclue template:…) s’il y a la moindre erreur cela ne sera pas pris en compte.

Dans la partie outils dev si tu cherches le sensor sensor.pollens_60_risklevel tu trouves bien qque chose ?

Attention, il faut cocher ou décocher je ne sais plus la ligne en dessous du choix de département lorsque que tu lances l’integration pour ajouter un des dpts que tu souhaites monitorer afin d’avoir les valeurs en numérique (3 pour élevé au lieu de élevé)… Désolé je ne l’ai pas précisé…


Et si tu ne l’as pas fait, supprime et recommence pour un dpt (ne pas oublier aussi de sélectionner tous les allergènes)

Pour le sensor pollens du dpt, pour aider à comprendre ma logique:
1 je récupère dans dpt la valeur active dans input_select.departement
2 si par hazard il n’y a rien, je force à 91
3 ensuite je fabrique dynamiquement le nom du sensor qui va me permettre de récupérer le niveau d’alerte pour ce departement ; c’est la partie sensor.pollens_…
4 je récupère le niveau d’alerte et le stocke dans riskdptvalue puis je l’affiche. Pour les attributes, cela ne me sert à rien - juste un test pour moi et valider que j’avais bien compris le mécanisme :wink:

Ensuite, @cob94440

Déjà ce code de template est d’une ancienne méthode qui risque de ne plus fonctionner prochainement.
Tu peux m’en dire plus ? je débute et ne demande qu’a apprendre ^^

Pour moi ce n’est pas l’ancienne méthode (legacy) !
Avant les templates s’écrivaient :

sensor:
  - plateform: template
    sensors:
      test:
        friendly_name: "Test"

Et dans la méthode « modern »

template:
  - sensor:
      - name: test
1 « J'aime »

Pour @Lesuperlolo

Je suppose que tu a déjà vérifié la configuration (configuration.yaml)
Dans Outils de Développement /Yaml Rubrique verifier (ca ne mange pas de pain :yum:)

Sinon dans Outils de Développement /Etats, dans le filtre tape « pollen_d »
image
Tu devrais avoir un sensor. S’il n’y est pas c’est que ton template n’est pas créé

Alors,

  1. Dans le fichier configuration.yaml, j’ai bien template: !include template.yaml

  2. J’ai bien les 3 sensors correspondant aux 3 départements que j’ai créés

  3. Effectivement, la case texte était cochée pour les 3 départements, mais j’ai un souci : maintenant l’intégration ne me propose plus les départements que j’avais choisis dans la liste
    Ça c’est plus un bug pour @chris60600

Je redémarre HA pour voir si ça persiste, en attendant je ne peux plus aller plus loin

Hello
Si, si scrolle dans la liste, ils ne sont juste plus dans l’ordre alphabétique… me demande pas pq ^^

Un redémarrage a suffit.
@chris60600 oui, j’ai bien le sensor :


Mais toujours cette même erreur sur la partie gauge :
image
Il y a quelque chose à charger en plus (sur HACS au hasard ?)

Salut,

Partage le code de ta carte, visiblement il y a une erreur dedans.

Hello,
C’est le copier-coller du code donné ci-dessus :

type: vertical-stack
cards:
  - type: custom:mushroom-select-card
    entity: input_select.departement
    name: Sélection du dpt
    icon: mdi:city-variant-outline
    secondary_info: last-updated
    layout: horizontal
    fill_container: true
  - type: gauge
    entity: sensor.pollens_dpt_risks
    needle: true
    min: -0.5
    max: 3.5
    segments:
      - from: -0.5
        color: '#43a047'
      - from: 0.5
        color: '#63d087'
      - from: 1.5
        color: '#ff781f'
      - from: 2.5
        color: '#ff2200'
    name: Sévérité en cours
    severity:
      green: 0
      yellow: 0
      red: 0
  - type: custom:auto-entities
    filter:
      include: null
      template: |
        {%  set ALTNAME = 'd'-%} 
         {% set dpt = states('input_select.departement')  %}
         {% set search_string = 'sensor.pollens_'+ dpt|string + '_' %}
        {% set xclude_string = 'sensor.pollens_'+ dpt|string + '_risklevel' %}
        {% for state in states.sensor -%}
          {%- if state.entity_id | regex_match(search_string,ignorecase=False) -%}
            {%- if state.entity_id != xclude_string -%}
               {%- set NAME = state_attr(state.entity_id,"pollen_name") -%}
                {{
                  { 'entity': state.entity_id,
                    'name': NAME
                  } }},
             {%- endif -%} 
          {%- endif -%}
        {%- endfor %}
      exclude:
        - state: <1
    sort:
      numeric: true
      reverse: true
      method: state
    card:
      type: custom:bar-card
      title: Allergènes en alerte
      min: -0.5
      max: 3.5
      severity:
        - color: '#43a047'
          from: -0.5
          to: 0.5
          hide: true
        - color: orange
          from: 0.5
          to: 1.5
        - color: '#ff781f'
          from: 1.5
          to: 2.5
        - color: '#ff2200'
          from: 2.5
          to: 3.5
      target: '0.5'
      columns: '2'
      animation:
        speed: '1'
    show_empty: false

Désolé ce n’est pas un bug, c’est pour éviter d’ajouter deux fois le même département ce qui génère une erreur :stuck_out_tongue:

1 « J'aime »

Encore une fois ton nom de sensor est pas bon.dans ta carte c’est
sensor.pollens_dpt_risks
Dans ta conf c’est
sensor.pollens_du_departement

1 « J'aime »

Effectivement comme l’a effectivement dit @cob94440 le nom du sensor n’est pas bon
Il n’apparaît pas dans l’image de recherche de « risk » que tu a donné précédemment