Erreur dans custom card

Bonjour

Suite a un souci avec un shelly uni, j’ai modifié mon installation pour fonctionner avec un ESP32.

sur le shelly j’utilisai ce code sur une custom card :

type: custom:button-card
entity: binary_sensor.esp1_debit_rejet_adoucisseur
aspect_ratio: 5/2
show_state: false
show_last_changed: true
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - text-transform: null
    - font-size: 12px
state:
  - value: 'on'
    icon: |
      [[[
       if (states['binary_sensor.switch_cycle_input'].state == 'off')
         return 'mdi:water-alert'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'mdi:water-alert'; return 'mdi:water'   
      ]]]
    name: |
      [[[
       if (states['binary_sensor.switch_cycle_input'].state == 'off')
         return 'Fuite Adoucisseur'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'Fuite Adoucisseur '; return 'Regeneration'   
      ]]]
    styles:
      card:
        - background-color: white
        - border: |
            [[[
             if (states['binary_sensor.switch_cycle_input'].state == 'off')
               return '2px solid var(--google-red)'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return '2px solid var(--google-red)'; return '2px solid var(--google-green)'   
            ]]]
        - color: red
      icon:
        - color: |
            [[[
             if (states['binary_sensor.switch_cycle_input'].state == 'off')
               return 'red'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return 'red'; return 'green'   
            ]]]
      name:
        - color: black
  - value: 'off'
    icon: mdi:water-check
    name: Pas de Fuite
    styles:
      card:
        - background-color: white
        - border: 2px solid var(--google-blue)
        - color: grey
      icon:
        - color: blue
      name:
        - color: black

Pour ESP , J’ai donc réutilisé cette carte en remplaçant les binary_sensor du shelly par ceux de ESP

type: custom:button-card
entity: binary_sensor.esp1_debit_rejet_adoucisseur
aspect_ratio: 5/2
show_state: false
show_last_changed: true
styles:
  card:
    - background-color: white
    - border-radius: 10%
    - filter: opacity(100%)
    - padding: 2px
    - text-transform: null
    - font-size: 12px
state:
  - value: 'on'
    icon: |
      [[[
       if (states['binary_sensor.esp1_cycle_adoucisseur'].state == 'off')
         return 'mdi:water-alert'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'mdi:water-alert'; return 'mdi:water'   
      ]]]
    name: |
      [[[
       if (states['binary_sensor.esp1_cycle_adoucisseur'].state == 'off')
         return 'Fuite Adoucisseur'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
         return 'Fuite Adoucisseur '; return 'Regeneration'   
      ]]]
    styles:
      card:
        - background-color: white
        - border: |
            [[[
             if (states['binary_sensor.esp1_cycle_adoucisseur].state == 'off')
               return '2px solid var(--google-red)'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return '2px solid var(--google-red)'; return '2px solid var(--google-green)'   
            ]]]
        - color: red
      icon:
        - color: |
            [[[
             if (states['binary_sensor.esp1_cycle_adoucisseur'].state == 'off')
               return 'red'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return 'red'; return 'green'   
            ]]]
      name:
        - color: black
  - value: 'off'
    icon: mdi:water-check
    name: Pas de Fuite
    styles:
      card:
        - background-color: white
        - border: 2px solid var(--google-blue)
        - color: grey
      icon:
        - color: blue
      name:
        - color: black

Le souci c’est que j’ai ce message d’erreur :

la seul différence est le remplacement de binary_sensor.switch_cycle_input par binary_sensor.esp1_cycle_adoucisseur

Je ne trouve pas le problème, faut il faire une modification dans le code de ESP, ou le problème est ailleurs.

code ESP :

Résumé
  - platform: gpio
    name: "ESP1_cycle_adoucisseur"
    pin:
      number: GPIO14
      mode: INPUT_PULLUP
      inverted: True
#    on_press:
#      then:
#        - switch.turn_on: esp1_cycle_led_bleu 
#    on_release:
#      then:
#        - switch.turn_off: esp1_cycle_led_bleu
    

      
# Définition du bouton physique fuite rejet

  - platform: gpio
    name: "ESP1_debit_rejet_adoucisseur"
    pin:
      number: GPIO13
      mode: INPUT_PULLUP
      inverted: True
#    on_press:
#      then:
#        - switch.turn_on: esp1_fuite_led_rouge 
#    on_release:
#      then:
#        - switch.turn_off: esp1_fuite_led_rouge   


Merci de votre aide

Salut,

Le mieux, c’est de faire un copié collé ça évite de faire des erreurs sur les majuscules

3 « J'aime »

J’ai corrigé, mais sa veut toujours pas…

Partout ?
Parce que c’est pareil à plein d’autres endroits dans ta carte.
Dans tous les cas, l’erreur est indiquée (ou au moins la partie qui ne marche pas) dans l’encart rouge.

L’erreur est juste cette carte, et uniquement quand binary_sensor.esp1_débit_rejet_adoucisseur bascule sur ON et que le binary_sensor.esp1_cycle_adoucisseur est aussi sur ON . Sa bloque au IF et l’erreur s’affiche

Donc il faut partir de ce message (ça parle d’un ] qui manque)… Tester les blocs dans les outils de dev, réduire la carte etc pour isoler et corriger le souci.
Il n’y a que toi qui toutes les entités pour faire les essais

J’ai regardé les ] mais je n’ai pas vu de difference…mais bon j’ai plus mes yeux de 20 ans :face_with_peeking_eye:

Donc J’ai repris la carte original (celle du shelly), je l’ai remise dans celle de ESP, j’ai fait un copier collé des noms des binary_sensor et c’est reparti.

Je vais quand meme essayé de comparer les 2 cartes pour voir ce qui a merdé…certainement moi :scream:.

Merci Pulpy de ton aide

C’est pas evident du tout, surtout que parfois le message d’erreur n’est pas parfait. Si la syntaxe est vraiment trop fausse, le code est mal compris et donc l’erreur complétement ailleurs.
C’est pour ça qu’il faut y aller petit à petit.
Avec la reprise de la carte initiale et le remplacement (majuscules compris) c’est effectivement une bonne méthode. Reste à comprendre pourquoi avant ce n’était pas bon. Utilise un comparateur de texte, c’est plus efficace que les yeux de 20 ans :wink:

1 « J'aime »
- border: |
            [[[
             if (states['binary_sensor.esp1_cycle_adoucisseur].state == 'off')
               return '2px solid var(--google-red)'; if (states['timer.adoucisseur_minuteur_cycle'].state == 'idle')
               return '2px solid var(--google-red)'; return '2px solid var(--google-green)'   
            ]]]

J’ai trouvé ! eureka !! :sweat_smile: il manque un apostrophe (') après adoucisseur, certainement un collage foireux… :persevere:

Il me reste a résoudre, les problèmes sur ESP maintenant…

1 « J'aime »