Automatisation avec mon imprimante 3D

Bonjour,

Mon problème

Petite demande d’aide sur une auto pour ma print, je souhaite que cette derniere m’envoi une notification quand l’impression est fini donc under 50W avec une question, je coupe ou je continu, j’ai réussi a mettre un truc en place, mais dans ma vérification, je fais si under 50W alors coupe au bout de 10 min, mais elle coupe meme si j’ignore le shutdown, je fais un truc mal ?

alias: Gestion_Imprimante3D
description: >-
  Gère l'impression 3D avec notification et options pour éteindre ou continuer
  l'impression. Éteint par défaut après 10 minutes si aucune réponse et si la
  consommation est toujours inférieure à 50 W.
triggers:
  - type: power
    device_id: 3240eeca7482c8f9a192efebc247edf3
    entity_id: sensor.sonoff_1001db22a7_power
    domain: sensor
    below: 50
    for:
      hours: 0
      minutes: 10
      seconds: 0
    id: Power-Under50w
    trigger: device
  - event_type: mobile_app_notification_action
    event_data:
      action: IGNORE
    id: Ignore
    trigger: event
  - event_type: mobile_app_notification_action
    event_data:
      action: POWEROFF
    id: PowerOff
    trigger: event
conditions:
  - condition: device
    type: is_on
    device_id: 3240eeca7482c8f9a192efebc247edf3
    entity_id: f8ef0cbb537d5036137b0206d505f02e
    domain: switch
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: Power-Under50w
        sequence:
          - data:
              title: Impression finie
              message: Voulez-vous continuer l'impression ?
              data:
                actions:
                  - action: IGNORE
                    title: Oui, j'imprime encore
                  - action: POWEROFF
                    title: Non, merci
            action: notify.mobile_app_oneplus
          - delay:
              hours: 0
              minutes: 10
              seconds: 0
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ not response_ignored }}"
                sequence:
                  - condition: numeric_state
                    entity_id: sensor.sonoff_1001db22a7_power
                    below: 50
                  - target:
                      entity_id: switch.sonoff_1001db22a7
                    action: switch.turn_off
                    data: {}
      - conditions:
          - condition: trigger
            id: PowerOff
        sequence:
          - target:
              entity_id: switch.sonoff_1001db22a7
            action: switch.turn_off
            data: {}
      - conditions:
          - condition: trigger
            id: Ignore
        sequence:
          - variables:
              response_ignored: true
mode: single
variables:
  response_ignored: false

Ma configuration


[center]

System Information

version core-2024.10.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.4
os_name Linux
os_version 6.6.54-haos
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 4993
Installed Version 2.0.1
Stage running
Available Repositories 1451
Downloaded Repositories 13
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 13.2
update_channel stable
supervisor_version supervisor-2024.10.3
agent_version 1.6.0
docker_version 27.2.0
disk_total 30.8 GB
disk_used 16.7 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Advanced SSH & Web Terminal (19.0.0), File editor (5.8.0), ESPHome (2024.10.2), Node-RED (18.1.1), Studio Code Server (5.17.2)
Dashboards
dashboards 5
resources 2
views 10
mode storage
Recorder
oldest_recorder_run 17 octobre 2024 à 11:47
current_recorder_run 27 octobre 2024 à 20:39
estimated_db_size 2303.37 MiB
database_engine sqlite
database_version 3.45.3
Sonoff
version 3.8.1 (ffa7e22)
cloud_online 2 / 4
local_online 2 / 2
Spotify
api_endpoint_reachable ok
[/center] ___

Salut,

ta logique ne va pas comme tu veux car les déclencheurs ne marchent qu’une fois.
Si j’ai bien compris ce que tu as essayé de faire c’est que dès que le déclencheur « under 50W » s’active, tu attends 10 min pour laisser le temps de faire un choix…
Mais ce choix n’arrivera jamais, car l’automatisation est déjà lancée… tu es en mode « single » ce qui veut dire qu’une seule instance d’une même automatisation ne peut tourner à un moment donné.

Pour faire ce que tu veux:
Soit, une solution plus simple c’est d’utiliser une 2eme automatisation qui s’occupera uniquement de recevoir tes choix d’actions et puis tu utilises un input_boolean qui sera mis à « true » si tu veux annuler… comme ça après 10min la première automatisation vérifiera l’état de l’input booléan et agira en conséquence.

Soit, si tu veux toujours ne faire qu’une seule automatisation, tu déplaces tes déclencheurs sur les événements. Quand tu as envoyé la notif, tu enlèves to délai, et tu remplaces par une action « Attendre un déclencheur » et là tu met un timeout de 10min et tu y ajoutes tes déclencheurs sur les événements.

