Quelles sondes de température pour gestion de chauffage

Pour info, le SNZB-02D en Zigbee fait une mesure toutes les 5 secondes, voir photo.

C’est absolument faux et mensongé leur doc…
Saut de 0,2 ou 0,3° et aucunement des mesures toutes les 5 minutes.

1 « J'aime »

Oui mais comme ce n’est pas régulier, ça n’est pas top pour la régulation…
Soit il faut un capteur qui envoie à période régulière, soit un capteur qui envoie dès qu’il y a un changement de 0,1°.
Quand on veut réguler correctement, on a pas le choix. 0,1° sur une consigne fixe, ça fait 10% d’erreur

Si tu veux avoir une mesure toutes les minutes, il suffit que tu fasses un script qui regarde la température toutes les minutes, et il n’est pas utilise que ce soit le capteur qui te retourne la valeur toutes les minutes s’il n’y a pas eu de différence que le justifie. Cela permet au capteur de réduire sa consommation tout en étant certain que la dernière mesure est la bonne. La fréquence d’échantillonnage, le nombre de décimales ne sont pas des gages d’une bonne régulation de température.

Non en effet un script ne sert a rien ni que la sonde renvoie la meme temperature si elle n’a pas evoluée.
Il faut que la sonde renvoie une trame a chaque fois que ca evolue de 0.1°, pas 0.2 ou 0.3…

Supposons que le capteur te renvoie une mesure à chaque variation de 0.1°, vas tu agir sur tes radiateurs à chacune de ces variations de 0.1° ?

Les régulateurs dispo sur home assistant comme smart thermostat pid sur HACS ont besoin d’un capteur precis…

0.2° suffit pour induire pas mal d’erreur.

Avec un plancher chauffant électrique par exemple (mon cas) il faut plusieurs heures de chauffe pour gagner 0.1°.

Donc oui des variations par step de 0.2° ne sont pas acceptables.

Évidement, si c’est utile, c’est le thermostat qui va gérer, c’est un non sujet pour moi, le capteur doit être réactif, c’est tout.
Sinon régulation pourrie😉

2 « J'aime »

Je suis OK !

Mais réactif ne veut pas dire retourner une mesure toutes les 2 mn par exemple, ce qu’il faut c’est que la dernière température retournée soit la bonne, qu’importe la fréquence d’échantillonnage du capteur. Si tu mets ton capteur dans une enceinte ou la température ne bouge pas, disons au dixième de degré prés, à quoi cela sert il que le capteur te renvoie une mesure toutes les 30 sec, ce qu’il faut c’est qu’il te retourne une mesure quand la variation est plus importante, c’est cela la réactivité. C’est pour cela que les courbes de réponses vues au dessus n’ont rien d’étonnant.

@Loic69

Le code pour la sonde AHT10 sur unESP32 « classique » 30 pins.

i2c:
  - id: bus_a
    sda: 21
    scl: 22
    scan: True
  
  
sensor:
  - platform: aht10
    temperature:
      name: "PSalon Temperature"
      accuracy_decimals: 1
    humidity:
      name: "PSalon Humidite"
      accuracy_decimals: 1
    update_interval: 30s
    address: 0x38
    i2c_id: bus_a

Le code de l’entrée sensor qui prend la moyenne des deux capteurs, ou celui qui est OK, et par défaut un capteur zigbee.

{% set statea = states('sensor.psalon_temperature') | float(0)  %}
          {% set stateb = states('sensor.psalon2_temperature') | float(0)  %}
          {% if (is_number(statea) and statea | float > 1) and (is_number(stateb) and stateb | float > 1) %}
          {{ ((((states('sensor.psalon_temperature') | float) ) + (states('sensor.psalon2_temperature') | float) ) / 2) | round(2) }}
          {% elif (is_number(statea) and statea | float > 1)%}
          {{states('sensor.psalon_temperature')}}
          {% elif (is_number(stateb) and stateb | float > 1)%}
          {{states('sensor.psalon2_temperature')}}
          {% else %}
          {{states('sensor.temperature_18_salon')}}
          {% endif %}

