Carte pour Thermostat Netatmo

oui l’état se mets bien à jour mais pas immediatement.

1 « J'aime »

J’ai ajouté une action dans les scripts incrémentation/décrémentation afin que la consigne affichée sur la carte soit mise à jour instantanément.

Si tu veux essayer, voici le code complet de chaque script,
Mais avant il faut ajouter un module python_script à HACS, dont voici la procédure:


Ajouter cette ligne dans le fichier configuration.yaml.

python_script:

Créer un dossier nommé python_scripts dans le répertoire config

Créer un fichier avec le code ci-dessous et le nommer set_state.py

Ajouter le fichier set_state.py dans le répertoire python_scripts.

Redémarrer Hassio

set_state.py
#==================================================================================================
#  python_scripts/set_state.py 
#==================================================================================================

# https://community.home-assistant.io/t/how-to-manually-set-state-value-of-sensor/43975/8
# voici un script mis à jour qui a été généralisé pour pouvoir définir n'importe quel attribut

#--------------------------------------------------------------------------------------------------
# Set the state or other attributes for the entity specified in the Automation Action
# Définir l'état ou d'autres attributs pour l'entité spécifiée dans l'action d'automatisation
#--------------------------------------------------------------------------------------------------

inputEntity = data.get('entity_id')
if inputEntity is None:
    logger.warning("===== entity_id is required if you want to set something.")
else:    
    inputStateObject = hass.states.get(inputEntity)
    inputState = inputStateObject.state
    inputAttributesObject = inputStateObject.attributes.copy()

    for item in data:
        newAttribute = data.get(item)
        logger.debug("===== item = {0}; value = {1}".format(item,newAttribute))
        if item == 'entity_id':
            continue            # already handled
        elif item == 'state':
            inputState = newAttribute
        else:
            inputAttributesObject[item] = newAttribute
        
    hass.states.set(inputEntity, inputState, inputAttributesObject)
    

    
#--------------------------------------------------------------------------------------------------    
#Avec ce script en place, l'action pourrait être :
#--------------------------------------------------------------------------------------------------


#  action:
#service: python_script.set_state
#data_template:
#  entity_id: Binary_sensor.sensor1
#  state: ON


#    ou bien

#service: python_script.set_state
#data_template:
#  entity_id: sensor.netatmo_temperature_consigne
#  state: '{{(states.sensor.netatmo_temperature_consigne.state | float + 0.5)}}'




#--------------------------------------------------------------------------------------------------
# la bonne façon de passer un argument au script python est la suivante 
# Remarquez que j'ai utilisé service_data : à la place de data_template 
#--------------------------------------------------------------------------------------------------


#type: button
#entity: sensor.irrigation_icon_1
#tap_action:
#  action: call-service
#  service: python_script.hello_world
#  service_data:
#    nombre: jaime

Les deux scripts:

netatmo_increment_consigne
alias: netatmo_increment_consigne
sequence:
  - service: climate.set_temperature
    target:
      device_id: 5e9dcba177a540fd9e89c5cc9e9ecce0
    data:
      temperature: '{{(states.sensor.netatmo_temperature_consigne.state | float + 0.5)}}'
  - service: python_script.set_state
    data_template:
      entity_id: sensor.netatmo_temperature_consigne
      state: '{{(states.sensor.netatmo_temperature_consigne.state | float + 0.5)}}'
mode: single
netatmo_decrement_consigne
alias: netatmo_decrement_consigne
sequence:
  - service: climate.set_temperature
    target:
      device_id: 5e9dcba177a540fd9e89c5cc9e9ecce0
    data:
      temperature: '{{(states.sensor.netatmo_temperature_consigne.state | float - 0.5)}}'
  - service: python_script.set_state
    data_template:
      entity_id: sensor.netatmo_temperature_consigne
      state: '{{(states.sensor.netatmo_temperature_consigne.state | float - 0.5)}}'
mode: single
1 « J'aime »

Bonjour Telenaze,
et bravo pour cette carte. Super travail.
Je suis en train de m’en inspirer pour intégrer mon netatmo. Je voudrais essayer d’ajouter le niveau approximatif de pellet avec une bar-card plus un script qui m’envoie une notification des que j’arrive vers le mini. Sachant que je dois recharger après 6 à 7h de chauffe environ, mais j’avoue que je galère un peu…si quelqu’un à une idée!!!

Salut @yves_cz ,

Ta demande sort un peu du cadre de ce post, le mieux pour toi et si on être efficace serait que tu crée un nouveau post en exposant le travail que tu à déjà mené et si besoin nous te viendrons en aide.
:wink:

1 « J'aime »

