Nouveau thermostat type proportionnel avec gestion des presets / portes et fenêtres / détection de mouvement / gestion de présence et surconsommation

La release 1.1.0 vient d’être publiée.


----- Cette release contient d’importantes corrections et des évolutions de sécurité. Son installation est fortement recommandée -----

Elle contient les évolutions et les corrections suivantes:

Evolutions demandées par la communauté :

  1. Après changement de configuration, il faut recharger l’intégration #13
  2. Ajouter min_temp and max_temp in configuration #17
  3. Mise en sécurité du thermostat si pas de changement de température #18
  4. Ajouter un délai minimal d’activation configurable #19
  5. Changer le preset pour « security » quand le thermostat passe en mode sécurité #22
  6. Ajouter des examples de réglagles dans la doc #23. Les exemples sont ici : versatile_thermostat/README-fr.md at main · jmcollin78/versatile_thermostat · GitHub
  7. Faire un README en Français #24. Le readme en Français est disponible ici: versatile_thermostat/README-fr.md at main · jmcollin78/versatile_thermostat · GitHub et en haut de ce thread.

Bugs fix:

  1. Après arrêt d’un thermostat en mode sécurité, il peut redémarrer tout seul #20
  2. quelques petits bugs non listés ici mais important.

Merci de demander les nouvelles fonctions et de reporter les bugs ici : Issues · jmcollin78/versatile_thermostat · GitHub

2 « J'aime »

Bravo, même si l’anglais me dérange pas. C’est @ClassicRed qui va être content :wink:
je vais test c’est 1.10, merci pour c’est release.

2 « J'aime »

Hello @Xek

Je reviens sur cette partie qui pourrait intéresser plusieurs personnes (dont moi) :

J’ai commencé à rédiger le besoin ici : Add the device power and device energy into attributes · Issue #25 · jmcollin78/versatile_thermostat · GitHub
et je me rends compte que ça ne va pas être aussi simple dans certains cas.
Si l’équipement plioté à une puissance constante lorsqu’il est on, c’est facile et je pourrais tout à fait exposer un attribut device_power calculé comme : device_power * on_percent. Ca serait la puissance moyenne sur le cycle.

Pour rappel, device_power est donné dans la configuration de la gestion de la puissance (page 6).

Je pourrais aussi tout à fait exposer l’énergie consommée comme étant :
somme (device_power * cycle) en kWh.

Ca me parait simple mais (parce-que y a un mais) : ca ne peut marcher que si la puissance de l’équipement piloté est constante dans le temps. Ma clim reversible par exemple, n’est pas du tout constante et le calcul sera faux:

Capture d’écran 2023-01-22 à 10.33.04

Donc la question c’est est-ce que c’est acceptable d’exposer une valeur potentiellement pas très juste voire fausse dans le cas d’une clim par exemple ?

Chez moi, tous mes switchs sont équipés de ‹ Power mesurement › (Shelly ou Sonoff) donc j’ai une mesure juste fourni par le switch lui même.

Vos réflexions sont les bienvenues,

bonjour @Jean-Marc_Collin, en effet, cela ne s’applique pas à tous type de chauffage, peut être ajouter l’option avec un message spécifiant les restrictions (puissance constante, radiateur, …) ?

De mon côté, ayant un radiateur de 2000W, j’ai fait plus ou moins ce que je voulais avec quelques sensors et template, pour convertir la durée en Kwh puis en euros, si ça peut aider et que je me soit pas planté dans les calcul, ça donne :