Bob

1 « J'aime »

top merci
La sonde AHT10 est soudée sur ton ESP avec les broches ?
Tu l’as intégré ou dans ton salon ? Invisible ?
Comment est il alimenté ?

Bonjour,
J’ai une quinzaines d’ESP posés ici et là, sans boîtier pour l’instant, câblés avec des fils ou sur plaque d’essai sans soudure, alimentés soit via USBC, mini USB sur chargeur type téléphone, soit sur alimentation 5V / 3A.
Mes deux sondes AHT10 sont dans ma pièce principale ( ~55m2).

Bob

Il est vrai que le ‹ problème › de ce genre de montage est de réussir à avoir quelque chose de ‹ fini ›, ‹ packagé ›

Bonjour, Je confirme l’analyse de @barbierp : le last_seen de mon sensor (Sonoff SNZB-02D) n’est pour moi pas pris en compte.
Je suis avec la dernière version en date de VTherm.

Constat : j’ai un problème récurrent dans mon bureau. Son radiateur est en mode éco (17°C) la nuit. La température étant stable, le last_temperature_date est souvent de plus d’une heure au petit matin mais avec un power_percent faible.
A la remontée en mode confort, à 7h30, le power_percent passe à 100% et VTherm active la sécurité.

Je contourne le problème par la solution suivante:

  • création d’un « faux sensor » en template (que je déclare dans VTherm) auquel j’adjoins un scenario Nodered
  • toutes les 5mn le scénario vérifie que le last_seen du sensor (Sonoff SNZB-02D) date de moins de 10mn. Auquel cas, il recopie la valeur de température dans le « faux sensor »
  • si VTherm déclenche la sécurité, le scénario vérifie le last_seen du sensor Sonoff et copie sa température en ajoutant 0.5°C dans le faux sensor. Cet variation artificielle de température permet à VTherm de relâcher la sécurité et de reprendre un fonctionnement normal.
  • Le scénario voit le relâchement de la sécurité de VTherm et remet alors la température réelle du sensor Sonoff dans le faux sensor.
  • avec ce système, la sécurité ne reste activée que de l’ordre de 2mn
    Cette « astuce » me permet de conserver un bon fonctionnement de VTherm tout en gardant une sécurisation.
    Bien sûr, c’est une solution de contournement qui ne demande qu’à être supprimée :smiley:
1 « J'aime »

Hello @Philpagan ,

Je pense que tu fais référence à ça: Use last_seen for temperature sensor · Issue #398 · jmcollin78/versatile_thermostat · GitHub

C’est prévu en évolution. Je suis sur un gros coup mais je m’y mets dès que j’ai fini.

Et un contournement qui garde la sécurité, c’est le bon choix. Si tu peux partager ton code, ca va aider plus d’un je pense.

Super Jean-Marc :+1:
Oui, je fais bien référence à l’issue 398 (j’aurais peut dû commenter sur l’issue, désolé).

Concernant ma solution:

  1. Créer une entrée de type nombre

  2. configuration.yaml

# Sonde Bureau - fake sensor
  - platform: template
    sensors:
      SondeBureauFakeTemperature:
        friendly_name: 'Sonde Bureau fake Temperature '
        value_template: >
          {{ states('Sonde Bureau Fake Temperature', rounded=True) }}
        unit_of_measurement: '°C'
        icon_template: mdi:temperature-celsius
  1. Scénario Nodered
