J’utilise depuis quelques jours l’intégration « Solar optimizer » de @Jean-Marc_Collin pour mon chauffe eau électrique.
L’intégration fonctionne bien, cependant comment gérer les jours de mauvais temps quand le chauffe eau n’aura pas fonctionné de la journée.
Etant un utilisateur tout récent de Home assistant,et qu’il faut bien mettre les mains dans le cambouis pour apprendre, j’essaie donc de répondre à cette problématique.
A ce jour :
j’ai un capteur qui relève le temps total quotidien (un float) de fonctionnement de mon chauffe eau.
il se remet à 0 à 6H15.
j’ai une automatisation qui récupère à 20H30, la valeur du capteur, sachant la durée de fonctionnement minimum quotidienne du chauffe eau (1h30), je fais la difference entre la durée minimum et la durée du jour, si le réultat est négatif, je mets 0, si c’est positif j’indique la valeur à 0,5 pret (soit une 1/2H) et je la copie dans un input_number
J’en arrive à mon point de blocage…
Maintenant que j’ai ma durée de fonctionnement pour les HC, comment je peux l’utiliser dans un automatisme ?
En espérant avoir été clair
Merci
Ci-dessous ce que j’ai fait
Le capteur qui recupère le temps de fonctionnement
alias: Maj durée fonctionnement chauffe eau HC
description: Maj de la durée fonctionnement HC
trigger:
- platform: time
at: "20:30:00"
condition: []
action:
- service: input_number.set_value
data:
value: >-
{% if 1.5 -
states('sensor.fonctionnement_chauffe_eau_aujourd_hui')|round(1,
'ceil')> 0 %} {{ (1.5
-states('sensor.fonctionnement_chauffe_eau_aujourd_hui')|round(1,'ceil'))|float
}} {% else %} {{(0.0)|float}} {% endif %}
target:
entity_id: input_number.duree_chauffe_eau_hc
mode: single
L’automatisme qui déclencherait le chauffe en HC si nécessaire, mais comment y ajouter la valeur de mon input_number (avec conversion en heures et minutes) ?
J’ai le même soucis et je fais systèmatiquement un cycle la nuit en heure creuse. Au mieux il ne fait rien car l’eau à chaiuffer dans la journée, au pire il chauffe pour compléter ce qui manque.
Merci @Jean-Marc_Collin
Effectivement avec la sonde qui coupera à la température atteinte souhaitée, c’est tout aussi simple
J’ai donc programmé un cycle en HC qui se déclenchera si la durée de fonctionnement est inférieure à 1H30 sur la journée
Dans ton automatisation après avoir allumer le cumulus tu mets une action attendre de la durée de ton input number et ensuite une action éteindre le cumulus.
Bien sur il va falloir traduire ton 0,5 (par exemple) en minutes ou en heure et minutes (je ne sais pas si on peut mettre plus de 60 dans les minutes, jamais testé)
bon… j’en suis là
J’ai un message d’erreur
« Message malformed: expected float for dictionary value @ data[‹ action ›][1][‹ delay ›][‹ hours ›] »
Le format des valeurs n’est pas bon, je ne vois pas trop
L’idée (prise à @Pulpy-Luke)…imaginons que le temps de fonctionnement est de 1,5 soit 1H30
je multiplie cette valeur par 60, résultat égal 90
1 - pour les heures je divise par 60 et récupère le quotient soit 1
2- pour les minutes je fais le modulo, je recupère le reste soit 30
Merci à tous ceux qui m’ont aidé, cela fonctionne desormais
et pour ceux que ca pourrait interesser…
un petit recap, je suis parti du principe que le chauffe eau doit fonctionner minimum 2H/j
L’entrée qui comptabilise le temps de fonctionnement du chauffe eau dans la journée est remise à zéro à 6H15, car le chauffe eau peut fonctionner entre 4H et 6H, si la journée précédente a été trop nuageuse
En début de soirée, je calcule le temps nécessaire pour le fonctionnement en HC (si durant la journée il a fonctionné 2h ou plus je renvoie 0, sinon je calcule la difference) et je l’injecte dans un input_number
alias: Maj durée fonctionnement chauffe eau HC
description: Maj de la durée fonctionnement HC
trigger:
- platform: time
at: "20:30:00"
condition: []
action:
- service: input_number.set_value
data:
value: >-
{% if 2 -
states('sensor.fonctionnement_chauffe_eau_aujourd_hui')|round(1,
'ceil')> 0 %} {{ (2
-states('sensor.fonctionnement_chauffe_eau_aujourd_hui')|round(1,'ceil'))|float
}} {% else %} {{(0.0)|float}} {% endif %}
target:
entity_id: input_number.duree_chauffe_eau_hc
mode: single
l’automatisme des HC du chauffe eau qui verifie si celui doit démarrer en HC et dans ce cas il se base sur le temps manquant calculé précédent
Alors effectivement comme me le faisait très justement remarquer @Jean-Marc_Collin, avec la sonde du chauffe eau tout ceci n’est peut-être pas forcement nécessaire pour ce type d’appareil, mais cela peut être utile pour d’autres.
l’automatisme qui renvoie la valeur dans le input_number
alias: Calcul durée chauffe eau HC
description: Maj de la durée fonctionnement HC
mode: single
triggers:
- at: "20:30:00"
trigger: time
conditions: []
actions:
- data:
value: >-
{% set tempChauffe =
(states('input_number.duree_minimum_chauffe_eau')|float
-states('sensor.temps_chauffe_eau')|round(1,'ceil'))|float%}
{% set conditionDemain = state_attr('sensor.weather_forecast_jour_2','forecast')[15].condition %}
{% if conditionDemain == 'sunny' %}
{{(0.0)|float}}
{% elif conditionDemain == 'partlycloudy' %}
{%set calculTempsChauffe = tempChauffe/1.5 %}
{% if calculTempsChauffe>= 0.33 %}
{{calculTempsChauffe|round(2, 'floor')}}
{% else %}
{{(0.0)|float}}
{% endif %}
{% else%}
{% if tempChauffe>= 0.33 %}
{{ tempChauffe |round(2,'floor') }}
{% else %}
{{(0.0)|float}}
{% endif %}
{% endif %}
target:
entity_id: input_number.duree_chauffe_eau_hc
action: input_number.set_value
Sachant qu’en fonction de la saison, je modifie (manuellement) un autre input_number qui correspond au fonctionnement minimum requis de mon chauffe eau pour que l’eau soit à température. Cette valeur je la définis de façon empirique en observant ma conso d’électricité
Voici une petite explication.
Je compare donc mon temps de fonctionnement quotidien avec ma valeur de fonctionnement minimum.
Ensuite si le lendemain les prévisions prévoient beau temps, je ne lance pas mon chauffe eau la nuit car en général, il a assez d’inertie thermique pour tenir un peu plus de 24h (mais tu peux mettre ce que tu veux).
Si le lendemain, le temps est plus mitigé, je lance la chauffe au 2/3 du temps manquant pour m’assurer de l’eau chaude.
Pour les autres cas je lance la chauffe du temps manquant.
Si le temps manquant de chauffe est de moins de 0,33 soit 20 min (0,33 *60) je laisse à 0 car 20 min de chauffe ne change pas grand chose.
Tu peux simplifier évidemment, je suis en plein apprentissage de home assistant et du coup je m’amuse un petit peu