sensor :
    
  # Temps d'allumage du radiateur
    
  - platform: history_stats
    name: Chauffage (Durée Aujourd'hui)
    entity_id: switch.radiateur
    state: 'on'
    type: time
    start: '{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}'
    end: '{{ now() }}'

 # Conso Journalière      

  - platform: template
    sensors:
      chauffage_conso_jour:
        friendly_name: "Chauffage (Conso Aujourd'hui)"
        value_template: "{{ states('sensor.chauffage_duree_aujourd_hui')| float * 2}}"
                          # Temps d'allumage x 2 (radiateur de 2000W) = conso en KWh
        unit_of_measurement: "kWh"
        unique_id: chauffage_conso_jour

# Coût Journalier

  - platform: template 
    sensors:
      chauffage_cout_jour:
        friendly_name: "Chauffage (Coût Aujourd'hui)"
        value_template: "{{ (states('sensor.chauffage_duree_aujourd_hui') | float * 2 * states('input_number.linky_cout_kwh')|float)|round(2) }}" 
                        # Temps d'allumage x 2 (2kw soit 2000W) x 0.19cts = coût en €
                        # "input_number.linky_cout_kwh" est réglé à 0.19 (prix moyen du Kwh dans mon cas)
        unit_of_measurement: "€"
        unique_id: chauffage_cout_jour

Dans lovelace , ça donne ça :

2a9646ebdf224d093f4a11de5e7dc74cef70a90d

Puis j’ai aussi ajouté des utility_meter pour historisé la conso et le coût :


utility_meter:

# Historique Consommation Chauffage 

  chauffage_conso_journaliere:
    source: sensor.chauffage_conso_jour
    cycle: daily
    unique_id: chauffage_conso_journaliere
   
  chauffage_conso_mensuelle:
    source: sensor.chauffage_conso_jour
    cycle: monthly
    unique_id: chauffage_conso_mensuelle
    
  chauffage_conso_annuelle:
    source: sensor.chauffage_conso_jour
    cycle: yearly
    unique_id: chauffage_conso_annuelle
    

Un autre suggestion d’amélioration, serait d’ajouter la possibilité de renseigner deux sonde de température et que le thermostat prenne en compte la moyenne, ça éviterais de faire un capteur supplémentaire min/max/mean comme j’ai fait pour gérer deux sondes :wink:

Merci en tous cas pour ton investissement sur ce beau projet déjà très aboutie :slight_smile:

Beau résultat. Par contre, si tu as les heures creuses / pleines ou l’offre TEMPO les calculs sont beaucoup plus compliqués. Tes calculs fonctionnent avec un cout fixe par jour je pense.

La où je pourrais très facilement aider c’est sur le calcul de la durée d’allumage et la conso du jour où ce serait possible de fournir des valeurs approchées par le thermostat lui-même. Je réfléchis à y faire qqe-chose car j’ai aussi des templates, des utility-meter, des intégrales de Riemann, etc ce qui complexifie pas mal la gestion de l’énergie avec Home Assistant.

Le résultat dans le custom:simple-thermostat est très propre et me donne des idées. Bravo !

Un autre suggestion d’amélioration, serait d’ajouter la possibilité de renseigner deux sonde de température
Ca me parait très spécifique a ton cas et je ne pense pas y faire qqe-chose. L’idée d’un helper qui fait la moy/min/max est certainement la bonne dans ton cas.

… et merci pour les compliments, ca fait toujours plaiz :wink:

Bonjour,
Pas eu le temps de tester ce nouveau thermostat mais si ça peut aider, je pilote avec la moyenne de deux capteurs.

Bob

Salut @Jean-Marc_Collin ,

Tarif Fixe dans mon cas en effet, et oui oui j’ai bien vu le device_power, je pense que c’est la première pierre pour cette fonction :wink: mais pour une puissance constante effectivement, l’ajout de la fonction avec mention « puissance constante uniquement » serait déjà un premier pas.

Pour les HC et HP c’est plus compliqué et faudrait pas mal de sensor mais réalisable (pas simplement :frowning: ) d’après ce que j’avais pu lire sur le net. Sur le blog de @mycanaletto il y a ce post qui traite le sujet, ça peux aider pour les calcul :wink:

@Bob intéressant, dans mon cas (avec un sensor min/max/mean) si un capteur reste bloqué à une température (car plus dispo) la moyenne est faussé, avec ton code ça changerais rien si je comprend bien car le capteur serait plus dispo mais une temp toujours connu de HA ?

L’idéal serai que si la T° d’un des deux capteur n’a pas changer depuis un certain temp alors on bascule de la moyenne vers un autre capteur.

Oui moyenne si les deux capteurs OK, sinon je prends celui qui est OK (sur ESP32), sinon je bascule sur le Aqara Zigbee.
Sur ESP32 si souci ils sont « unavailable ».

Bob

Bonjour,

Pour la suite je vais certainement implémenter ça, histoire de ne pas avoir que des thermostats sur des switchs: Add a thermostat over a climate mode in addition to the thermostat over switch mode · Issue #5 · jmcollin78/versatile_thermostat · GitHub

Dites moi si ça vous intéresse ou si vous avez d’autres idées / précos pour cette fonction, y a peut être mieux à faire que de faire un climate sur un climate (puisque concrêtement c’est ça qui va se passer).


En français:
Nous voulons pouvoir utiliser un VersatileThermostat sur une entité climate existante qui contrôle le une climatisation ou autre.

Pour que,

  1. le thermostat sous-jacent bénéficiera des fonctionnalités du thermostat polyvalent,
  2. chaque entité climatique pourra bénéficier des fonctionnalités du Versatile Thermostat :wink:
  3. la mise en oeuvre restera simple :+1:

Pour ce faire, nous devons configurer :

  1. une première page avec le nom et le type VersatileThermostat (climatisation sur interrupteur ou climatisation sur climat) et les fonctionnalités dont nous avons besoin pour ce thermostat (fenêtre, mouvement, puissance, présence),
  2. avoir une deuxième page qui peut configurer le commutateur de climatisation contenant la configuration du capteur de température, du cycle et de l’algorithme
  3. avoir une deuxième page pour le climat sur le type de climat. Dans cette page, nous devrions configurer le climat sous-jacent et peut-être d’autres options (non identifiées maintenant)
  4. les pages suivantes ne s’afficheront que si les fonctionnalités ont été revendiquées pour ce thermostat

Cela ne devrait pas être très difficile à mettre en œuvre.

Option :

  • devons-nous implémenter une entrée de configuration V2 et une migration entre elles ?
  • il devrait être préférable d’implémenter également l’entité Suggérer/sélectionner dans une liste sur les écrans de configuration Problème #16

Problèmes/questions potentiels à résoudre :

  • remplacer les presets ou utiliser des presets sous-jacents ?
  • la gestion de la presence, remplace la température des preset. S’il s’agit de preset sous-jacents, ils ne peuvent pas être mis à jour à priori.

→ remplacement des éventuels presets du sous-jacents par les notre ??

Bonjour à tous,
Bravo pour ce thermostat.
Une idée, pour ceux qui n’ont pas de capteur d’ouverture fenêtre/porte, est-il possible de mettre en option qui vérifie les variations de température.
Ex.: si la température baisse de 1° en 15 min alors que le chauffage est en route, alors le système suppose qu’une porte/fenêtre est ouverte.
Si aucune action de l’utilisateur n’est faite au bout d’un certain temps, le régulateur se remet en route.

Je ne sais pas si je suis clair.

Bonne journée,

Gaël

Hello @Gael1980,

Tout à fait. J’avais un convecteur qui faisait ça. C’est une feature intéressante en effet : Add a window open detection based on internal temperature change · Issue #28 · jmcollin78/versatile_thermostat · GitHub

Faudra qu’on se définisse des critères (comme -1° en 15 min par exemple), les conditions de retour à la normale (un certain temps ? combien ? la température remonte ?), l’aspect paramétrable de ces critères ?

L’idée est logguée ici : Add a window open detection based on internal temperature change · Issue #28 · jmcollin78/versatile_thermostat · GitHub

Je prends vos idées en complément si cette fonction vous intéresse.

Petite suggestion, un mode boost paramétrable sur une durée, en gros
BOOST 1H = Le mode boost s’active une 1h puis retour au précédent mode :slight_smile:

Oui intéressant et comment on déclencherait ce boost temporaire ? On va manquer de bouton d’action. Ou alors par un service mais ça oblige à se développer son propre bouton.

Sur la même ligne que les boutons mode (sur simple-thermostat) serai l’idéal ou bien en dessous du switch du radiateur :slight_smile:

ok je vois un hvac-mode temporaire du coup.
Intéressant oui. Tu peux m’écrire une demande ici : Issues · jmcollin78/versatile_thermostat · GitHub (Français accepté).

Il me semble que les hvac-mode ne sont pas paramétrables, mais je vais regarder plus en détail.

Cf la doc: Climate Entity | Home Assistant Developer Docs

Les hvac-mode ne sont pas paramétrables. Si tu vois une intégration qui en a plus, ca m’interesse que tu me dises laquelle, j’irai voir comment ils ont faits.


HVAC modes

You are only allowed to use the built-in HVAC modes, provided by the HVACMode enum. If you want another mode, add a preset instead.

Name Description
HVACMode.OFF The device is turned off.
HVACMode.HEAT The device is set to heat to a target temperature.
HVACMode.COOL The device is set to cool to a target temperature.
HVACMode.HEAT_COOL The device is set to heat/cool to a target temperature range.
HVACMode.AUTO The device is set to a schedule, learned behavior, AI.
HVACMode.DRY The device is set to dry/humidity mode.
HVACMode.FAN_ONLY The device only has the fan on. No heating or cooling taking place.

Ha zut, si je vois un truc je fait signe :wink:

Bonjour

Pour avoir ton mode Boost, faut passer par une automatisation avec un input booléan je pense

Salut, oui ça doit être possible mais là c’était plus une suggestion d’amélioration du thermostat :slight_smile:

Via un automatisme ça sera pas forcément simple dans la mesure ou il faudrait prendre en compte le mode avant l’activation du mode Boost puis revenir sur ce même mode après le délais de 1H sauf si via sheduler le mode à changer, ça risque d’être compliqué :slight_smile:

1 « J'aime »