Variable globale static pour être utilisé dans des automations?

Bonjour tout le monde,

j’essaye de mettre en place un mode nuit / mode jour . et des comportements différents en fonction du mode. (diode dans l’escalier, volets qui s’ouvrent / ferment …)

Par contre, je ne sais pas :

  • comment créer cette variable
  • rendre cette variable disponible dans les diverses automations.

malgré mes recherches, je n’ai pas trouvé de réponses (ou alors mal compris)

Merci pour votre aide :slight_smile:
Olivier

Salut
tu as la possibilité de mettre en place des helpers

il y a cette video aussi

1 « J'aime »

Plus globalement n’est-ce pas tout simplement une entité qu’il faut exploiter (comme substitution aux variables). C’est dispo partout
Par ex :L’intégration sun, un sensor template sur l’élévation du soleil et zou …
Le fait de passer par les helpers n’est qu’un moyen (limité mais pratique dans certain cas)

1 « J'aime »

Merci !!

j’ai lu le blog. l’article est très bien fait.
ça correspond à ma demande.

je vais tester ça, quand je serais chez moi :blush:

oui, après, le mode doit varier en fonction de conditions.

par exemple, si le jour est levé avant 7h30. on met le mode jour à 7h30 pour éviter de se faire réveiller par les volets le weekend :blush:

si j’ai bien compris ce que tu proposais

Dans ce cas, une entité (a base de template) c’est plus adapté qu’une entrée (fait pour être modifié à la main) + automatisation pour le changement/verif

sensor:
  - platform: template
    sensors:
      sunelevation:
        friendly_name: "elevation soleil"
        value_template: "{{ state_attr('sun.sun', 'elevation') }}"
      #on indique que la valeur de cette entité sera égale à la valeur de l'attribut elevation de l'entité sun.sun
      sunazimuth:
        friendly_name: "azimut soleil"
        value_template: "{{ state_attr('sun.sun', 'azimuth') }}"
      debutdejournee:
        friendly_name: "heure de début du mode jour"
        value_template:  >
        {% set sunrise = as_local(as_datetime(state_attr("sun.sun", "next_rising",default))).strftime('%H:%M') %} 
        {% if (today_at(sunrise).hour < 7 or (today_at(sunrise).hour == 7 and today_at(sunrise).minute <= 30)    )   %} 
          {{ today_at(sunrise) }} 
        {% else %} 
          {{ today_at('07:30') }} 
        {% endif %}

j’ai essayé de faire ça (ajout du sensor : heure de début). mais je m’en sors pas.
Il me dit que mon yaml n’est pas bon.

Mes tests fonctionnent dans les outils de développement.
il y a quelque-chose qui m’échappe. (c’est dans configuration.yaml)

Dommage de ne pas précisier l’erreur justement, ça aide.

En tout cas le dernier bloc value_template n’est pas correctement indenté ça c’est mieux

sensor:
  - platform: template
    sensors:
      sunelevation:
        friendly_name: elevation soleil
        value_template: "{{ state_attr('sun.sun', 'elevation') }}"
      sunazimuth:
        friendly_name: azimut soleil
        value_template: "{{ state_attr('sun.sun', 'azimuth') }}"
      debutdejournee:
        friendly_name: heure de début du mode jour
        value_template: >
          {% set sunrise = as_local(as_datetime(state_attr("sun.sun",
          "next_rising",default))).strftime('%H:%M') %}  {% if
          (today_at(sunrise).hour < 7 or (today_at(sunrise).hour == 7 and
          today_at(sunrise).minute <= 30)    )   %} 
            {{ today_at(sunrise) }} 
          {% else %} 
            {{ today_at('07:30') }} 
          {% endif %}

Tu as raison. Désolé

Voici l’erreur :

