Forum Francophone Home Assistant

Créer une variable pour en faire une consigne. Help!

Bonjour,

Je débute totalement avec les solutions domotiques.

Suite à l’acquisition d’une nouvelle maison, j’avais commencé à améliorer l’installation électrique avec des équipements Enocean. Pas de fil, pas de pile. Çà s’appaire tout seul ou presque. C’est tentant !
Tout marche bien depuis deux ans, et je comptais passer à l’étape suivante : Piloter mon chauffage central via une box et pouvoir interagir depuis l’extérieur.
j’ai donc fait l’acquisition d’un Rpi4 et retenu HA comme système d’exploitation… Là les heures de réflexion passées devant l’écran s’accumulent…
Ça parait facile d’intégrer des équipement qui sont déjà reconnus ou qui ont des fonctionnalités préprogrammées dans HA. Mais pour les produits Enocean, bah y’a pas grand chose. Mais je n’ai pas le choix, je n’ai que çà !
Il m’a fallu une semaine et 2 week-ends au complet de lectures, visionnages de vidéos et tutos tests de ‹ programmation › pour faire basculer un relais Enocean Nodon avec un inter mural 4 touches à impulsion (type FT55)… ouahhh, tout çà ?!?. (Ouais, çà fait peur !)

En fait, je me rend compte que c’est bien compliqué pour mon vieux cerveau… Et que je pense ne toujours pas avoir compris la méthode de programmation. Je n’ai pas un super Anglais, mais je comprends l’essentiel et les traducteurs sont là pour aider. mais il y a des finesses que mon cerveau ne traduit pas.

Aujourd’hui je poste mon premier message parce que je cale et en ai un peu marre de passer des heures à chercher à comprendre. Sans doute plus facile de se faire aider que de chercher dans mon coin. Alors voilà :
J’y vais par étape, maintenant que j’ai réussi à faire basculer un relais Nodon, j’aimerais qu’il bascule si une mesure atteint une consigne ajustable. En résumé, lorsque la température descend sous la consigne, j’allume la chaudière. Cette consigne sera ajustable sur place et à distance.

J’ai ‹ presque* › réussi à piloter le relais grâce à une automation lorsque la mesure de T° passe un seuil. Mais actuellement ce seuil est fixe. C’est une valeur numérique écrite dans les conditions. Si je veux pouvoir modifier cette consigne à distance (ouais, c’est pas encore gagné non plus çà…), j’imagine qu’il me faut attribuer une variable à la place de cette condition ‹ fixe ›.
J’imagine alors que cela doit être une entité comme les autres (je me trompe ?). Mais comment créer une entité qui contient une valeur numérique ? Je dois bien la déclarer quelque part, mais où ? et sous quel forme ? je sèche !!

*presque : Parce que je croyais que çà marchait et je viens de me rendre compte que non, le seuil est rebasculé dans l’autre sens et le relais n’est pas retombé. Encore un peu de réflexion de ce coté…

1 J'aime

salut
je viens te donner un petit coup de main et quelques explications.
il y a plusieurs façon de voir un problème.
tu souhaite piloter un relais suivant une consigne?

c’est pour du chauffage ou une climatisation. il y a des intégrations toute prête (climat). et ici sur le forum
tu veux faire autre chose ou tu veux le faire toi même.
je pense faire un input avec la valeur que tu veux changer.
puis changer d’état ton relais si la valeur et plus ou moins grande.

jette aussi un œil sur les include ou packtage. car si tu démarre mal ca vas être plus dur dure

donc déjà créer un imput number.

dans configuration.yaml ecrire:

input_number: !include input_number.yaml

puis créer un fichier au même niveau que configuration.yaml:

input_number.yaml

dedans tu colle ca:

###### consigne CH ##########
#############################
consigne:                   # l'id unique
    name: consigne1         # un nom
    initial: 21             # un état initial
    min: 20                 # une valeur mini
    max: 24                 # une valeur max
    step: 0.1               # la valeur d'un interval
    unit_of_measurement: °C

bravo tu retrouve sur lovelace:
43fc9d234c53d6a30efe5c35b2e4428e3e058c11_2_690x387 tu peux faire varier manuellement ta consigne
tu dois aussi avoir un thermometre pour comparer ta consigne.
on vas l’appelé ‹ temperature_salle › et un relais ‹ switch_salle ›
tu vas donc pouvoir faire deux automations:

déclencheur: temperature_salle > consigne
condition: switch_salle est off
action: appeler le service switch turn on pour le switch_salle.

il est important de mettre une condition pour ne pas faire trop d’appel sur ton relais.
puis l’inverse

déclencheur: temperature_salle < consigne
condition: switch_salle est on
action: appeler le service switch turn off pour le switch_salle.

voila si ca te permet de progresser. et ca c’est cadeaux :slight_smile: je suis dispo si t’as besoin de plus mais on apprend mieux lorsque l’on cherche que lorsque l’on nous montre.

