Piloter mon chauffage zigbee

Bonjour j’ai acheter un thermostat zigbee il est connecté a HA

J’aimerais pouvoir le gerer avec node red mais je n’arrive pas a recupérer la température dans HA ni le bouton on/off sur HA
Merci pour votre aide


J’ai un peu avancer j’ai fait assez simple

je modifie bien la consigne dans node-red et dans états la température est modifier mais par sur mon thermostat ?

y a t’il une erreur dans mon code?

[
    {
        "id": "75662cc50755d7dd",
        "type": "tab",
        "label": "Flux 2",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "f9b78b19f361ae14",
        "type": "inject",
        "z": "75662cc50755d7dd",
        "name": "Température cible",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "",
        "payload": "15",
        "payloadType": "num",
        "x": 310,
        "y": 440,
        "wires": [
            [
                "efca71afcb224d3b",
                "1dbf4ade176946cf"
            ]
        ]
    },
    {
        "id": "efca71afcb224d3b",
        "type": "api-call-service",
        "z": "75662cc50755d7dd",
        "name": "Envoyer température",
        "server": "b4a0da5d.eb0d98",
        "version": 7,
        "debugenabled": false,
        "action": "climate.set_temperature",
        "floorId": [],
        "areaId": [],
        "deviceId": [],
        "entityId": [],
        "labelId": [],
        "data": "{\"entity_id\": \"climate.thermostat_chauffage\", \"temperature\": 15}",
        "dataType": "json",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "blockInputOverrides": false,
        "domain": "climate",
        "service": "set_temperature",
        "output_location": "",
        "output_location_type": "none",
        "x": 560,
        "y": 440,
        "wires": [
            [
                "f16a951facc50daf"
            ]
        ]
    },
    {
        "id": "f16a951facc50daf",
        "type": "debug",
        "z": "75662cc50755d7dd",
        "name": "debug 21",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 840,
        "y": 460,
        "wires": []
    },
    {
        "id": "1dbf4ade176946cf",
        "type": "debug",
        "z": "75662cc50755d7dd",
        "name": "debug 22",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 520,
        "y": 520,
        "wires": []
    },
    {
        "id": "b4a0da5d.eb0d98",
        "type": "server",
        "name": "Home Assistant ok",
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "",
        "connectionDelay": false,
        "cacheJson": false,
        "heartbeat": false,
        "heartbeatInterval": "",
        "statusSeparator": "",
        "enableGlobalContextStore": false
    },
    {
        "id": "8912b6d02559358b",
        "type": "global-config",
        "env": [],
        "modules": {
            "node-red-contrib-home-assistant-websocket": "0.80.3"
        }
    }
]

Bonsoir @steevy
Donne le modèle du thermostat stp :wink:
ça te dit quoi dans les outils de DEV

Si tu as bien ça alors dans outils de DEV → Modèles essaie ça :

{{ state_attr('climate.thermostat_chauffage', 'current_temperature') }}

Si OK, tu fais une entrée template avec.

Bob

merci pour ton retour

{{ state_attr('climate.thermostat_chaffage', 'current_temperature') }}

si je fais ça je recupere la température intérieur

Tu verras si la récupération de la mesure faite par ton Thermostat est OK:

le modèle du Thermostat STP :wink:
Bob

oui nickel ca fonctionne ça récupère bien la valeur du thermostat
j’ai créer le capteur

Tu l’as ajouté graphiquement ?


Si oui tu as quoi en cliquant les 3 points entourés en rouge ?
Tu préfères utiliser Node Red plutôt que HA et VTherm par exemple ?
Si oui, tu sais setter une entrée depuis Node Red ?
Tu ne choisi pas le plus simple mais chacun son choix.
Bob

je ne suis pas un pro de node red
je sais faire les choses Basic je pilote les volets, recuperer des valeurs, gérer la fin des machines et sèche linge…

après je suis ouvert c’est pas obliger de passer par node red si c’est plus simple autrement

[
    {
        "id": "75662cc50755d7dd",
        "type": "tab",
        "label": "Flux 2",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "f9b78b19f361ae14",
        "type": "inject",
        "z": "75662cc50755d7dd",
        "name": "Température cible",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "",
        "payload": "25",
        "payloadType": "num",
        "x": 310,
        "y": 440,
        "wires": [
            [
                "efca71afcb224d3b",
                "1dbf4ade176946cf"
            ]
        ]
    },
    {
        "id": "efca71afcb224d3b",
        "type": "api-call-service",
        "z": "75662cc50755d7dd",
        "name": "Envoyer température",
        "server": "b4a0da5d.eb0d98",
        "version": 7,
        "debugenabled": false,
        "action": "climate.set_temperature",
        "floorId": [],
        "areaId": [],
        "deviceId": [],
        "entityId": [],
        "labelId": [],
        "data": "{\"entity_id\": \"climate.thermostat_chauffage\", \"temperature\": 25}",
        "dataType": "json",
        "mergeContext": "",
        "mustacheAltTags": false,
        "outputProperties": [],
        "queue": "none",
        "blockInputOverrides": false,
        "domain": "climate",
        "service": "set_temperature",
        "output_location": "",
        "output_location_type": "none",
        "x": 560,
        "y": 440,
        "wires": [
            [
                "f16a951facc50daf"
            ]
        ]
    },
    {
        "id": "f16a951facc50daf",
        "type": "debug",
        "z": "75662cc50755d7dd",
        "name": "debug 21",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 840,
        "y": 460,
        "wires": []
    },
    {
        "id": "1dbf4ade176946cf",
        "type": "debug",
        "z": "75662cc50755d7dd",
        "name": "debug 22",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 520,
        "y": 520,
        "wires": []
    },
    {
        "id": "b4a0da5d.eb0d98",
        "type": "server",
        "name": "Home Assistant ok",
        "addon": true,
        "rejectUnauthorizedCerts": true,
        "ha_boolean": "",
        "connectionDelay": false,
        "cacheJson": false,
        "heartbeat": false,
        "heartbeatInterval": "",
        "statusSeparator": "",
        "enableGlobalContextStore": false
    },
    {
        "id": "bf70410f8f12ea2d",
        "type": "global-config",
        "env": [],
        "modules": {
            "node-red-contrib-home-assistant-websocket": "0.80.3"
        }
    }
]

