Automatisation - Mise du couvert

Bonjour,
Je partage mon automatisation pour l’annonce de qui doit mettre le couvert à la maison
Attention ce n’est pas de l’esclavage, mais avec ça pas de discution :slight_smile:

J’avoue avoir un peu transcrit mon scénario Jeedom, en HA
Et je me suis aidé des premières automatisations faites avec @Pulpy-Luke merci à lui
A voir si il y a plus efficace :slight_smile:

alias: ENFANT-COUVERT
description: >-
  Annonce vocale qui dit qui doit mettre le couvert Vacances, week-end ou
  mercredi : Lisa à midi, Adam le soir. Hors vacances (jours normaux) : Lisa le
  lundi et jeudi, Adam le mardi et vendredi (uniquement le soir).
triggers:
  - at:
      - "12:00:00"
      - "19:00:00"
    trigger: time
actions:
  - variables:
      is_vacances: "{{ is_state('sensor.vacances_scolaires_aujourd_hui_zone_a', 'on') }}"
      is_weekend: "{{ now().weekday() in [5,6] }}"
      is_mercredi: "{{ now().weekday() == 2 }}"
      heure: "{{ now().strftime('%H:%M') }}"
      jour: "{{ now().weekday() }}"
  - choose:
      - conditions:
          - condition: template
            value_template: |
              {{ is_vacances or is_weekend or is_mercredi }}
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ heure <= '14:00' }}"
                sequence:
                  - alias: Midi-lisa
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonjour, ce midi Lisa doit mettre le couvert
              - conditions:
                  - condition: template
                    value_template: "{{ heure >= '14:00' }}"
                sequence:
                  - alias: Soir-Adam
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonsoir, ce soir Adam doit mettre le couvert
      - conditions:
          - condition: template
            value_template: |
              {{ not is_vacances and not is_weekend and not is_mercredi }}
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ jour == 0 }}"
                sequence:
                  - alias: Soir-Lisa
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonsoir , Ce soir LISA doit mettre le couvert
              - conditions:
                  - condition: template
                    value_template: "{{ jour == 1 }}"
                sequence:
                  - alias: Soir-Adam
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonsoir , Ce soir Adam doit mettre le couvert
              - conditions:
                  - condition: template
                    value_template: "{{ jour == 3 }}"
                sequence:
                  - alias: Soir-Lisa
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonsoir , Ce soir LISA doit mettre le couvert
              - conditions:
                  - condition: template
                    value_template: "{{ jour == 4 }}"
                sequence:
                  - alias: Soir-Adam
                    action: tts.speak
                    target:
                      entity_id: tts.google_translate_fr_fr
                    data:
                      cache: true
                      media_player_entity_id: media_player.googlehome5583
                      message: Bonsoir , Ce soir Adam doit mettre le couvert
mode: single

1 « J'aime »

Salut,

Tu peux poursuivre la logique.

  • Une variable qui détermine si midi ou soir
  • Une variable qui determine qui
  • Et un seul message qui réexploite les variables pour ne faire qu’une annonce parfaitement adaptée
    => Tu gagnes 6 blocs d’appels TTS

Les grands ont quitté le nid.

Y’a plus que la petite de 13 ans. Beaucoup plus simple a gérer.

”va mettre la table !” Fin de l’auto. :rofl:

8 « J'aime »

Une idée

Résumé
alias: ENFANT-COUVERT
description: >-
  Annonce vocale qui dit qui doit mettre le couvert. Vacances, week-end ou
  mercredi : Lisa à midi, Adam le soir. Hors vacances (jours normaux) : Lisa le
  lundi et jeudi, Adam le mardi et vendredi (uniquement le soir).
triggers:
  - at:
      - "12:00:00"
    trigger: time
    id: midi
  - at:
      - "19:00:00"
    trigger: time
    id: soir