missed comma between flow collection entries (45:10)

 42 |       debutdejournee:
 43 |         friendly_name: "heure de début d ...
 44 |         value_template:  >
 45 |         {% set sunrise = as_local(as_dat ...
---------------^
 46 |         {% if (today_at(sunrise).hour <  ...
 47 |           {{ today_at(sunrise) }} 

ça parle d’une virgule.

Sous Studio code, j’ai ça :

J’ai pas d’idée
Sinon dans le concept, c’est ce que tu m’as conseillé ? ou je suis à coté de la plaque ?

ça donne surtout l’info de la ligne (+/-1 parfois)… Donc c’est bien un souci d’indentation que j’évoque plus haut

Oui c’est l’idée. j’ai pas regardé par contre la pertinence des heures dans tes tests

nickel, je te remercie.:+1:

je vais continuer à tester tout ça .

c’est vrai que j’ai du mal avec l indentation, j’ai tendance à faire des tabulations .

Hello,

tu sauras surement me répondre.

J’ai bien réussi à créer mon sensor template pour calculer l’heure que j’ai besoin.

   debutdejournee:
        friendly_name: "heure de début du mode jour"
        unique_id : heuredebutmodejour
        value_template: >
          {% set sunrise = as_local(as_datetime(state_attr("sun.sun","next_rising"))).strftime('%H:%M') %}  
          {% if (today_at(sunrise).hour < 7 or (today_at(sunrise).hour == 7 and today_at(sunrise).minute <= 30)    )   %} 
            {{ today_at(sunrise) }} 
          {% else %} 
            {{ today_at('07:30') }} 
          {% endif %}

Par contre, j’ai essayé plusieurs choses mais je n’arrive pas à l’utiliser en trigger.

j’ai essayé ça :

alias: test debut jour
description: ""
trigger:
  - platform: template
    value_template: now() - sensor.debutdejournee = 0
condition: []
action:
  - service: notify.notify
    data:
      title: Notification
      message: Debut journée
mode: single

ou ça :

alias: test debut jour
description: ""
trigger:
  - platform: template
    value_template: sensor.debutdejournee 
condition: []
action:
  - service: notify.notify
    data:
      title: Notification
      message: Debut journée
mode: single


mais ça se déclenche jamais

Salut.
Technique il manque la condition sur le trigger.
A mettre dans le bloc condition sinon ça ne fonctionne pas

Hello,

je m’en sors pas.
j’ai du mal te comprendre

alias: test debut jour
description: ""
trigger:
  - platform: template
    value_template: now() - sensor.debutdejournee = 0
condition: {{ now() - sensor.debutdejournee = 0}}
action:
  - service: notify.notify
    data:
      title: Notification
      message: Debut journée
mode: single

je 'arrive pas à le valider
Message malformed: Unexpected value for condition: 'None'. Expected and, device, not, numeric_state, or, state, sun, template, time, trigger, zone @ data['condition'][0]

J’ai essayé avec Time :

alias: test debut jour
description: ""
trigger:
  - platform: time
    at: {{ as_datetime(states.sensor.debutdejournee.state).strftime('%Y-%m-%d') }}
condition: []
action:
  - service: notify.notify
    data:
      title: Notification
      message: Debut journée
mode: single

j’ai cette erreur :

Message malformed: Expected HH:MM, HH:MM:SS or Entity ID with domain 'input_datetime' or 'sensor' @ data['at'][0]

alors qu’en développement, j’ai ça

qu’est ce que je loupe ?

Dans tes 2 exemples tu mélanges 2 notions :
La valeur (trigger) et la condition (test si machin truc)
Dans le premier cas tu as déjà un test dans le trigger (c’est pas bon) et en la condition est mal écrite syntaxiquement (ça ne peux pas contenir de calcul)
Dans le deuxième cas, le trigger a le même souci que le premier trigger et la condition est vide (alors qu’il faut quelque chose)
J’ai qu’un accès mobile sous la main donc pas facile d’écrire mais compare tes essais avec des automatisations qui fonctionnent, tu verras c’est flagrant

Oui, le premier, j’ai l’impression de m’y perdre.

le deuxième

pourtant quand j’utilise l’interface (l’automatisation fonctionne, je reçois bien une notification à 19h42) :

et que je regarde le YAML :
image

Il a rien mit dans condition .

Je me suis basé sur ça.

Pour moi, le trigger, c’est ce qui déclenche l’automation :

  • une heure particulière, un changement d’état …

La condition,c’est juste un filtre qu’on rajoute pour réaliser la suite :

  • si jour impair, si lumière éteinte …

c’est pas ça, le principe ?

Si si, c’est ça le principe.
Là entre les deux essais tu as corrigé le template et tu envoies bien une heure à la place d’une date.