{{ (states("sensor.temperature_salle") | float) > (states("input_number.consigne") | float) }}

Ouahhhh cool !

Merci Steffleur
Je vais regarder çà de plus près.

Oui, c’est pour un chauffage central (très ancien au fuel)
J’envisage plusieurs consignes (çà c’est normal. La base). Mais en plus, je changerais la zone de mesure en fonction des heures. (J’ai deux sondes T° Enocean). Une dans chaque zone.
J’ai déjà les mesures et courbes sur le Dashboard.

Ton exemple vient de me faire comprendre qu’il me fallait créer un fichier spécifique pour les variables. Pas de soucis, je vais m’y atteler.
Je vais commencer par lire et déchiffrer tes liens.
Tes automations me semblent simple à déchiffrer sur ton exemple. Qu’en sera-t-il sur mon système …
Merci pour le Template :wink: Mais je n’en suis pas encore là. Cà va venir…

Pour le moment je fais des tests pour apprendre et me familiariser avec tout çà. Le temps que je sois opérationnel sur les principes, je ferais l’acquisition d’un SDD pour créer quelque chose de propre dessus.

Très bien toujours dispo si t’as besoin, même pour une automation.
Je souhaite créer une rubrique pour les erreur de débutant, ce que je suis.
Je me suis taper plus de 65 entités à renommer et à changer dans les automations et les Template.
Donc bien commencer pour pouvoir avancer sans tout recommencer me semble très important.
HA est très puissant, mais il faut poser de bonnes bases, que je maitrise pas encore.
j’ai aussi passé beaucoup de temps à lire. pour comprendre.
mais je ne sais toujours pas faire un binaire : si soleil levé depuis +2h et soleil couché - 03 min en optimal. ca marche mais ca me plait pas .

pour ton chauffage je te conseillerais des zones (couchage, salle de bain, bureau et salleà manger cuisine).
tu doit pouvoir gérer avec des vannes, perso je suis électrique donc c’est presque plus simple.

HEHE, oui ca quand tu ne le sais pas et que tu changes le nom des entités post automation, scripts…faut tout renommer partout :wink:
C’est Un des gros points NOIRS de HASS

A ce propos, ceci fait partie des consignes de HASS, l’usage de states()…is_state() fait partie des bonnes pratiques de templating

Pinaize,
J’en bave !

Pensant bien faire, j’avais tout de suite commencé par remplacer le input_number par un input_variables pensant que çà allait marcher … Bah nan. Me suis rendu compte qu’il y avait plein d’autres includes, mais obligatoirement ceux déclarés dans le système.
Bon, une fois mes curseurs confort et nuit déclarés, je me retrouve bien avec mes jolis curseurs sur le dashboard.
Suis un peu têtu (ma femme dit qu’il faut que j’enlève le ‹ un peu › :crazy_face:). Même si au final j’emploierais certainement un thermostat proposé, j’essaye de créer le minimum par moi-même. Un moyen de comprendre, bien que je parte de zéro…

J’ai réussi à faire basculer grâce aux automations le relais en fonction des variations de T° autour d’une consigne fixe. Progrès !!! :grinning:

Etape suivante, remplacer la consigne fixe par la valeur d’un curseur. Là, çà coince. Je cherche depuis quelques heures comment correctement écrire la chose. Je donne ma langue au chat…
Voilà le dernier essai :

  trigger:
  - platform: numeric_state
    entity_id: sensor.temperature_temperature_salon
    above: {{ states('input_number.consigne_confort') | float }}
  condition: []

Re il te faut une template, pas un numeric_state en trigger, celui là

{{ (states(" sensor.temperature_salle ") | float) > (states("input_number.consigne ") | float) }}

Genre:

  trigger:
    platform: template
    value_template: "{{(states.sensor.135_humidity.state | float) < (states.input_nmber.slider1.state | float)}}"

Et oubli pas de mettre une condition avant l’action sinon ça vas appeller ton relais tout le temps que ton trigger sera vraie.
C’est bien que ta femme s’intéresse, et je pense qu’elle a raison comme toutes
Après tu peux intégrer
ton trigger template comme TC > a la consigne ou TC < a la consigne
Condition je veux que ça régule le chauffage ( Switch ou autre)
Et la dans action
Choix 1
Condition TC > a la consigne ou TC < a la consigne
Action chauffe
Choix 2
Condition TC > a la consigne ou TC > a la consigne
Action eteint
Je pense que la tu sera fier de toi,
Mais que tu passera par climat pour l’hysteresi, où tu l’intègre dans ton template .
Pour ça tu fais des essais dans outil de développement puis modele ici +10

{{ (states("sensor.temperature_salle ") | float) +10 > (states("input_number.consigne") | float) }}

Merciiiiiiii !!