j’ai fait un test assez simple mais la valeur ne se modifie pas sur mon thermostat

C’est normal, la valeur est une mesure du capteur de température intégré au Thermostat.
Si tu veux modifier la température de consigne il faut une autre entrée:

{{ state_attr('climate.thermostat_chauffage', 'temperature') }}

EDIT : j’ai un thermostat Zigbee Moes mais je ne l’ai jamais utilisé, j’utilise des thermostats génériques HA !
Bob

oui ça j’ai récupérer mais comment envoyer la valeur sur mon thermostat

avec node red je fais ça

{"entity_id": "climate.thermostat_chauffage", "temperature": 25}

mais la valeur ne se modifie pas

J’ai créé une nouvelle entrée nombre avec la consigne :

OK sur la carte:
image

Vérifie ça avant de tester dans Node red.

Bob

par contre si je modifie la valeur de température de chauffe rien ne se passe sur mon thermostat ni dans états ni sur mon thermostat

En fait si tu modifies la valeur sur le cercle de ton thermostat ça modifie la valeur du nombre mais l’inverse ne fonctionne pas.

Depuis Node Red il y a aussi un souci.

Depuis une automatisation ça fonctionne.

alias: Modif_Consigne_Thermostat_Moes
description: ""
triggers:
  - trigger: state
    entity_id:
      - light.lampe_marine
    from:
      - "on"
    to:
      - "off"
conditions: []
actions:
  - action: climate.set_temperature
    metadata: {}
    target:
      entity_id: climate.thermostat_43
    data:
      temperature: 22
mode: single

Je teste autre chose depuis Node Red mais j’arrive au bout de mes connaissances NR, j’étais parti sur la récupération de température et depuis n8n m’attends :rofl:

Bob

ok je dois essayer automatisme mais je ne mis connais pas comment faire …
je vais regarder ce que je peux faire

Hop pour Node Red :
image

[{"id":"54100bd2cf37360c","type":"tab","label":"Flux 3","disabled":false,"info":"","env":[]},{"id":"77cb872558d88a90","type":"debug","z":"54100bd2cf37360c","name":"debug 33","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":980,"y":320,"wires":[]},{"id":"eed4c0b0d710be3f","type":"inject","z":"54100bd2cf37360c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"22","payloadType":"num","x":650,"y":320,"wires":[["1b0d7930c6634d50"]]},{"id":"1b0d7930c6634d50","type":"api-call-service","z":"54100bd2cf37360c","name":"Test Bob","server":"443ff1c5.63d78","version":7,"debugenabled":false,"action":"climate.set_temperature","floorId":[],"areaId":[],"deviceId":["4d55ba28bced5da729b06194b2d0cb72"],"entityId":["climate.thermostat_43"],"labelId":[],"data":"{\"temperature\": payload}","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","blockInputOverrides":true,"domain":"climate","service":"set_temperature","x":820,"y":320,"wires":[["77cb872558d88a90"]]},{"id":"443ff1c5.63d78","type":"server","name":"Home Assistant Bruno","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"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},{"id":"0d99a14cf9e78d58","type":"global-config","env":[],"modules":{"node-red-contrib-home-assistant-websocket":"0.79.0"}}]

Il faut modifier les entités dans le noeud mais ici ça fonctionne:

Data en json:

{"temperature": payload}

EDIT : parfois ça fonctionne au deuxième clic, tu me diras.
Les deux entrées crées ne servent que pour un affichage sur le dasboard.
Bob

les valeurs se modifie bien


mais pas sur mon thermostat c’est la liaison qui est mauvaises?

Regarde sur ton dasboard !
Pour moi:
NR OK:

Dasboard OK:
image

Thermostat dasboard OK:

Bob

je viens de reconfigurer mon appareil et maintenant ça fonctionne…
Mon script Node red fonctionne également :flexed_biceps:

maintenant plus qu’a améliorer tous ça merci

ça m’inquiete quand même si ma communication est pas bonne …

Ton system_mode est surprenant non ?
Voici ma conf (je rappelle que je n’utilise pas ce thermostat)


Mais je n’ai toujours pas la réponse sur ton modèle de thermostat !

Bob

Je vais avoir une nouvelle solution pour Noel alors :rofl:

Bob