Parfait !
je suis certain que cela servira à d’autres utilisateurs Netatmo.
Bonjour à tous,
Merci Fabien_Jouet, cela m’a été très utile.
Voici le résultat :
Juste un petit détails mais serait-il possible d’intégrer dans la carte Thermostat la possibilité de choisir le type de planning?
Salut,
L’API ne permet pas de changer de planning,mais seulement d’afficher le planning en cours. Peut être que cela sera possible dans une future évolution de l’intégration.
Salut,
Merci pour ton retour telenaze.
salut tu peux ajouter sa en plus
- type: state-icon
entity: select.netatmo_maison
title: Planning
icon: mdi:calendar
style:
top: 85%
left: 25%
'--paper-item-icon-color': rgb(68,68,68)
j’ai testé et le changement de planning est bien pris en compte
En fait cela ne permet pas de changer de planning, mais juste de voir le planning en cours.
@ Fabien_Jouet Tu confirmes ?
Je suis surpris parce-qu’un state-icon
ne fait que remonter un état.
Comment tu fait pour envoyer la commande de changement au thermostat ?
Merci @Fabien_Jouet .
@telenaze, je te confirme pouvoir faire le changement de planning via la carte. Dans l’application Netatmo, il y a bien changement de planning mais le retour sur HA ne se fait pas correctement. J’ai pourtant attendu 1 h, mais pour HA, il n’y a jamais eu changement de planning.
Je dois passer à coté de quelque chose.
Voici comment je fais, mais comment on valide le changement de planning ?
Je viens de rebooter hassio et maintenant cela fonctionne
Donc il faut juste changer de planning et fermer la fenêtre.
Un super travail
Par contre je fais un piètre utilisateur
J’ai une carte qui semble correct
Mais quand je clique sur + ou - il se passe un temps énorme voir cela ne change pas du tout la consigne même sur la carte thermostat classique
J’ai rechargé et relancer HA et la mise à jour du thermostat se réalise plus vite avec la second carte !
Je sais pas si cela vous fait la même chose chez vous ?
Sinon j’ai un second problème qui se situe sur les 3 boutons du bas.
Quand je clique dessus il ne veut pas du tout lancer le service !
Je ne vois pas pourquoi pour le coup, je dois louper un truc mais quoi !
Merci de votre aide
Voici le script
Le code des scripts
netatmo_mode_absent:
alias: netatmo_mode_absent
sequence:
- service: climate.set_preset_mode
target:
# Remplacer "netatmo_entree" par le nom de votre thermostat
entity_id: climate.netatmo_smart_thermostat
data:
preset_mode: away
- service: python_script.set_state
data_template:
entity_id: sensor.netatmo_preset_mode
state: away
mode: single
netatmo_mode_hors_gel:
alias: netatmo_mode_hors_gel
sequence:
- service: climate.set_preset_mode
target:
# Remplacer "netatmo_entree" par le nom de votre thermostat
entity_id: climate.netatmo_smart_thermostat
data:
preset_mode: Frost Guard
- service: python_script.set_state
data_template:
entity_id: sensor.netatmo_preset_mode
state: Frost Guard
mode: single
netatmo_mode_schedule:
alias: netatmo_mode_schedule
sequence:
- service: climate.set_preset_mode
target:
# Remplacer "netatmo_entree" par le nom de votre thermostat
entity_id: climate.netatmo_smart_thermostat
data:
preset_mode: Schedule
- service: python_script.set_state
data_template:
entity_id: sensor.netatmo_preset_mode
state: Schedule
mode: single
Les sensors
Le code des sensors
- platform: template
netatmo_temperature_courante:
friendly_name: Température Maison
device_class: temperature
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'current_temperature') }}"
- platform: template
netatmo_temperature_consigne:
friendly_name: température consigne Maison
device_class: temperature
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'temperature') }}"
- platform: template
netatmo_niveau_batterie:
friendly_name: Niveau Batterie Maison
device_class: battery
unit_of_measurement: "%"
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'battery_level') }}"
- platform: template
netatmo_hvac_action:
friendly_name: Hvac action Maison
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'hvac_action') }}"
- platform: template
netatmo_hvac_modes:
friendly_name: Hvac modes Maison
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'hvac_modes') }}"
- platform: template
netatmo_preset_mode:
friendly_name: Preset mode Maison
value_template: "{{ state_attr('climate.netatmo_smart_thermostat', 'preset_mode') }}"
Script Python
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)
Salut jerome6994 merci pour les encouragements.
De ce que je vois ton Python script ne reflète pas celui que j’ai mis.
As tu bien recopié le texte sans aucun changement dans le fichier « set_state.py » ?
Je te mets ci-dessous le texte nettoyé de tous les lignes commentées.
Python script
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)
Bonsoir @telenaze
Merci pour ton retour rapide
J’ai repris mon message car l’intégration du script Python était pas très bien joli en mise en forme et j’avais pas fait attention.
Bref j’ai regardé et il semble que j’avais bien la même chose mais pas sécurité j’ai repris à nouveau ton code.
Nous sommes d’accord il y a rien à changer dedans même pas entity_id
Je n’ai pas mis le code de la carte au cas où :
mon code corrigé sur ma carte
mon code corrigé sur la carte
type: picture-elements
image: /local/devices/Netatmo_background_409x762_2.png
elements:
- type: image
entity: climate.netatmo_smart_thermostat
image: /local/devices/fioul.png
title: null
tap_action:
action: none
style:
top: 10%
left: 90%
width: 10%
- type: image
entity: climate.netatmo_smart_thermostat
title: Up Consigne
tap_action:
action: call-service
service: Script.netatmo_increment_consigne
hold_action:
action: more-info
image: /local/devices/Netatmo_up.png
style:
top: 52.6%
left: 76.5%
width: 6%
- type: image
entity: climate.netatmo_smart_thermostat
title: Down Consigne
tap_action:
action: call-service
service: Script.netatmo_decrement_consigne
hold_action:
action: more-info
image: /local/devices/Netatmo_down.png
style:
top: 52.6%
left: 56.5%
width: 6%
- type: image
entity: sensor.netatmo_hvac_action
title: Témoin Chauffe
tap_action:
action: none
image: /local/devices/Netatmo_chauffe.png
style:
top: 58%
left: 25.5%
width: 7%
state_filter:
heating: brightness(100%) saturate(1)
idle: opacity(0%)
- type: image
entity: sensor.netatmo_preset_mode
title: Temoin Manual
tap_action:
action: none
image: /local/devices/Netatmo_manual.png
style:
top: 30%
left: 39%
width: 9%
state_filter:
manual: brightness(100%) saturate(1)
Schedule: opacity(0%)
away: opacity(0%)
Frost Guard: opacity(0%)
- type: image
entity: sensor.netatmo_preset_mode
title: Mode de fonctionnement
tap_action:
action: none
image: /local/devices/Absent.png
style:
top: 29.8%
left: 38.6%
width: 11%
state_filter:
away: brightness(100%) saturate(1)
Schedule: opacity(0%)
manual: opacity(0%)
Frost Guard: opacity(0%)
- type: image
entity: sensor.netatmo_preset_mode
title: Mode de fonctionnement
tap_action:
action: none
image: /local/devices/Hors Gel.png
style:
top: 29.8%
left: 38.6%
width: 11%
state_filter:
Frost Guard: brightness(100%) saturate(1)
Schedule: opacity(0%)
manual: opacity(0%)
away: opacity(0%)
- type: image
entity: sensor.netatmo_preset_mode
title: Mode de fonctionnement
tap_action:
action: none
image: /local/devices/Automatique.png
style:
top: 29.9%
left: 39%
width: 11%
state_filter:
Schedule: brightness(100%) saturate(1)
away: opacity(0%)
manual: opacity(0%)
Frost Guard: opacity(0%)
- type: state-label
entity: sensor.netatmo_temperature_courante
unit_of_measurement: .
title: Température Actuelle
tap_action:
action: null
style:
top: 48%
left: 25.5%
font-size: 1.6em
color: black
font-weight: 600
- type: state-label
entity: sensor.netatmo_temperature_consigne
title: Température de consigne
tap_action:
action: null
style:
top: 25%
left: 25.5%
font-size: 1em
color: white
font-weight: 600
- type: state-label
entity: climate.chambre_parents
attribute: friendly_name
style:
top: 25%
left: 66%
font-size: 1.4em
color: black
font-weight: 400
- type: state-label
entity: sensor.chambre_parents_battery_percent
title: '% Batterie'
tap_action:
action: none
style:
top: 79%
left: 8.3%
font-size: 0.7em
color: grey
font-weight: 600
- type: state-icon
entity: sensor.chambre_parents_battery_percent
title: Niveau Batterie
icon: mdi:battery-high
tap_action:
action: more-info
style:
top: 86%
left: 8%
'--paper-item-icon-color': grey
- type: image
entity: climate.netatmo_smart_thermostat
title: null
tap_action:
action: none
image: /local/devices/bouton_fond-300x98.png
style:
top: 83.2%
left: 71%
width: 58%
- type: image
entity: climate.netatmo_smart_thermostat
title: Passer en Mode Absent
tap_action:
action: call-service
service: Script.netatmo_mode_absent
image: /local/devices/Absent.png
style:
top: 83%
left: 53%
width: 12%
- type: image
entity: climate.netatmo_smart_thermostat
title: Passer en Mode Hors Gel
tap_action:
action: call-service
service: Script.netatmo_mode_hors_gel
image: /local/devices/Hors Gel.png
style:
top: 83.2%
left: 79.5%
width: 14.5%
- type: image
entity: climate.netatmo_smart_thermostat
title: Passer en Mode Automatique
tap_action:
action: call-service
service: Script.netatmo_mode_schedule
image: /local/devices/Automatique.png
style:
top: 83.2%
left: 67%
width: 10%
oui tu ne change absolument rien.
Avant de mettre en cause de code de la carte sur l’appel d’un scripts il faut tester les scripts.
Donc teste les scripts des trois modes en les exécutant directement depuis "configuration/Scripts et si tu as toujours un message d’erreur, c’est que tu as commis une erreur sur python script.
Pour préciser, par exemple le script « netatmo_mode_absent » appelle deux services.
le 1er,
- service: climate.set_preset_mode
target:
entity_id: climate.netatmo_entree
data:
preset_mode: away
qui demande au thermostat de passer en mode away (absent).
le deuxième,
- service: python_script.set_state
data_template:
entity_id: sensor.netatmo_preset_mode
state: away
qui modifie l’état du sensor « netatmo_preset_mode » en away (absent).
Donc si tu veux tester chaque service individuellement il te suffit de supprimer les lignes de code du 1er ou du 2eme service.
J’ai repris de zéro et bien pris les évolutions de script, bien changé l’ID et le tour est joué cela fonctionne.
Il y a une latence certaine quand on sélectionne un mode sur le retour affichage de la temlpérarture consigne mais ça fonctionne.
Je tente de mettre un bouton off pour le passage en été, le fonctionnement semblait un peu étrange, mais comme pas instantané et que je ne suis pas toujours patient à refaire pour voir
Merci pour tout encore une fois
Bonjour
Pour dire que cela fonctionne maintenant.
J’ai repris le sujet de 0 et j’avais du faire une erreur mais je ne sais pas trop où ni comment (enfin si en voulant aller trop vite certainement)
Je bloque maintenant sur le on/off du thermostat par contre je n’arrive pas à le mettre en place.
Est-ce que quelqu’un à fait la manip ?
De ce que j’ai pu constaté, il faut mettre une température inférieur à 7° pour passer en off et pour redémarré il faut obligatoirement remonter la température à partir du thermostat.
Le mieux ne serait-il pas de mettre absent plutôt que off ?
Alors l’été je mets toujours OFF par habitude comme ceci cela ne démarre jamais.
Bon ensuite je coupe aussi la chaudière
J’ai fait un script OFF et j’ai fait le même avec ON
Script Off
netatmo_mode_off:
alias: netatmo_mode_off
sequence:
- service: climate.turn_off
target:
entity_id: climate.maison
- service: python_script.set_state
data_template:
entity_id: climate.maison
mode: single
icon: phu:wiser-heating-ctl-off
Maintenant ce que je ne sais pas encore faire sur HA c’est associer ces deux scripts à un bouton ON/OFF comme j’ai commencer à mettre sur le thermostat mais qui m’oblige à faire un bouton supplémentaire alors que j’aimerai qu’i soit l’un sur l’autre en somme
Sinon voilà j’ai tout implémenté et cela fonctionne c’est top merci pour vos travaux.
Je vais certainement réduite un peu la taille des cartes en hauteur
Superbe travail qui améliore encore la cartounettte !
Je vois qu’il existe un sensor :binary_sensor.netatmo_chauffage_on
Tu pourrait peut être l’utiliser pour mettre une condition dans ton script.
Sinon il faut utiliser hvac_modes: auto, heat, off