Bah voilà, je pouvais toujours chercher… Moi qui voulais aller au plus simple :roll_eyes:

Bon bah on va tester çà demain (enfin dans qq heures maintenant. M’en vais faire refroidir mes derniers neurones…)

Pour la bascule j’étais parti différemment avec deux automations inversées
L’hystérésis, aurait été créé dans cette seconde automation.
A voir …

Je n’ai pas encore compris comment çà marchait.

Oui oui pour la condition sur relais déjà appelé et action inverse. Mais avant tout, il me faut faire fonctionner le minimum sans bug.

PS : Merci de prendre ma défense face à Madame :sob:

1 J'aime

hihi regarde ici.
madame à raison très certainement.

Hello !

Après des heures de suspens, de neurones fumants, de tests, de lectures et retest et retests et ret…
La voilà fonctionnelle telle que je l’avais initialement imaginée (la fonctionnalité) :

- id: 'Marche Chauffage'
  alias: Enclancher Chauffage
  description: 'Mise en route chauffage'
  trigger:
    - platform: template
      value_template: "{{states('sensor.temperature_temperature_salon') | float < states('input_number.consigne_confort') | float}}"
  condition:
    - condition: state
      entity_id: switch.enocean_nodon01_0
      state: 'off'
  action:
  - service_template: switch.turn_on
    data_template:
      entity_id: switch.enocean_nodon01_0
  mode: single
  ###############################################  
- id: 'Arret Chauffage'
  alias: Declancher Chauffage
  description: 'Arret du chauffage'  
  trigger: 
    - platform: template
      value_template: "{{states('sensor.temperature_temperature_salon') | float > states('input_number.consigne_confort') | float}}"
  condition:
    - condition: state
      entity_id: switch.enocean_nodon01_0
      state: 'on'
  action:
  - service_template: switch.turn_off
    data_template:
      entity_id: switch.enocean_nodon01_0
  mode: single

Bon, pas d’hystérésis hormis celui naturel lié à l’installation. Un PID serait le Graal, mais ce ne sera pas pour cette année :stuck_out_tongue_closed_eyes:

Prochaine étape, la gestion à distance.
Ensuite, je reviendrais faire un tour coté chauffage et m’orienterais sans doute vers une fonctionnalité de HA avec un ‹ climate ›.

Merci encore pour ton aide
A très bientot

1 J'aime

Well done :wink:

A quoi penses tu ?

PID…ca se tente

Bonjour,

A la même chose que vous … :grin:

En fait j’ai vendu à Madame (et moi-même) qu’on pourrait installer un système qui nous permettra de piloter le chauffage à distance.
Principalement lorsque l’on rentre d’une virée tardive avec quelques heures de route (on espère qu’on pourra se le re-permettre dans un proche avenir), pouvoir relancer le chauffage à une température ‹ confort › avant notre arrivée.

Maintenant que je peux piloter le chauffage et ajuster une consigne dans HA. Il me reste à le piloter à distance avec un smartphone. Plein d’interrogations. Sans aucun doute le prochain sujet qu’il me faudra ouvrir.

Il y a aussi plein d’autres choses envisageables dans la maison,(musique, éclairage, surveillance d’animaux, …) mais je me focalise sur l’essentiel pour commencer.
Je garde également à l’esprit que l’apport d’HA doit être un plus en parallèle des systèmes existants et être facilement pilotable par quiconque. Je ne démonterais pas le vieux thermostat en place par exemple. Il restera baissé et branché en parallèle au cas où.

Avec un peu de recul, réguler mon installation avec un PID ne me semble pas très envisageable.
La maison dispose de radiateurs de plusieurs époques (fonte, tôle) qui ont des inerties bien différentes. Je vais avoir deux zones régulées indépendamment mais avec la même chaudière. Pas encore de vanne thermostatique.
Peut-être faudrait-il envisager des PID par zone. Je ne sais pas. Peut-être irais-je m’amuser un peu avec des anticipations par zone. Sans doute plus simpliste.
Je vais commencer à y réfléchir en parallèle de mes autres avancées.

Salut, tu n’as pas pris beaucoup de risque :wink:

Bien vendu lol

En fait, la réponse est te faire un script :wink: avec les differentes actions à effectuer quand tu rentres :wink:
Et depuis ton appli, tu auras juste à cliquer :wink: Easy

La gestion de chuaffage par PID est clairement un peu ch…à mettre en place lol

regarde ca. ca vas peut être t’aider.

Cette plateforme permet de créer une tendance.

et la encore mieux.

on attend ton retour, et bien sûre l’avis de madame. :face_with_monocle:

1 J'aime

Pas mal, j’étais passé à côté :slight_smile:

Héhééé :slightly_smiling_face:

C’est très tendance !!

Mais si çà continue, Madame va trouver que le sujet dérivée …

Merci pour les liens :wink:

Salut,

Derivative est excellent :wink: