Hello la communauté,
Petit update de ma conf avec quelques automatisations dont je suis assez content ^^
J’ai un peu galéré à les mettre en oeuvre mais avec un peu de lecture et chatgpt ça le fait !
1/ Temps restant de la batterie Huawei
Que la batterie soit en charge, en décharge, pleine ou presque épuisée, ce système affiche dynamiquement des informations clés et adapte les couleurs et les icônes pour une compréhension instantanée.
Fonctionnalités principales :
- Temps restant ou autonomie des batteries :
- Calcul dynamique du temps restant avant que les batteries soient entièrement rechargées ou totalement déchargées.
- Lorsque les batteries sont pleines, affiche « Aucun ».
- Lorsque les batteries sont totalement déchargées (au seuil critique de 5%), affiche « Batterie déchargée ».
- Libellé dynamique de l’état des batteries :
- Indique clairement les différents états :
- « Autonomie » (en décharge partielle).
- « Recharge » (en charge active).
- « Chargée (en veille) » lorsque la batterie est pleine et inactive.
- « Déchargée (en veille) » lorsque la batterie est au seuil critique et inactive.
- Carte personnalisée :
- Couleurs adaptées pour chaque état :
- Vert vif pour une batterie en charge.
- Orange vif pour une décharge partielle.
- Rouge orangé pour une batterie totalement déchargée (en veille).
- Gris clair pour une batterie pleine et inactive.
Temps restant en autonomie ou recharge de la batterie
# Temps restant en autonomie de batterie
- unique_id: "temps_restant_batteries"
sensor:
- name: "Temps Restant Batteries"
unique_id: "autonomie_batteries"
icon: mdi:battery-clock
state: >
{% set capacite_totale = 15000 %}
{% set soc = states('sensor.batteries_etat_de_la_capacite') | float(0) %}
{% set capacite_restante = capacite_totale * soc / 100 %}
{% set puissance = states('sensor.batteries_puissance_de_charge_decharge') | float(0) %}
{% if capacite_restante > 0 and puissance != 0 %}
{% if puissance > 0 %}
{% set heures = ((capacite_totale - capacite_restante) / puissance) | int %}
{% set minutes = ((((capacite_totale - capacite_restante) / puissance) * 60) % 60) | round(0) %}
{% elif puissance < 0 %}
{% set heures = (capacite_restante / (-puissance if puissance < 0 else puissance)) | int %}
{% set minutes = (((capacite_restante / (-puissance if puissance < 0 else puissance)) * 60) % 60) | round(0) %}
{% endif %}
{{ heures }}h et {{ minutes }}mn
{% elif soc == 100 %}
Aucun
{% elif soc <= 5 and puissance == 0 %}
Batterie déchargée
{% else %}
Batterie inactive
{% endif %}
Libellé dynamique pour l’état de la batterie
# Libellé dynamique pour l'état des batteries
- unique_id: "libelle_etat_batteries"
sensor:
- name: "Libellé État Batteries"
unique_id: "etat_batteries_label"
state: >
{% set puissance = states('sensor.batteries_puissance_de_charge_decharge') | float(0) %}
{% set soc = states('sensor.batteries_etat_de_la_capacite') | float(0) %}
{% if soc == 100 and puissance == 0 %}
Chargée (en veille)
{% elif soc <= 5 and puissance == 0 %}
Déchargée (en veille)
{% elif puissance < 0 %}
Autonomie
{% elif puissance > 0 %}
Recharge
{% else %}
Batterie inactive
{% endif %}
Carte personnalisée pour tableau de bord
type: entities
entities:
- type: custom:template-entity-row
entity: sensor.libelle_etat_batteries
name: Mode Batterie
icon: mdi:battery-heart-variant
card_mod:
style: |
:host {
--paper-item-icon-color:
{% if is_state('sensor.libelle_etat_batteries', 'Chargée (en veille)') %}
lightgrey; /* Gris clair pour l'icône */
{% elif is_state('sensor.libelle_etat_batteries', 'Déchargée (en veille)') %}
#ff4500; /* Rouge orangé pour l'icône en décharge totale */
{% elif states('sensor.batteries_puissance_de_charge_decharge') | float < 0 %}
#ffa500; /* Orange vif pour l'icône en décharge partielle */
{% else %}
#4dff4d; /* Vert vif pour l'icône en charge */
{% endif %};
}
.state {
color:
{% if is_state('sensor.libelle_etat_batteries', 'Chargée (en veille)') %}
lightgrey; /* Gris clair pour la valeur */
{% elif is_state('sensor.libelle_etat_batteries', 'Déchargée (en veille)') %}
#ff4500; /* Rouge orangé pour la valeur en décharge totale */
{% elif states('sensor.batteries_puissance_de_charge_decharge') | float < 0 %}
#ffa500; /* Orange vif pour la valeur en décharge partielle */
{% else %}
#4dff4d; /* Vert vif pour la valeur en charge */
{% endif %};
}
- entity: sensor.temps_restant_batteries
name: Temps Restant
icon: mdi:timer-outline
- entity: sensor.batteries_puissance_de_charge_decharge
name: Charge / Décharge
- entity: sensor.batteries_etat_de_la_capacite
name: Niveau de Charge
show_header_toggle: false
state_color: false
Ce qui donne ceci (ici en orange car batterie en décharge):
2/ NON, ce n’est pas encore l’heure de se lever !
Mon fils de 5 ans a pour habitude de se lever avant 7h00 le we, ça pique un peu pour les parents que nous sommes ^^
Grâce à cette automation, la lampe Bloom Nolan s’illumine dynamiquement en rouge signifiant qu’il est trop tôt (avant 08h00) pour se lever et en vert quand il le peut (après 08h00) ! La lampe est commandée par le motion sensor et le smart buton à sa disposition. Ainsi, si nous devons entrer dans sa chambre la nuit, la lumière s’allumera avec une faible intensité. Et si Nolan se demande s’il peut se lever, il appuiera simplement sur son bouton et la lumière s’allumera soit en vert, soit en rouge, lui signifiant ainsi s’il peut se lever ou non.
Détection de mouvement
alias: Allume Bloom Nolan sur détection
description: Allume la lampe bloom Nolan (hue) sur détection Motion Sensor Nolan (hue)
triggers:
- trigger: state
entity_id:
- binary_sensor.hue_motion_sensor_4_mouvement
from: "off"
to: "on"
conditions:
- condition: numeric_state
entity_id: sensor.hue_motion_sensor_4_eclairement
below: 30
- condition: time
after: "22:00:00"
before: "09:00:00"
actions:
- choose:
- conditions:
- condition: time
after: "19:00:00"
before: "07:59:00"
sequence:
- action: light.toggle
metadata: {}
data:
brightness_pct: 100
color_name: indianred
target:
entity_id: light.hue_bloom_1
- conditions:
- condition: time
after: "08:00:00"
before: "18:59:00"
sequence:
- action: light.toggle
metadata: {}
data:
brightness_pct: 100
color_name: green
target:
entity_id: light.hue_bloom_1
mode: restart
Smart button Hue Nolan
alias: Bouton Nolan - Lampe Bloom
description: >-
Gestion de la lampe avec temporisation pour éviter les appuis multiples et
logique de couleur selon l'heure.
triggers:
- entity_id:
- event.hue_smart_button_2_bouton_1
attribute: event_type
trigger: state
to: long_press
- entity_id:
- event.hue_smart_button_2_bouton_1
attribute: event_type
trigger: state
to: short_release
conditions:
- condition: time
after: "18:00:00"
before: "10:00:00"
actions:
- choose:
- conditions:
- condition: time
after: "19:00:00"
before: "07:59:00"
sequence:
- action: light.toggle
metadata: {}
data:
brightness_pct: 100
color_name: indianred
target:
entity_id: light.hue_bloom_1
- conditions:
- condition: time
after: "08:00:00"
before: "18:59:00"
sequence:
- action: light.toggle
metadata: {}
data:
brightness_pct: 100
color_name: green
target:
entity_id: light.hue_bloom_1
mode: queued
max: 10
Extinction automatique de la lampe après 5mn
alias: Eteint automatiquement lampe bloom Nolan
description: ""
triggers:
- trigger: state
entity_id:
- light.hue_bloom_1
to: "on"
for:
hours: 0
minutes: 5
seconds: 7
conditions: []
actions:
- action: light.turn_off
metadata: {}
data:
transition: 60
target:
entity_id: light.hue_bloom_1
mode: restart
J’ai aussi ajouté un suivi des déclenchements :
alias: Notification Hue Bloom Nolan allumée
description: >
Envoie une notification Telegram quand la lampe hue_bloom_1 Nolan s'allume, en
identifiant si l'origine est le bouton Hue Smart Button, un capteur de
mouvement, ou une source inconnue.
triggers:
- event_type: event.hue_smart_button_2_bouton_1
event_data:
event_type: short_release
trigger: event
- entity_id: light.hue_bloom_1
to: "on"
trigger: state
conditions: []
actions:
- delay: 1
- data:
message: >
{% set cause = 'inconnu' %} {% if trigger.platform == 'event' and
trigger.event.event_type == 'event.hue_smart_button_2_bouton_1' %}
{% set cause = 'le bouton Hue Smart Button' %}
{% elif is_state('binary_sensor.hue_motion_sensor_4_mouvement', 'on') %}
{% set cause = 'le capteur de mouvement Hue Motion Sensor' %}
{% endif %} La lampe Hue Bloom 1 s'est allumée à {{
now().strftime('%H:%M:%S') }} et a été déclenchée par {{ cause }}.
action: telegram_bot.send_message
mode: single
3/ Notification de production solaire journalière
Vue sur Domo-blog.fr
Chaque soir, à 18h, je rçois un rapport détaillé de la production solaire. Cette automation m’informe sur la quantité d’énergie gratuite générée, la charge actuelle de la batterie, et de ma consommation énergétique.
Fonctionnalités principales :
- Envoi de notifications via Telegram :
- À 18h, une notification est envoyée pour résumer la journée.
- Les messages sont personnalisés en fonction de la production solaire.
- Trois niveaux de production :
- Petite journée de production (entre 1 kWh et 5 kWh) : Un message met en évidence la faible production due à une météo défavorable.
- Production moyenne (entre 5 kWh et 15 kWh) : Un message souligne une météo changeante et une production correcte.
- Excellente production (plus de 15 kWh) : Un message célèbre une journée très productive grâce à un ensoleillement optimal.
- Détails de la journée :
- Production totale et par système (Huawei et Sunology).
- Niveau de charge des batteries.
- Import/export énergétique EDF.
- Information sur la couleur Tempo actuelle et du lendemain.
Code de l’automatisation
alias: Bilan - Notification de production solaire du jour
description: Notification quotidienne via Telegram de la production solaire Huawei et Sunology, avec consommation et export EDF.
trigger:
- platform: time
at: "18:00:00"
condition: []
action:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.total_daily_solar_production
above: 1
below: 5
sequence:
- service: telegram_bot.send_message
data:
title: ⚡ *Petite journée de Production*
message: >
--------------------------------------------------------------
Aujourd’hui est un jour {{
states("sensor.rte_tempo_couleur_actuelle_visuel") }}, la maison
n'a produit que *{{ states("sensor.total_daily_solar_production") }} kWh* d'énergie gratuite en raison du mauvais temps.
☀️ Détail par îlot de Production :
--------------------------------------------------------------
+ Huawei : *{{ states("sensor.huawei_daily_production_rounded") }} kWh*
+ Sunology : *{{ states("sensor.sunology_daily_production") }} kWh*
--------------------------------------------------------------
🔋 Les batteries sont actuellement chargées à *{{
states("sensor.batteries_etat_de_la_capacite") | int }}%* pour
encore plus d'énergie gratuite qui sera utilisée cette nuit.
📶 Détail de votre Consommation :
--------------------------------------------------------------
+ Import : *{{ "%.2f" | format(states("sensor.daily_import_energy") | float(0)) }} kWh*
+ Export : *{{ "%.2f" | format(states("sensor.daily_export_energy") | float(0)) }} kWh*
--------------------------------------------------------------
Pour rappel: demain sera un jour
{{ states("sensor.rte_tempo_prochaine_couleur_visuel") }}.
Je vous souhaite une bonne fin de journée.
- conditions:
- condition: numeric_state
entity_id: sensor.total_daily_solar_production
above: 5
below: 15
sequence:
- service: telegram_bot.send_message
data:
title: ⚡⚡ *Production Solaire moyenne*
message: >
--------------------------------------------------------------
Aujourd’hui est un jour {{
states("sensor.rte_tempo_couleur_actuelle_visuel") }}, la maison
a produit *{{ states("sensor.total_daily_solar_production") }} kWh* d'énergie gratuite, grâce à une météo changeante.
☀️ Détail par îlot de Production :
--------------------------------------------------------------
+ Huawei : *{{ states("sensor.huawei_daily_production_rounded") }} kWh*
+ Sunology : *{{ states("sensor.sunology_daily_production") }} kWh*
--------------------------------------------------------------
🔋 Les batteries sont actuellement chargées à *{{
states("sensor.batteries_etat_de_la_capacite") | int }}%* pour
encore plus d'énergie gratuite qui sera utilisée cette nuit.
📶 Détail de votre Consommation :
--------------------------------------------------------------
+ Import : *{{ "%.2f" | format(states("sensor.daily_import_energy") | float(0)) }} kWh*
+ Export : *{{ "%.2f" | format(states("sensor.daily_export_energy") | float(0)) }} kWh*
--------------------------------------------------------------
Pour rappel: demain sera un jour
{{ states("sensor.rte_tempo_prochaine_couleur_visuel") }}.
Je vous souhaite une bonne fin de journée.
- conditions:
- condition: numeric_state
entity_id: sensor.total_daily_solar_production
above: 15
sequence:
- service: telegram_bot.send_message
data:
title: ⚡⚡⚡ *Excellente Production Solaire*
message: >
--------------------------------------------------------------
Aujourd’hui est un jour {{
states("sensor.rte_tempo_couleur_actuelle_visuel") }}, la maison
a produit une excellente quantité de
*{{ states("sensor.total_daily_solar_production") }} kWh*
d'énergie gratuite !
☀️ Détail par îlot de Production :
--------------------------------------------------------------
+ Huawei : *{{ states("sensor.huawei_daily_production_rounded") }} kWh*
+ Sunology : *{{ states("sensor.sunology_daily_production") }} kWh*
--------------------------------------------------------------
🔋 Les batteries sont actuellement chargées à *{{
states("sensor.batteries_etat_de_la_capacite") | int }}%* pour
encore plus d'énergie gratuite qui sera utilisée cette nuit.
📶 Détail de votre Consommation :
--------------------------------------------------------------
+ Import : *{{ "%.2f" | format(states("sensor.daily_import_energy") | float(0)) }} kWh*
+ Export : *{{ "%.2f" | format(states("sensor.daily_export_energy") | float(0)) }} kWh*
--------------------------------------------------------------
Pour rappel: demain sera un jour
{{ states("sensor.rte_tempo_prochaine_couleur_visuel") }}.
Je vous souhaite une bonne fin de journée.
mode: single
J’ai aussi mis ces infos sur le tableau de bord :
Code de la carte sur le tableau de bord
type: entities
entities:
- type: custom:multiple-entity-row
name: Production Solaire
entity: sensor.total_daily_solar_production
state_header: Total
- type: custom:multiple-entity-row
name: Par Zone
entity: sensor.huawei_daily_production_rounded
state_header: Huawei
entities:
- entity: sensor.sunology_daily_production
name: Sunology
unit: kWh
- type: custom:multiple-entity-row
name: Consommation
entity: sensor.daily_import_energy
state_header: Import
entities:
- entity: sensor.daily_export_energy
name: Export
unit: kWh
state_color: false
show_header_toggle: false
4/ Tu vas être à la bourre… Encore !
On a tendance à trainer un peu trop longtemps sous la douche et dans la salle de bain le matin.
J’ai donc mis en place une automatisation toute simple qui, lors des jours de travail, annonce simplement l’heure tous les 1/4 d’heure via l’enceinte connectée de la salle de bain.
Code de l’annonce de l’heure
alias: Annonce de l'heure les jours travaillés sur SONOS SDB
description: >-
Annonce l'heure toutes les 30 minutes entre 6h00 et 8h00 si c'est un jour
travaillé avec TTS Cloud de Nabu Casa.
triggers:
- minutes: /15
trigger: time_pattern
conditions:
- condition: state
entity_id: binary_sensor.jour_de_travail
state: "on"
- condition: time
after: "06:00:00"
before: "08:30:00"
- condition: state
entity_id: input_boolean.absent
state: "off"
actions:
- target:
entity_id: media_player.sdb_parents
data:
message: >
Il est maintenant {{ now().hour }} heures {% if now().minute != 0 %} et
{{ now().minute }} minutes{% endif %}.
action: tts.cloud_say
mode: single
Voilà, c’est à peu prés tout
Si vous aussi vous avez des automations sympas et qui vous rendent service, ce serait sympa de les partager, c’est toujours inspirant et utile aux débutants comme moi ^^