Bonjour

Merci pour cette réponse rapide, alors je comprend mieux le principe de mon auto.
Mais oui effectivement, je souhaite que si je dis oui j’imprime encore, l’imprimante ne ce coupe pas.
Donc il va falloir je creuse l’histoire de 2 eme automatisation et de l’input_boolean.
Si vous avez des exemples je suis preneur :slight_smile:
D’avance merci

Salut,

en fait en y repensant ma 2e solution avec 1 seule automatisation est pas mal non plus :wink:
Et peut-être assez facile à mettre en place car au final, on est intéressé que par l’action « ignorer », car sinon on éteint au bout du timer.

J’ai essayer de mettre en place ce que vous m’avez dit mais je pense pas que ce soit juste:

conditions:
  - condition: device
    type: is_on
    device_id: 3240eeca7482c8f9a192efebc247edf3
    entity_id: f8ef0cbb537d5036137b0206d505f02e
    domain: switch
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: Power-Under50w
        sequence:
          - data:
              title: Impression finie
              message: Voulez-vous continuer l'impression ?
              data:
                actions:
                  - action: IGNORE
                    title: Oui, j'imprime encore
                  - action: POWEROFF
                    title: Non, merci
            action: notify.mobile_app_oneplus
          - delay:
              hours: 0
              minutes: 10
              seconds: 0
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ not response_ignored }}"
                sequence:
                  - condition: numeric_state
                    entity_id: sensor.sonoff_1001db22a7_power
                    below: 50
                  - target:
                      entity_id: switch.sonoff_1001db22a7
                    action: switch.turn_off
                    data: {}
      - conditions:
          - condition: trigger
            id: PowerOff
        sequence:
          - target:
              entity_id: switch.sonoff_1001db22a7
            action: switch.turn_off
            data: {}
      - conditions:
          - condition: trigger
            id: Ignore
        sequence:
          - variables:
              response_ignored: true
mode: single
variables:
  response_ignored: false

Après un peu de recherche et de mise à plat, j’ai changé le yaml:

alias: Gestion_Imprimante3D_Simplifiee
description: >-
  Gère l'impression 3D : notification pour vérifier si on souhaite continuer. 
  Éteint automatiquement après 10 minutes si aucune réponse et puissance < 50 W.
triggers:
  - entity_id: sensor.sonoff_1001db22a7_power
    below: 50
    for: "00:10:00"
    id: Power-Under50w
    trigger: numeric_state
  - event_type: mobile_app_notification_action
    event_data:
      action: IGNORE
    id: Ignore
    trigger: event
  - event_type: mobile_app_notification_action
    event_data:
      action: POWEROFF
    id: PowerOff
    trigger: event
actions:
  - choose:
      - conditions:
          - condition: trigger
            id: Power-Under50w
        sequence:
          - data:
              title: Impression finie
              message: Voulez-vous continuer l'impression ?
              data:
                actions:
                  - action: IGNORE
                    title: Oui, j'imprime encore
                  - action: POWEROFF
                    title: Non, merci
            action: notify.mobile_app_oneplus
          - wait_for_trigger:
              - event_type: mobile_app_notification_action
                event_data:
                  action: IGNORE
                trigger: event
              - event_type: mobile_app_notification_action
                event_data:
                  action: POWEROFF
                trigger: event
            timeout: "00:10:00"
          - choose:
              - conditions:
                  - condition: numeric_state
                    entity_id: sensor.sonoff_1001db22a7_power
                    below: 50
                sequence:
                  - target:
                      entity_id: switch.sonoff_1001db22a7
                    action: switch.turn_off
                    data: {}
      - conditions:
          - condition: trigger
            id: PowerOff
        sequence:
          - target:
              entity_id: switch.sonoff_1001db22a7
            action: switch.turn_off
            data: {}
mode: single

Regarde de tread :

Tu as un exemple de fonctionnement d’un ask via mobile avec deux reponses possibles et une gestion de la non réponse.

1 « J'aime »

Salut

Sinon c’est quoi ton imprimante ?
Si ca tourne sur carte Duet ( firmware reprap ) , ou sur Klipper ( y en a surement d’autre mais ce sont les seuls que je connais correctement ) , tu as une API pour les 2 projets qui te permettent de topper directement la fin d’une impression ( et plein d’autres choses )

J’ai mon Google Home qui me previent de la fin d’une impression, ou si il y a un soucis particulier. Je peux t’aider pour ça

Pour klipper tu as l’intégration Moonraker qui permet d’utiliser l’API.

1 « J'aime »

