→ RAF (Rien à Faire) car entité de HA donc on peut l’utiliser dans les actions
Plusieurs façon de faire en parallèle :
- 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)
- 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
- 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éennombre représentant le nouveau niveau (niveau actuel - longueur) (utile pour l’animation mais dispensable) - 1
booléennombre 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) :
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