[{"id":"cb2c8ed3f7d56ae6","type":"inject","z":"bff36163dcac8dfc","name":"Toutes les 5mn","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"300","crontab":"","once":false,"onceDelay":0.1,"topic":"Each5mn","payload":"","payloadType":"date","x":160,"y":140,"wires":[["1159dbd7933abae6"]]},{"id":"1159dbd7933abae6","type":"function","z":"bff36163dcac8dfc","name":"Gestion Température Sonde Bureau","func":"const globalHomeAssistant = global.get('homeassistant');\ncontext.data = context.data || {};\nvar msg1; //temp fake sensor\nvar msg2; //tempo déclenchée sur fake temp envoyée, avant retour à temp réelle\n\nvar SondeBureauTemp = Number(globalHomeAssistant.homeAssistant.states[\"sensor.0x3410f4fffede5531_temperature\"].state);\nvar SondeBureauFakeTemp = Number(globalHomeAssistant.homeAssistant.states[\"input_number.sonde_bureau_fake_temperature\"].state);\nvar Maintenant0 = new Date(globalHomeAssistant.homeAssistant.states['sensor.date_time_iso'].state);\nvar Maintenant1 = Maintenant0.getTime();\nvar VThermSecurity = globalHomeAssistant.homeAssistant.states[\"binary_sensor.radiateur_atlantic_security_state\"].state;\n//Last Temp Date utilisée par Versatile Thermometer\nvar VThermLastTempDate = new Date(globalHomeAssistant.homeAssistant.states['sensor.radiateur_atlantic_last_temperature_date'].state);\nvar VThermLastTempDiff = Maintenant1 - VThermLastTempDate.getTime();\n// timestamp et timediff en ms\nvar SondeBureauLastSeen = new Date(globalHomeAssistant.homeAssistant.states[\"sensor.sonde_bureau_sonoff_last_seen\"].state);\nvar LastSeenTimeDiff = Maintenant1 - SondeBureauLastSeen.getTime();\n\nswitch (msg.topic) {\n    case \"Each5mn\":\n        // si La temp de la sonde bureau a été rafraîchie il y a moins de 10mn, c'est que la sonde est active\n        if (LastSeenTimeDiff < 600000) {\n            //la sonde fake prend la valeur de la sonde bureau\n            msg1 = { payload: SondeBureauTemp };\n        };\n        break;\n    case \"VThermSecurity\":\n        // si Versatile Thermostat a déclenché la mise en Sécurité\n        if (VThermSecurity == 'on') {\n            // si La temp de la sonde bureau a été rafraîchie il y a moins de 10mn, c'est que la sonde est active\n            if (LastSeenTimeDiff < 600000) {\n                //la sonde fake prend la valeur de la sonde bureau + 0.5°C pour réactiver VTherm\n                msg1 = { payload: SondeBureauTemp + 0.5 };\n            }\n        } else {\n            // la mise en sécurité a été annulée, retour à la normale, la sonde fake prend la valeur de la sonde bureau\n            msg1 = { payload: SondeBureauTemp };\n        };\n        break;\n    default:\n};\n\n// debug\nnode.warn({ \n    \"SondeBureauTemp\": SondeBureauTemp,\n    \"SondeBureauFakeTemp\": SondeBureauFakeTemp,  \n    \"VThermSecurity\": VThermSecurity,\n    \"Maintenant\": Maintenant0,\n    \"SondeBureauLastSeen\": SondeBureauLastSeen,\n    \"LastSeenTimeDiff (sec)\": LastSeenTimeDiff/1000,\n    \"VThermLastTempDate\": VThermLastTempDate,\n    \"VThermLastTempDiff (mn)\": parseFloat((VThermLastTempDiff/60000).toFixed(0)),\n});\n\nreturn[msg1];","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":140,"wires":[["d75bd0fadb3a2cee","95b4dd15c736cd56"]]},{"id":"88531fac65436087","type":"api-current-state","z":"bff36163dcac8dfc","name":"VTherm Security","server":"c879ac61.99cd1","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.radiateur_atlantic_security_state","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"topic","propertyType":"msg","value":"VThermSecurity","valueType":"str"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":150,"y":200,"wires":[["1159dbd7933abae6"]]},{"id":"d75bd0fadb3a2cee","type":"debug","z":"bff36163dcac8dfc","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":740,"y":80,"wires":[]},{"id":"95b4dd15c736cd56","type":"api-call-service","z":"bff36163dcac8dfc","name":"Sonde Bureau Fake Temperature","server":"c879ac61.99cd1","version":5,"debugenabled":false,"domain":"input_number","service":"set_value","areaId":[],"deviceId":[],"entityId":["input_number.sonde_bureau_fake_temperature"],"data":"{ \"value\": payload }","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":820,"y":140,"wires":[[]]},{"id":"eae7acaf032b3577","type":"comment","z":"bff36163dcac8dfc","name":"Gestion Sécurité VTherm Radiateur Bureau","info":"","x":230,"y":60,"wires":[]},{"id":"254518a8a6fecb9d","type":"inject","z":"bff36163dcac8dfc","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":280,"wires":[["88531fac65436087"]]},{"id":"c879ac61.99cd1","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
1 « J'aime »

Merci beaucoup @Philpagan pour toutes ces infos et cette solution.
Je vais essayer de mettre ça en place le temps que @Jean-Marc_Collin ai le temps de faire un fix.
J’ai regardé le code sur Github, mais je ne suis pas assez connaisseur pour faire une PR malheureusement.
Ça va en aider plusieurs je pense :slightly_smiling_face:

1 « J'aime »

J’ai l’impression qu’une partie des messages et des « problèmes » soulevés viennent surtout d’un problème de vocabulaire, disons.
La résolution de la mesure (le capteur indique 20,1 °C ou 20,5 °C) est différent de la précision de la mesure (il fait dans la pièce 20,1 °C ou 20,5 °C).

Ce n’est pas parce que l’affichage indique une température (ou pire, un % d’humidité) au 1/10e près que le capteur peut être aussi précis. C’est juste pour le marketing :frowning:
Si vous en avez à la maison, regardez les valeurs indiqués pour les thermomètres corporels, car dans ce cas ils doivent clairement l’indiquer, les valeurs sont assurées à… +/- 2 °C, rarement en dessous.
J’ai des thermomètres professionnels, les valeurs sont assurées au demi degré près « seulement », et ils valent bien plus chers que tous ceux dont on parle ici. Et je dois les faire calibrer tous les ans, si je veux pouvoir garder cette précision.

Par contre, leur fonctionnement sur la transmission des données est équivalente, en mode normal, ces sondes envoient les infos tous les X temps, mais si la variation de température est importante et donc caractéristiques d’un problème, l’envoi est forcé pour remonter plus rapidement les infos et faciliter la perception du problème.
Comme ces sondes assure aussi l’envoi des infos, il est facile de programmer la périodicité de l’envoi des infos en fonction de tels paramètres.

Si vous voulez vous en convaincre, lisez la version anglaise de la promo du capteur Sonoff SNZB-02D, ils parlent de « gives you more accurate readings maintaining ±0.2°C/±0.4°F accuracy in temperature and ±2%RH accuracy in humidity, refreshes readings every 5 seconds. »
Ce sont les lectures des valeurs, pas les valeurs elles même.
Vous pouvez également regarder les paramètres du senseur Sonoff sans écran, il y est indiqué la plage de températures de fonctionnement… et pas beaucoup plus, rien ne parle de la précision des capteurs.

1 « J'aime »

Je suis ok avec toi, il y a souvent une confusion entre précision et résolution.

Par contre je ne comprends pas ce que tu veux dire à propos du Sonoff SNZB-02D, la précision de ±0.2°C annoncée ne serait pas réelle ?

Ben trouve moi une seule autre référence que dans le texte marketing. Rien n’est précisé dans le manuel ou autre par exemple, tu as seulement la plage de fonctionnement, rien n’est précisé sur la précision.
Et à ce tarif, une telle précision me parait hautement improbable.

Pour moi, cette précision est réelle… sur l’affichage, rien ne dit qu’elle le soit sur la mesure.