Souci d'automatisation avec Time Condition

Mon problème

Bonjour,
j’essaye de mettre en place une régulation des radiateurs électriques via des zbmini-l raccordés au fil pilote. L’automatisation fonctionne bien sans Time Condition mais je souhaite stopper le chauffage la nuit
J’ai donc essayé cette condition dans mon automatisation

condition: not
conditions:
  - condition: time
    after: "01:00:00"
    before: "07:00:00"
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
      - sat
      - sun

L’allumage du radiateur est bien désactivé à 1h00 mais le lendemain, l’automatisation ne se déclenche pas à 7h00. Si je redémarre la vm ou si je fais redémarrer via les outils de développement, l’automatisation refonctionne normalement jusqu’au lendemain.
J’ai pas mal cherché sur les forums mais je ne trouve personne qui a ce type de souci particulier. Je ne vois rien non plus de particulier dans les logs core ou supervisor
J’ai certainement du rater quelque chose.
Merci pour votre aide

Ma configuration


[center]## System Information

version core-2022.11.4
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.74
arch x86_64
timezone Europe/Paris
config_dir /config
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 9.3
update_channel stable
supervisor_version supervisor-2022.11.2
agent_version 1.4.1
docker_version 20.10.18
disk_total 30.8 GB
disk_used 5.9 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Mosquitto broker (6.1.3), Zigbee2MQTT (1.28.2-1), Terminal & SSH (9.6.1), File editor (5.4.2)
Dashboards
dashboards 2
resources 0
views 1
mode storage
Recorder
oldest_recorder_run 17 novembre 2022 à 08:40
current_recorder_run 27 novembre 2022 à 09:52
estimated_db_size 91.24 MiB
database_engine sqlite
database_version 3.38.5
[/center] ___

Hello

Le plus simple serais de faire une seconde automatisation
Déclenche de 07h00 a 00h00 par exemple

Bonjour et merci pour le retour,
de ma compréhension, mon automatisation actuelle est déjà censée le faire.
C’est à dire si on ne se trouve pas entre 1H et 7H, alors l’automatisation se déclenche.
J’ai mal compris ?
Merci

Re,

post en entier ton automate , car avec seulement les jours on peux pas voir ce qui va pas

Voilà l’automatisation complète pour l’allumage

alias: Allumer radiateur bureau
description: ""
trigger:
  - type: temperature
    platform: device
    device_id: 03a25411299403f673458827a0dd8058
    entity_id: sensor.thermometre_bureau_temperature
    domain: sensor
    below: 19.5
condition:
  - condition: not
    conditions:
      - condition: time
        after: "01:00:00"
        before: "07:00:00"
        weekday:
          - mon
          - tue
          - wed
          - thu
          - fri
          - sat
          - sun
action:
  - type: turn_off
    device_id: f406910a4906cf7e4c52e07b768272f2
    entity_id: switch.pilote_radiateur_bureau
    domain: switch
mode: single

Je mets également celle qui arrête le radiateur au cas où. elle n’a pas de Time Condition pour l’instant

alias: Eteindre Radiateur bureau
description: ""
trigger:
  - type: temperature
    platform: device
    device_id: 03a25411299403f673458827a0dd8058
    entity_id: sensor.thermometre_bureau_temperature
    domain: sensor
    above: 19.5
condition: []
action:
  - type: turn_on
    device_id: f406910a4906cf7e4c52e07b768272f2
    entity_id: switch.pilote_radiateur_bureau
    domain: switch
mode: single

Pourquoi tu mets deux entité ?

oups c’est moi qui dit une bêtise au dessus

essai de modifié le mode .



C’est déjà ce mode qui est sélectionné :

image

Il faut que j’en essaye un autre ? J’avais lu la doc sur les modes et il me semble que les autres ne sont pas vraiment adaptés à ce que je veux faire.

Ou alors je comprend mal la doc et il faut que je mette en restart ?

Salut,
Tu peux essayer avec cet exemple à adapter avec tes devices.

alias: exemple
description: ""
trigger:
  - platform: numeric_state
    entity_id: sensor.temperature_couloir_temperature
    below: 19.5
condition: []
action:
  - if:
      - condition: time
        after: "01:00:00"
        before: "07:00:00"
        weekday:
          - sun
          - sat
          - fri
          - thu
          - wed
          - tue
          - mon
    then:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: switch.couloir
    else:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.couloir
mode: single

Avec cette seule automatisation, tu gères aussi bien la mise sur ON et la mise sur OFF

Hello,
je suis en train d’essayer mais, de souvenir, j’avais déjà fait un test avec numeric_state et ça n’avait pas été concluant. Dans le bloc de code, je comprend bien que si la température descend sous les 19,5, le trigger déclenche l’automatisation. Mais si la température est au-dessus, le trigger ne déclenchera pas l’automatisation qui, du coup, ne pourra pas éteindre le radiateur ?