actions:
  - variables:
      is_vacances: "{{ is_state('sensor.vacances_scolaires_aujourd_hui_zone_a', 'on') }}"
      is_weekend: "{{ now().weekday() in [5, 6] }}"
      is_mercredi: "{{ now().weekday() == 2 }}"
      jour: "{{ now().weekday() }}"
      periode: "{{ trigger.id }}"
      enfant: >
        {% set est_vacances_ou_mercredi_ou_weekend = is_vacances or is_weekend
        or is_mercredi %}

        {% if est_vacances_ou_mercredi_ou_weekend %}
          {# Cas 1 : Vacances, Week-end ou Mercredi : Lisa (midi), Adam (soir) #}
          {% if trigger.id == 'midi' %}
            Lisa
          {% elif trigger.id == 'soir' %}
            Adam
          {% else %}
            aucun
          {% endif %}
        {% else %}
          {# Cas 2 : Jours normaux (Lundi, Mardi, Jeudi, Vendredi) #}
          {% if trigger.id == 'midi' %}
            aucun # Pas d'annonce à midi les jours d'école normaux
          {% elif trigger.id == 'soir' %}
            {# Lundi (0) et Jeudi (3): Lisa | Mardi (1) et Vendredi (4): Adam #}
            {% if jour in [0, 3] %}
              Lisa
            {% elif jour in [1, 4] %}
              Adam
            {% else %}
              aucun
            {% endif %}
          {% else %}
            aucun
          {% endif %}
        {% endif %}
      salutation: |
        {% if trigger.id == 'midi' %}
          Bonjour
        {% else %}
          Bonsoir
        {% endif %}
  - if:
      - condition: template
        value_template: "{{ enfant != 'aucun' }}"
    then:
      - alias: Annonce vocale unique (Lisa ou Adam)
        data:
          cache: true
          media_player_entity_id: media_player.googlehome5583
          message: >-
            {{ salutation }}, ce {{ periode }} {{ enfant }} doit mettre le
            couvert.
        target:
          entity_id: tts.google_translate_fr_fr
        action: tts.speak
mode: single

Tu va finir par aimer le jinja

Sinon, avec moins de jinja

Résumé
alias: ENFANT-COUVERT_BLOCS_CHOICE
description: >-
  Annonce vocale qui dit qui doit mettre le couvert. Logique traduite en blocs
  'choose' pour la lisibilité dans l'interface graphique.
triggers:
  - at:
      - "12:00:00"
    trigger: time
    id: midi
  - at:
      - "19:00:00"
    trigger: time
    id: soir
actions:
  - alias: Définir Variables de Contexte
    variables:
      is_vacances: "{{ is_state('sensor.vacances_scolaires_aujourd_hui_zone_a', 'on') }}"
      is_weekend: "{{ now().weekday() in [5, 6] }}"
      is_mercredi: "{{ now().weekday() == 2 }}"
      jour: "{{ now().weekday() }}"
      periode: "{{ trigger.id }}"
      enfant: aucun
      salutation: |
        {% if trigger.id == 'midi' %}
          Bonjour
        {% else %}
          Bonsoir
        {% endif %}
  - alias: Déterminer l'Enfant Responsable
    choose:
      - alias: Cas 1 pour Vacances WE Mercredi
        conditions:
          - condition: template
            value_template: "{{ is_vacances or is_weekend or is_mercredi }}"
        sequence:
          - choose:
              - conditions:
                  - condition: trigger
                    id: midi
                sequence:
                  - alias: Lisa à Midi
                    variables:
                      enfant: Lisa
              - conditions:
                  - condition: trigger
                    id: soir
                sequence:
                  - alias: Adam le Soir
                    variables:
                      enfant: Adam
      - alias: Cas 2 pour Jours Normaux (Uniquement le Soir)
        conditions:
          - condition: template
            value_template: "{{ not (is_vacances or is_weekend or is_mercredi) }}"
          - condition: trigger
            id: soir
        sequence:
          - choose:
              - conditions:
                  - condition: template
                    value_template: "{{ jour in [0, 3] }}"
                sequence:
                  - alias: Lisa le Soir (Lun/Jeu)
                    variables:
                      enfant: Lisa
              - conditions:
                  - condition: template
                    value_template: "{{ jour in [1, 4] }}"
                sequence:
                  - alias: Adam le Soir (Mar/Ven)
                    variables:
                      enfant: Adam
  - if:
      - condition: template
        value_template: "{{ enfant != 'aucun' }}"
    then:
      - alias: Annonce vocale unique (Lisa ou Adam)
        data:
          cache: true
          media_player_entity_id: media_player.googlehome5583
          message: >-
            {{ salutation }}, ce {{ periode }} {{ enfant }} doit mettre le
            couvert.
        target:
          entity_id: tts.google_translate_fr_fr
        action: tts.speak
mode: single

1 « J'aime »

Bonjour,
je viendrai le soir où Lisa mets le couvert, j’aurai aimé avoir le menu (de qui ?) mais c’est la prochaine étape :wink:
Bob

Oula la… mais c’est dingo.
J’essaie de tout piger

Et du coup ça peut être prononcé sur une mini nest pas exemple ?

J’ai fait ce genre de chose depuis Google home avec un déclencheur 30 minutes après le coucher du soleil mais j’aimerais bien reproduire sur HA.

Oui tout est possible.
Moi se sont mes 2 Google home qui diffusent le message

1 « J'aime »

Juste en cast ou tu as réussi à intégrer les enceintes directement dans HA ?

Merci

Comment ça ?
Bien sur c’est natifs, tes google Home sont reconnues direct dans HA
Pour ma part il a installé Google Cast tout seul et détecté mes 2 Google Home

1 « J'aime »

Ce sujet a été automatiquement fermé après 60 jours. Aucune réponse n’est permise dorénavant.