@telenaze
Salut, je viens de voir ton message (je 'n’ai pas reçu de notification) je vais tester ça. Je te tiens au courant dès que possible.
Merci

Bonjour,
A la lecture des différents échanges, je me suis dit qu’il serait intéressant de vous partager une évolution de cette carte.
Pour réaliser cette carte, je réutilise 90% des éléments de la version initiale.
Voici l’aperçu de cette carte, toutes les informations d’installation sont précisées dans mon premier post.
Merci à @DcJona qui m’as fortement inspiré. :wink:
Carte Netatmo3

1 « J'aime »

Super, je vais mettre à jour.
Par contre, j’ai toujours le problème lorsque j’appuie sur + ou.- la température ne change pas (sur la carte HA) dans ta vidéo, on voit que la température change… J’ai pourtant fait le python_script que tu as mis mais rien n’y fait :confused:

tu as aussi modifié les scripts ?
et retrouve bien le service dans dev:

Oui j’ai modifié.
En fait, si je vais dans les scripts et que je fais exécuter le script, ça remonte bien sur mon netatmo mais pas sur ma carte de HA.
Sur la carte à part entity: il y a autre chose à remplacer ? J’ai bien mis mon numéro netatmo, ça c’est bon.
Aussi lorsque j’appuie sur absent ou hors gel et shuffle j’ai ce message (voir photo)
Merci de ton aide.

Dans le script, c’est cette partie qui change le sensor netatmo_temperature_consigne et qui met donc à jour la température de consigne dans ha.
Tu retrouve bien le service dans dev ?

  - service: python_script.set_state
    data_template:
      entity_id: sensor.netatmo_temperature_consigne
      state: '{{(states.sensor.netatmo_temperature_consigne.state | float + 0.5)}}'

pour l’erreur, j’ai l’impression que tu n’as pas crée tous les nouveaux scripts.
Si tu ne veux plus voir le « °C » dans la température courante, reprend le sensor netatmo_temperature_courante, je l’ai mis à jour pour cela.

Si j’ai bien créé tous les scripts.

Dans le fichier set_state.py, j’ai collé ça:

#==================================================================================================
#  python_scripts/set_state.py 
#==================================================================================================

# https://community.home-assistant.io/t/how-to-manually-set-state-value-of-sensor/43975/8
# voici un script mis à jour qui a été généralisé pour pouvoir définir n'importe quel attribut

#--------------------------------------------------------------------------------------------------
# Set the state or other attributes for the entity specified in the Automation Action
# Définir l'état ou d'autres attributs pour l'entité spécifiée dans l'action d'automatisation
#--------------------------------------------------------------------------------------------------

inputEntity = data.get('select.netatmo_poele ')
if inputEntity is None:
    logger.warning("===== entity_id is required if you want to set something.")
else:    
    inputStateObject = hass.states.get(inputEntity)
    inputState = inputStateObject.state
    inputAttributesObject = inputStateObject.attributes.copy()

    for item in data:
        newAttribute = data.get(item)
        logger.debug("===== item = {0}; value = {1}".format(item,newAttribute))
        if item == 'select.netatmo_poele':
            continue            # already handled
        elif item == 'state':
            inputState = newAttribute
        else:
            inputAttributesObject[item] = newAttribute
        
    hass.states.set(inputEntity, inputState, inputAttributesObject)
    

    
#--------------------------------------------------------------------------------------------------    
#Avec ce script en place, l'action pourrait être :
#--------------------------------------------------------------------------------------------------


#  action:
#service: python_script.set_state
#data_template:
#  entity_id: Binary_sensor.sensor1
#  state: ON


#    ou bien

#service: python_script.set_state
#data_template:
#  entity_id: sensor.netatmo_temperature_consigne
#  state: '{{(states.sensor.netatmo_temperature_consigne.state | float + 0.5)}}'




#--------------------------------------------------------------------------------------------------
# la bonne façon de passer un argument au script python est la suivante 
# Remarquez que j'ai utilisé service_data : à la place de data_template 
#--------------------------------------------------------------------------------------------------


#type: button
#entity: sensor.irrigation_icon_1
#tap_action:
#  action: call-service
#  service: python_script.hello_world
#  service_data:
#    nombre: jaime

Il ne faut rien changer dans le fichier set_state.py

Bin je n’ai rien changé. Là, je ne comprends pas. :confused::thinking:
Après, tu dis ce faire une ligne dans configuration.yaml (python_script:) il n’y a rien à mettre dessous ?

non, c’est très bien comme cela
config python
Tu dit que nu n’as rien changé, pourtant je vois ça dans le fichier set_state.py

Ok. Et il faut laisser les sensor créé précédemment ?

Car là je ne sais plus quoi faire…:cry:

oui, tu reprends les mêmes sensors.
Ta carte est bonne puisque tu vois bien les infos de ton thermostat,c’est juste le python qui ne marche pas, mais cela n’empêche pas la carte de fonctionner.

D’accord. Pour moi, j’ai tout suivi à la lettre mais dommage que python n’a pas l’air de fonctionner. Aussi, avec ta version juste avant, c’était pareil. Les boutons de la carte ne fonctionnaient pas. :thinking: Donc est-ce python ou autre chose.

si tu veux on peut continuer sur discord ce sera plus simple.