Peut-être, mais où était mentionné le fait que tu souhaites couper le chauffage si la température est supérieure à 19,5 avec cette automatisation.
Difficile de deviner !
mais c’est tout de même faisable.

alias: exemple
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.temperature_couloir_temperature
condition: []
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.temperature_couloir_temperature
        above: 19.5
    then:
      - if:
          - condition: time
            after: "01:00:00"
            before: "07:00:00"
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
              - sat
              - sun
        then:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.couloir
        else:
          - service: switch.turn_on
            data: {}
            target:
              entity_id: switch.couloir
    else:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: switch.couloir
mode: single

Re,
c’est de ma faute. J’ai tellement le nez dedans que ça me paraissait évident :sweat_smile:
Donc l’idée, c’est en journée d’allumer le radiateur dès que la température descend en dessous de 19.5 et de l’arrêter dès que la température passe au dessus. Comme ce sont des radiateurs à inertie fluide, ça continue de chauffer un bon moment après la coupure.
Pour le fonctionnement, les zbmini commandent via le fil pilote de cette façon :
on = Mode hors gel activé
off = Mode confort
Du coup, j’ai adapté ton code comme suit :

alias: Piloter Radiateur Bureau
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.thermometre_bureau_temperature
condition: []
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.thermometre_bureau_temperature
        above: 19.5
    then:
      - service: switch.turn_on
        data: {}
        target:
          entity_id: switch.pilote_radiateur_bureau
    else:
      - if:
          - condition: time
            after: "01:00:00"
            before: "07:00:00"
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
              - sat
              - sun
        then:
          - service: switch.turn_on
            data: {}
            target:
              entity_id: switch.pilote_radiateur_bureau
        else:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.pilote_radiateur_bureau
mode: single

Je vais tester de mon côté. Tu peux juste me confirmer qu’il n’y a pas de coquille au niveau de la syntaxe ? Merci encore

Je peux seulement te confirmer que le code que j’ai posté fonctionne.
Pourquoi veux-tu une confirmation pour la syntaxe ?
Si c’est pas bon, HA te l’indiquera.

Je peux déjà te dire que ça fonctionne. Reste à voir si demain matin, ça se remettra en route tout seul.
Wait and see

Par contre, je vois que ton code est différent du mien !
Ton copier coller n’est pas bon.
Voilà ce que tu devrai avoir:

alias: Piloter Radiateur Bureau
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.thermometre_bureau_temperature
condition: []
action:
  - if:
      - condition: numeric_state
        entity_id: sensor.thermometre_bureau_temperature
        above: 19.5
    then:
      - if:
          - condition: time
            after: "01:00:00"
            before: "07:00:00"
            weekday:
              - mon
              - tue
              - wed
              - thu
              - fri
              - sat
              - sun
        then:
          - service: switch.turn_off
            data: {}
            target:
              entity_id: switch.pilote_radiateur_bureau
        else:
          - service: switch.turn_on
            data: {}
            target:
              entity_id: switch.pilote_radiateur_bureau
    else:
      - service: switch.turn_off
        data: {}
        target:
          entity_id: switch.pilote_radiateur_bureau
mode: single

Hello,
plutôt que de faire un bête copier-coller, j’ai fais l’effort de comprendre le code et il y a souci dans l’algo :
Ce que je comprend dans ton code, c’est que si temp > 19.5 alors on teste si on est entre 1H et 7H et si c’est bien le cas, on fait un turn-off sur le zbmini. Donc on met le radiateur en route la nuit.
C’est pour ça que j’ai repris ton code et que je l’ai adapté. En tout cas, la bonne nouvelle, c’est que ça fonctionne parfaitement. Je ne comprend pas pourquoi Time Condition ne se comporte pas de la même façon selon où il est utilisé dans l’automatisme mais l’important est d’avoir une solution fonctionnelle
Je vais pouvoir déployer la solution pour les reste des radiateurs
Encore un grand merci pour votre aide.
A bientôt

Hello,
Et donc au final, il ressemble à quoi ton code ?
C’est celui que tu as coché en solution ?

Re,
oui, c’est exactement celui que j’ai coché en solution
Merci pour ton aide. J’entrevois maintenant beaucoup mieux ce qu’il est possible de faire dans les automatisations

Je désolé mais il y a un truc qui m’échappe.
Que ce passe t-il quand il fait moins de 19.5 et qu’il est 03:00h ?
Je pense que ton chauffage reste sur ON car tu ne fais le test du time que si ta température est supérieure à 19.5°C

Si j’ai compris ton raisonnement il te faudrait :

alors que ton automatisme fais :

J’ai repris mon code et je comprend ça :

image

Je ne sais si c’est la cause de l’incompréhension mais quand on fait un switch.turn_on, cela passe le radiateur en mode hors-gel. J’ai utilisé ce schéma de cablage pour les zbmini-l :

image

A priori, la courbe de température semble confirmer que ça fonctionne

image