bonsoir, merci pour votre réponse, c’est une ender V3 KE, elle est gérer via ip sur mon réseau donc si possible de faire autrement ^^

Alors en partant du model mis en évidence, j’ai fait cela:

alias: Gestion_Imprimante3D
description: >-
  Gère l'impression 3D avec notification et options pour continuer ou éteindre
  l'impression. Éteint par défaut après 10 minutes si aucune réponse et si la
  consommation est toujours inférieure à 50 W.
triggers:
  - entity_id: sensor.sonoff_1001db22a7_power
    below: 50
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: numeric_state
  - event_type: mobile_app_notification_action
    event_data:
      action: continue_impression
    trigger: event
  - event_type: mobile_app_notification_action
    event_data:
      action: arreter_impression
    trigger: event
actions:
  - data:
      message: Voulez-vous continuer l'impression ?
      data:
        actions:
          - action: continue_impression
            title: Oui, continuer l'impression
          - action: arreter_impression
            title: Non, arrêter l'impression
    action: notify.mobile_app_oneplus
  - wait_for_trigger:
      - event_type: mobile_app_notification_action
        event_data:
          action: continue_impression
        trigger: event
      - event_type: mobile_app_notification_action
        event_data:
          action: arreter_impression
        trigger: event
    timeout: "00:10:00"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.action == 'continuer_impression' }}"
        sequence:
          - data:
              name: Imprimante 3D
              message: L'impression continue suite à la réponse utilisateur.
            action: logbook.log
      - conditions:
          - condition: template
            value_template: >-
              {{ wait.trigger.event.data.action == 'arreter_impression' or
              wait.trigger == None }}
        sequence:
          - target:
              entity_id: switch.sonoff_1001db22a7
            action: switch.turn_off
            data: {}
mode: single

Pourquoi tu mets en trigger les retours de mobile app ? Le reste devrait marcher.

Pour que en fonction de ma réponse, je laisse tourner l’imprimante ou non, si par exemple je souhaite continuer à imprimer, alors je répond l’impression continue, et si je répond pas ou si je dis non, elle coupe.
J’ai mis 10 min pour le refroidissement complet etc
Après je suis ouvert à toutes proposition, comme évoqué plusieurs fois, je migre de jeejee vers HA, donc j’ai pas encore l’optique HA et surtout je cherche encore mes marques ^^

Le dernier en date, le chauffage lol

Ca ne sert à rien. Les réponses sont gérées dans le bloc suivant. C’est à ça que sert la fin de l’automatisation, a faire des actions en fonction de la réponse.

1 « J'aime »

donc si j’ai bien compris:

alias: Gestion_Imprimante3D
description: >-
  Gère l'impression 3D avec notification et options pour continuer ou éteindre
  l'impression. Éteint par défaut après 10 minutes si aucune réponse et si la
  consommation est toujours inférieure à 50 W.
triggers:
  - entity_id: sensor.sonoff_1001db22a7_power
    below: 50
    for:
      hours: 0
      minutes: 10
      seconds: 0
    trigger: numeric_state
actions:
  - data:
      message: Voulez-vous continuer l'impression ?
      data:
        actions:
          - action: continue_impression
            title: Oui, continuer l'impression
          - action: arreter_impression
            title: Non, arrêter l'impression
    action: notify.mobile_app_oneplus
  - wait_for_trigger:
      - event_type: mobile_app_notification_action
        event_data:
          action: continue_impression
        trigger: event
      - event_type: mobile_app_notification_action
        event_data:
          action: arreter_impression
        trigger: event
    timeout: "00:10:00"
  - choose:
      - conditions:
          - condition: template
            value_template: "{{ wait.trigger.event.data.action == 'continuer_impression' }}"
        sequence:
          - data:
              name: Imprimante 3D
              message: L'impression continue suite à la réponse utilisateur.
            action: logbook.log
      - conditions:
          - condition: template
            value_template: >-
              {{ wait.trigger.event.data.action == 'arreter_impression' or
              wait.trigger == None }}
        sequence:
          - target:
              entity_id: switch.sonoff_1001db22a7
            action: switch.turn_off
            data: {}
mode: single

Je dirais que ça devrait pas être trop mal.

Dans ce que je viens de lire ta Ender tourne sous Klipper. C’est une bonne nouvelle car c’est un super fw / os .

Tu peux donc controller et récupérer les données de ton imprimante avec l’API rest

Api rest ? C’est a travers une intégration ? Ou autres ?

Tu a l’intégration Moonraker qui te permet de contrôler et voir des infos de ton imprimante sous kliper avec ha.

1 « J'aime »

Bah voilà, c’est même deja géré, elle est pas belle la vie sous HA? :wink: