L'etat d'un sensor doit etre renvoyé vers plusieurs sensors

→ RAF (Rien à Faire) car entité de HA donc on peut l’utiliser dans les actions

Plusieurs façon de faire en parallèle :

  1. Détecter qu’une impression vient d’être lancée

Sur détection d’une impression (tu n’en as pas parlé, mais tu dois avoir une entité qui est représentative de l’état de l’imprimante (Impression en cours par exemple), sinon, il te faudra la créer en suivant le même principe), je passerais à Vrai un booléen (input_boolean.nouvelle_impression par exemple)

  1. Sur Telegram:

Sur détection du passage à Vrai de input_boolean.nouvelle_impression je lancerais une notification Telegram demandant la couleur de la bobine pour ensuite mettre à jour la valeur de l’input_number. et mettre à Faux input_boolean.nouvelle_impression

  1. Cartes Lovelace

Pour Lovelace, tout va dépendre du niveau d’esthétique que tu souhaites, mais le point d’entré pour moi est de tout mettre dans une carte conditionnelle s’affchant lorsque input_boolean.nouvelle_impression est à Vrai.

Ensuite, je pense que le mieux est de partager la représentation Lovelace que tu souhaites pour renseigner la couleur mais ça peux ressembler à ça avec :

  • 1 booléen nombre représentant le nouveau niveau (niveau actuel - longueur) (utile pour l’animation mais dispensable)
  • 1 booléen nombre représentant le niveau de la bobine (blanche dans l’exemple)
  • 1 script pour animer le changement de niveau
  • 1 carte conditionnelle comportant :
    ** 1 carte Markdown pour le titre
    ** 1 carte bar-card stylisée
  • 1 carte conditionnelle comportant :
    ** 1 carte bar-card stylisée (la même que précédemment mais sans les actions)

Ce qui donne (input_boolean.nouvelle_impression équivaut à input_boolean.hacf dans la suite) :

animate

script
alias: Mise à jour Bobine Blanche
sequence:
  - service: input_number.set_value
    data:
      value: >
        {{ states('input_number.filament_blanc_restant')|float - states('input_number.longueur_filament')|float  }}
    target:
      entity_id: input_number.filament_blanc
  - choose:
      - conditions:
          - condition: numeric_state
            entity_id: input_number.filament_blanc_restant
            above: input_number.filament_blanc
        sequence:
          - repeat:
              while:
                - condition: numeric_state
                  entity_id: input_number.filament_blanc_restant
                  above: input_number.filament_blanc
              sequence:
                - service: input_number.decrement
                  target:
                    entity_id: input_number.filament_blanc_restant
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 50
          - service: input_boolean.turn_off
            target:
              entity_id: input_boolean.hacf
      - conditions:
          - condition: numeric_state
            entity_id: input_number.filament_blanc_restant
            below: input_number.filament_blanc
        sequence:
          - repeat:
              while:
                - condition: numeric_state
                  entity_id: input_number.filament_blanc_restant
                  below: input_number.filament_blanc
              sequence:
                - service: input_number.increment
                  target:
                    entity_id: input_number.filament_blanc_restant
                - delay:
                    hours: 0
                    minutes: 0
                    seconds: 0
                    milliseconds: 50
          - service: input_boolean.turn_off
            target:
              entity_id: input_boolean.hacf
mode: single
Carte
type: 'custom:stack-in-card'
cards:
  - type: conditional
    conditions:
      - entity: input_boolean.hacf
        state: 'on'
    card:
      type: 'custom:stack-in-card'
      cards:
        - type: markdown
          content: >-
            <font color="#25a2db">


            ## Impression détectée !

            Une impression est en cours sur l'imprimante 3D. <br> De quelle
            bobine <font color="#800080"><ha-icon
            icon="cha:filament"></ha-icon></font> s'agit t'il ?

            </font>
        - direction: up
          entities:
            - color: MediumTurquoise
              entity: sensor.canon_mg5700_series_cyan
              name: ' '
              icon: 'cha:filament'
            - color: MediumOrchid
              entity: sensor.canon_mg5700_series_magenta
              name: ' '
              icon: 'cha:filament-90'
            - color: Gold
              entity: sensor.canon_mg5700_series_yellow
              name: ' '
              icon: 'mdi:printer-3d-nozzle'
            - color: Black
              entity: sensor.canon_mg5700_series_black_bk
              name: ' '
              icon: 'mdi:printer-3d-nozzle'
            - color: '#f5f5f5'
              entity: input_number.filament_blanc_restant
              icon: 'mdi:printer-3d-nozzle'
              name: ' '
              tap_action:
                action: call-service
                service: script.mise_a_jour_bobine
          height: 200px
          max: 100
          min: 0
          padding: 2px
          positions:
            icon: inside
            title: outside
            indicator: 'off'
          stack: horizontal
          style: >-
            bar-card-title {
              text-shadow: none;
            }

            ha-icon {
              color: white;
            } 

            bar-card-card:nth-child(1) ha-icon,bar-card-card:nth-child(2)
            ha-icon {
              color: var(--primary-color);
            } 

            bar-card-value {
              text-shadow: none;
              color: white;
            } 

            bar-card-currentbar {
              border-radius: 10px;
            } 

            bar-card-backgroundbar {
              border-radius: 10px;
            } 

            bar-card-card:nth-child(5) bar-card-value{
              text-shadow: none;
              color: black;
            } 
          type: 'custom:bar-card'
          unit_of_measurement: m
  - type: conditional
    conditions:
      - entity: input_boolean.hacf
        state: 'off'
    card:
      direction: up
      entities:
        - color: MediumTurquoise
          entity: sensor.canon_mg5700_series_cyan
          name: ' '
          icon: 'cha:filament'
        - color: MediumOrchid
          entity: sensor.canon_mg5700_series_magenta
          name: ' '
          icon: 'cha:filament-90'
        - color: Gold
          entity: sensor.canon_mg5700_series_yellow
          name: ' '
          icon: 'mdi:printer-3d-nozzle'
        - color: Black
          entity: sensor.canon_mg5700_series_black_bk
          name: ' '
          icon: 'mdi:printer-3d-nozzle'
        - color: '#f5f5f5'
          entity: input_number.filament_blanc_restant
          icon: 'mdi:printer-3d-nozzle'
          name: ' '
      height: 200px
      max: 100
      min: 0
      padding: 2px
      positions:
        icon: inside
        title: outside
        indicator: 'off'
      stack: horizontal
      style: |-
        bar-card-title {
          text-shadow: none;
        }
        ha-icon {
          color: white;
        } 
        bar-card-card:nth-child(1) ha-icon,bar-card-card:nth-child(2) ha-icon {
          color: var(--primary-color);
        } 
        bar-card-value {
          text-shadow: none;
          color: white;
        } 
        bar-card-currentbar {
          border-radius: 10px;
        } 
        bar-card-backgroundbar {
          border-radius: 10px;
        } 
        bar-card-card:nth-child(5) bar-card-value{
          text-shadow: none;
          color: black;
        } 
      type: 'custom:bar-card'
      unit_of_measurement: m

Pour l’instant, il faut un script par bobine.

il reste pas mal de chose à gérer, surtout l’alerte sur niveau négatif !), et ton bouton de reset

1 « J'aime »