diff --git a/home-assistant /template.yaml b/home-assistant /template.yaml deleted file mode 100644 index 5d52534..0000000 --- a/home-assistant /template.yaml +++ /dev/null @@ -1,349 +0,0 @@ -- sensor: - - name: "timer_ch_duration" - state: "{{ (states('input_number.timer_ch') | int * 60) | int }}" - unit_of_measurement: "seconds" - - - name: "Grocy Chores Weekly" - unique_id: grocy_chores_weekly - state: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'weekly') - | list | count }} - attributes: - chores: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'weekly') - | list }} - - - name: "Grocy Chores Monthly" - unique_id: grocy_chores_monthly - state: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'monthly') - | list | count }} - attributes: - chores: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'monthly') - | list }} - - - name: "Grocy Chores Adaptive" - unique_id: grocy_chores_adaptive - state: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'adaptive') - | list | count }} - attributes: - chores: > - {{ state_attr('sensor.grocy_chores', 'chores') - | selectattr('period_type', 'equalto', 'adaptive') - | list }} - - - name: "Lumieres Allumees" - unique_id: lumieres_allumees - state: > - {{ expand('light.lumieres') - | selectattr('state', 'eq', 'on') | list | count }} - unit_of_measurement: "allumée(s)" - - - name: "Volets Ouverts" - unique_id: volets_ouverts - state: > - {{ expand('cover.volets') - | selectattr('state', 'eq', 'open') | list | count }} - unit_of_measurement: "ouvert(s)" - - - name: "Prises Actives" - unique_id: prises_actives - state: > - {{ expand('switch.prises') - | selectattr('state', 'eq', 'on') | list | count }} - unit_of_measurement: "active(s)" - - - name: "Ouvertures Ouvertes" - unique_id: ouvertures_ouvertes - state: > - {{ expand('binary_sensor.ouvrants') - | selectattr('state', 'eq', 'on') | list | count }} - unit_of_measurement: "ouvert(s)" - - - name: "Watchman Missing" - unique_id: watchman_missing - state: > - {{ state_attr("sensor.watchman_missing_entities", "entities") - | selectattr('state', 'eq', 'missing') | list | count }} - icon: mdi:alert-circle - - - name: "Watchman Unavail" - unique_id: watchman_unavail - state: > - {{ state_attr("sensor.watchman_missing_entities", "entities") - | selectattr('state', 'eq', 'unavail') | list | count }} - icon: mdi:alert-circle-outline - - - name: "HACS Intégrations count" - unique_id: hacs_integrations_count - state: > - {{ integration_entities('hacs') | list | count }} - icon: mdi:package-variant - - - name: "Grocy - Corvées hebdo réalisées" - unique_id: grocy_weekly_done - unit_of_measurement: "corvées" - icon: mdi:check-circle - state: > - {% set chores = state_attr('sensor.grocy_chores_weekly', 'chores') %} - {% if chores %} - {% set week_start = now().replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(days=now().weekday()) %} - {{ chores | selectattr('last_tracked_time', 'ne', None) - | selectattr('last_tracked_time', 'ge', week_start.isoformat()) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Grocy - Corvées hebdo restantes" - unique_id: grocy_weekly_remaining - unit_of_measurement: "corvées" - icon: mdi:clock-alert - state: > - {% set chores = state_attr('sensor.grocy_chores_weekly', 'chores') %} - {% if chores %} - {% set dow = now().weekday() %} - {% set days_to_friday = (4 - dow) % 7 %} - {% set friday_end = (now().replace(hour=23, minute=59, second=59, microsecond=0) + timedelta(days=days_to_friday)).isoformat() %} - {{ chores | selectattr('next_estimated_execution_time', 'ne', None) - | selectattr('next_estimated_execution_time', 'le', friday_end) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Grocy - Corvées mensuelles réalisées" - unique_id: grocy_monthly_done - unit_of_measurement: "corvées" - icon: mdi:check-circle - state: > - {% set chores = state_attr('sensor.grocy_chores_monthly', 'chores') %} - {% if chores %} - {% set week_start = now().replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(days=now().weekday()) %} - {{ chores | selectattr('last_tracked_time', 'ne', None) - | selectattr('last_tracked_time', 'ge', week_start.isoformat()) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Grocy - Corvées mensuelles restantes" - unique_id: grocy_monthly_remaining - unit_of_measurement: "corvées" - icon: mdi:clock-alert - state: > - {% set chores = state_attr('sensor.grocy_chores_monthly', 'chores') %} - {% if chores %} - {% set dow = now().weekday() %} - {% set days_to_friday = (4 - dow) % 7 %} - {% set friday_end = (now().replace(hour=23, minute=59, second=59, microsecond=0) + timedelta(days=days_to_friday)).isoformat() %} - {{ chores | selectattr('next_estimated_execution_time', 'ne', None) - | selectattr('next_estimated_execution_time', 'le', friday_end) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Grocy - Corvées adaptatives réalisées" - unique_id: grocy_adaptive_done - unit_of_measurement: "corvées" - icon: mdi:check-circle - state: > - {% set chores = state_attr('sensor.grocy_chores_adaptive', 'chores') %} - {% if chores %} - {% set week_start = now().replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(days=now().weekday()) %} - {{ chores | selectattr('last_tracked_time', 'ne', None) - | selectattr('last_tracked_time', 'ge', week_start.isoformat()) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Grocy - Corvées adaptatives restantes" - unique_id: grocy_adaptive_remaining - unit_of_measurement: "corvées" - icon: mdi:clock-alert - state: > - {% set chores = state_attr('sensor.grocy_chores_adaptive', 'chores') %} - {% if chores %} - {% set dow = now().weekday() %} - {% set days_to_friday = (4 - dow) % 7 %} - {% set friday_end = (now().replace(hour=23, minute=59, second=59, microsecond=0) + timedelta(days=days_to_friday)).isoformat() %} - {{ chores | selectattr('next_estimated_execution_time', 'ne', None) - | selectattr('next_estimated_execution_time', 'le', friday_end) - | list | count }} - {% else %} - 0 - {% endif %} - - - name: "Calendrier Mashome prochain" - unique_id: calendar_mashome_next - state: > - {% set next = state_attr('calendar.mashome', 'start_time') %} - {% if next %} - {% set diff = (as_local(as_datetime(next)) - now()).days %} - {{ diff <= 6 and diff >= 0 }} - {% else %} - false - {% endif %} - - - name: "Calendrier Garbage prochain" - unique_id: calendar_garbage_next - state: > - {% set next = state_attr('calendar.garbage', 'start_time') %} - {% if next %} - {% set diff = (as_local(as_datetime(next)) - now()).days %} - {{ diff <= 6 and diff >= 0 }} - {% else %} - false - {% endif %} - - - name: "Calendrier Garden prochain" - unique_id: calendar_garden_next - state: > - {% set next = state_attr('calendar.garden', 'start_time') %} - {% if next %} - {% set diff = (as_local(as_datetime(next)) - now()).days %} - {{ diff <= 6 and diff >= 0 }} - {% else %} - false - {% endif %} - - - name: "Calendrier Bestioles prochain" - unique_id: calendar_bestioles_next - state: > - {% set next = state_attr('calendar.bestioles', 'start_time') %} - {% if next %} - {% set diff = (as_local(as_datetime(next)) - now()).days %} - {{ diff <= 30 and diff >= 0 }} - {% else %} - false - {% endif %} - -- sensor: - - name: mojo_delai_repas - unique_id: mojo_delai_repas - state: > - {% set last = states.sensor.nutri_mojo_dernier_montant.last_changed %} - {% set diff = (now() - last).total_seconds() | int %} - {% set h = (diff // 3600) | int %} - {% set m = ((diff % 3600) // 60) | int %} - {% if h == 0 %}il y a {{ m }}min - {% elif h < 2 %}il y a {{ h }}h{{ '%02d' | format(m) }} - {% else %}il y a {{ h }}h - {% endif %} - attributes: - secondes: > - {{ (now() - states.sensor.nutri_mojo_dernier_montant.last_changed).total_seconds() | int }} - - - name: mojo_delai_litiere - unique_id: mojo_delai_litiere - state: > - {% set last = states.counter.compteur_litiere.last_changed %} - {% set diff = (now() - last).total_seconds() | int %} - {% set h = (diff // 3600) | int %} - {% set m = ((diff % 3600) // 60) | int %} - {% if h == 0 %}il y a {{ m }}min - {% elif h < 2 %}il y a {{ h }}h{{ '%02d' | format(m) }} - {% else %}il y a {{ h }}h - {% endif %} - attributes: - secondes: > - {{ (now() - states.counter.compteur_litiere.last_changed).total_seconds() | int }} - - - name: mojo_indice_confort - unique_id: mojo_indice_confort - unit_of_measurement: "/10" - state: > - {% set seuil = states('input_number.seuil_nettoyage_litiere') | float %} - {% set passages = states('counter.compteur_litiere') | int %} - {% set delai_repas = (now() - states.sensor.nutri_mojo_dernier_montant.last_changed).total_seconds() / 3600 %} - {% set score_litiere = [10 - ((passages / seuil) * 10) | round(0), 0] | max %} - {% set score_repas = [10 - ((delai_repas / 8) * 10) | round(0), 0] | max %} - {{ ((score_litiere * 0.5) + (score_repas * 0.5)) | round(1) }} - - - name: mojo_humeur - unique_id: mojo_humeur - state: > - {% set seuil = states('input_number.seuil_nettoyage_litiere') | float %} - {% set passages = states('counter.compteur_litiere') | int %} - {% set delai_repas = (now() - states.sensor.nutri_mojo_dernier_montant.last_changed).total_seconds() / 3600 %} - {% set litiere_ok = passages < seuil * 0.5 %} - {% set litiere_sale = passages > seuil * 0.8 %} - {% set repas_recent = delai_repas < 2 %} - {% set affame = delai_repas > 6 %} - {% if affame and litiere_sale %}Affamé et en colère - {% elif affame %}Affamé - {% elif litiere_sale %}Grognon - {% elif repas_recent and litiere_ok %}Roi du monde - {% elif repas_recent %}Content - {% else %}Neutre - {% endif %} - attributes: - icone: > - {% set h = states('sensor.mojo_humeur') %} - {% if h == 'Affamé et en colère' %}😾🍽️ - {% elif h == 'Affamé' %}🍽️😿 - {% elif h == 'Grognon' %}😾 - {% elif h == 'Roi du monde' %}👑😸 - {% elif h == 'Content' %}😸 - {% else %}🐱 - {% endif %} - citation: > - {% set h = states('sensor.mojo_humeur') %} - {% if h == 'Affamé et en colère' %}Tu pourrais faire un effort sur les deux fronts non ?! - {% elif h == 'Affamé' %}Je vois des croquettes partout... des croquettes imaginaires... - {% elif h == 'Grognon' %}Cette litière est une insulte à ma dignité féline. - {% elif h == 'Roi du monde' %}La vie est belle. Je règne sur tout ce que je vois. - {% elif h == 'Content' %}Zzz... bien mangé, bien fait... zzz... - {% else %}J'observe. J'attends. Je suis un chat. - {% endif %} - - - name: mojo_barre_faim - unique_id: mojo_barre_faim - unit_of_measurement: "%" - state: > - {% set repas_s = state_attr('sensor.mojo_delai_repas', 'secondes') | int(0) %} - {{ [[((1 - repas_s / 28800) * 100) | round, 0] | max, 100] | min }} - - - name: mojo_barre_hygiene - unique_id: mojo_barre_hygiene - unit_of_measurement: "%" - state: > - {% set passages = states('counter.compteur_litiere') | int %} - {% set seuil = states('input_number.seuil_nettoyage_litiere') | float(10) %} - {{ [[((1 - passages / seuil) * 100) | round, 0] | max, 100] | min }} - - - name: mojo_barre_energie - unique_id: mojo_barre_energie - unit_of_measurement: "%" - state: > - {% set h = now().hour %} - {% if h >= 6 and h <= 9 %}90 - {% elif h >= 17 and h <= 20 %}85 - {% elif h >= 13 and h <= 15 %}15 - {% elif h >= 22 or h < 5 %}10 - {% else %}55{% endif %} - - - name: mojo_barre_calins - unique_id: mojo_barre_calins - unit_of_measurement: "%" - state: > - {{ ((now().minute * 7 + now().hour * 13) % 50) + 30 }} - - - name: mojo_barre_capteur - unique_id: mojo_barre_capteur - unit_of_measurement: "%" - state: > - {% set b = states('sensor.litiere_etat_batterie') %} - {% if b == 'high' %}90 - {% elif b == 'middle' %}50 - {% elif b == 'low' %}15 - {% else %}0{% endif %}