Timer avec retour à l'état initial

Bonjour,

J’ai crée dans l’ordre :

  • un input_select (input_select.chauffage4)
  • un input_number (input_number.chauffage_timer_maison_minutes)
  • un input_boolean (input_boolean.switch_timer_chauffage_maison)

image

L’idée est la suivante, au basculement de l’input_boolean :

  • On sauvegarde l’état d’un input_select (input_select.chauffage) puis on remplace son état par celui affiché (input_select.chauffage4) le temps de l’input_number (input_number.chauffage_timer_maison_minutes)
  • A la fin du timer, l’input_select (input_select.chauffage) retrouve son état d’origine (d’ou la copie au début) et le switch bascule sur off.

Je cherche à écrire l’automatisation correspondante.

Je lis ce message et me rends compte que je t’ai dis de faire la même ici :

:wink:

Pour la mémorisation on t’a déjà répondu ici :

Pour en revenir à ta demande :

Loupé ! :wink: Il te faut 2 automatisations

Automatisation 1
Si booléen = vrai ALORS
  Mémorisation de mode_de_chauffage
  Affectation mode_de_chauffage = mode_chauffage_forcé
  Lancement du timer le temps définit par le nombre
FIN SI

Automatisation 2
Si fin_timer détecté ALORS
   Affectation mode_de_chauffage = mode_chauffage_mémo
FIN SI

Merci de ton aide @Clemalex mais ma difficulté ne réside pas dans la logique à avoir pour arriver à ce que je veux faire mais dans sa mis en oeuvre.
Écris autrement, sous Domoticz, j’ai programmé plusieurs années en lua. La logique (de programmation), je pense que je l’ai (même si elle peut légèrement différer sous HA) par contre le yaml est tout nouveau pour moi et bon nombre de fonctions et leurs syntaxes me sont étrangères.
Je progresse petit à petit mais encore bien loin de ce que je pouvais faire en lua.

Pourquoi parler du YAML alors que maintenant tout se fait depuis l’interface ? :sweat_smile:

Suivre le lien pour voir le gif : Action aprés la fin d'un timer - #4 par Clemalex

Pour des choses simples, j’utilise l’interface. Quand c’est plus compliqué, j’utilise un mixte des deux.
Finalement, j’ai fais ça (j’ai un peu melangé les switchs et les booleans… mais bon !!)

image

alias: Chauffage ON Temporaire Salon
description: ''
trigger:
  - platform: state
    entity_id: input_boolean.switch_timer_on_chauffage_salon
    from: 'off'
    to: 'on'
condition: []
action:
  - service: input_text.set_value
    target:
      entity_id: input_text.text1
    data:
      value: '{{ states(''input_select.chauffage'') }}'
  - service: input_select.select_option
    target:
      entity_id: input_select.chauffage
    data:
      option: '{{ states(''input_select.chauffage5'') }}'
  - service: switch.turn_on
    target:
      entity_id: switch.etat_timer_salon
  - service: timer.start
    data_template:
      entity_id: timer.temps_chauffage_temporaire_salon
      duration: '{{ states(''input_number.chauffage_timer_salon_minutes'') | int }}'
mode: single
alias: Chauffage OFF Temporaire Salon
description: ''
trigger:
  - event_data:
      entity_id: timer.temps_chauffage_temporaire_salon
    event_type: timer.finished
    platform: event
  - platform: state
    entity_id: input_boolean.switch_timer_off_chauffage_salon
    from: 'off'
    to: 'on'
condition: []
action:
  - service: input_select.select_option
    target:
      entity_id: input_select.chauffage
    data:
      option: '{{ states(''input_text.text1'') }}'
  - service: switch.turn_off
    target:
      entity_id: switch.etat_timer_salon
mode: single
chauffage_timer_salon_minutes:
    name: "Timer Chauffage Salon"
    min: 0
    max: 10
    step: 1
    unit_of_measurement: "hrs"
    icon: mdi:timer-sand
switch_timer_on_chauffage_salon:
  name: "Départ Timer Chauffage Salon"
  initial: off
  icon: mdi:timelapse
  
switch_timer_off_chauffage_salon:
  name: "Arrêt Timer Chauffage Salon"
  initial: off
  icon: mdi:timelapse

Mes automatisations souffrent de quelques problèmes :

  • Le Timer est en secondes, alors que je souhaite des heures
  • Je souhaiterai afficher le temps restant et/ou l’heure de fin du timer.

Un petit coup de main serait le bienvenu.

Merci.

C’est interprété en secondes…
Donc il faut multiplier.

As tu ajouté l’entité du timer dans une carte ? Car c’est natif ta demande… :sweat_smile:

Oui, je l’ai ajouté manuellement mais je ne vois pas. :thinking:

Comme ça je suppose :

duration: '{{ states(''input_number.chauffage_timer_salon_minutes'') | int * 3600 }}'

Comment supprimer la décimale ?

image

Merci.

animate

type: vertical-stack
title: Minuteur
cards:
  - type: horizontal-stack
    cards:
      - type: button
        name: Départ
        icon: mdi:play
        icon_height: 3em
        state_color: false
        show_name: false
        tap_action:
          action: call-service
          service: timer.start
          service_data:
            duration: '0'
          target:
            entity_id: timer.hacf
        entity: timer.hacf
      - type: button
        name: Pause
        icon: mdi:pause
        icon_height: 3em
        state_color: false
        show_name: false
        tap_action:
          action: call-service
          service: timer.pause
          target:
            entity_id: timer.hacf
        entity: timer.hacf
  - type: horizontal-stack
    cards:
      - type: entities
        entities:
          - entity: timer.hacf

Effectivement, tout simplement.
Et pour supprimer la décimale (voir mon post au dessus) ?

Merci.

C’est plus compliqué…
Va faire un tour sur le sujet de card-mod et les liens du 1er post…

Ah oui ! … ya de quoi lire. Faute de temps, pour l’instant, ça va rester comme ça.

Est-ce possible d’afficher simplement l’heure de fin du timer une fois celui-ci lancé ?

Oui :

Heure de lever et coucher du soleil - #5 par Clemalex

type: entities
entities:
  - entity: timer.hacf
  - entity: timer.hacf
    type: attribute
    attribute: finishes_at
  - entity: timer.hacf
    type: attribute
    attribute: finishes_at
    format: relative
  - entity: timer.hacf
    type: attribute
    attribute: finishes_at
    format: time

Simple et rapide. Merci. :+1:

1 « J'aime »