Aller, on va commencer simple, mais c’est la base de tout. Il va falloir savoir si tout le monde est à la maison ou pas.
On va dire une famille de 4 personnes.
Lise et Lucas les enfants
Stéphane et Cécile les parents
1> Il faut ajouter l’intégration Proximité et la carte Markdown.
2> Dans paramètres : pièce étiquette et zone : il faut référencer votre maison.
3> Dans paramètres : Personne, il faut créer un compte par personne de la famille, nous on est 4.
4> Installer HA sur chaque téléphone avec le login / password de chaque personne.
Dans la carte vous devriez voir tout le monde.
5> Avec Code Studio Server éditez configuration.yaml et ajouter
# Chargement des fichiers YAML personnels (booleens)
input_boolean: !include_dir_merge_named /config/YAML/boolean_inputs
# Chargement des fichiers YAML personnels (templates)
template: !include_dir_list /config/YAML/templates
6> Ajouter dans le répertoire config: YAML/boolean_inputs/boolean_input_presences.yaml
#==================================================================================#
# PROXIMITE #
# #
# Booléen de présence ou d'abscence qui permettent de prendre en compte (ou pas) #
# la présence des membres de la famille pour le calcul des tous présents ou #
# des tous absents #
#==================================================================================#
presence_lise:
name: Présence de Lise
icon: mdi:map-marker-account
presence_lucas:
name: Présence de Lucas
icon: mdi:map-marker-account
presence_cecile:
name: Présence de Cécile
icon: mdi:map-marker-account
presence_stephane:
name: Présence de Stéphane
icon: mdi:map-marker-account
alarme_automatique:
# Permet de ne plus gérer l'alarme automatiquement
name: Alarme automatique
icon: mdi:shield-home
maison_enter_zone:
# Passe à true lorsqu'un membre de la famille entre dans la Zone maison.
# Reste à true pendant un certain temps, temps pendant lequel l'alarme nuit
# ne peut pas s'enclencher.
# Permet désactiver l'alarme la nuit lorsque quelqu'un rentre à la maison
name: Entrée d'une personne à la maison
icon: mdi:home-account
7> Ajouter dans le répertoire config: YAML/templates/template_proximite.yaml
#╔══════════════════════════════════════════════════════════════════════════════════╗
#║ PROXIMITE ║
#║ ║
#║ Sensor qui permet de savoir si tout le monde est à la maison ou est en dehors ║
#║ de la maison. ║
#╚══════════════════════════════════════════════════════════════════════════════════╝
sensor:
- name: maison_all_presents
icon: mdi:map-marker-circle
unique_id: maison_all_presents
state: >-
{{ (is_state('input_boolean.presence_lise', "off") or states['sensor.maison_distance_avec_login_lise'].state | int == 0)
and (is_state('input_boolean.presence_lucas', "off") or states['sensor.maison_distance_avec_login_lucas'].state | int == 0)
and (is_state('input_boolean.presence_stephane', "off") or states['sensor.maison_distance_avec_login_stephane'].state | int == 0)
and (is_state('input_boolean.presence_cecile', "off") or states['sensor.maison_distance_avec_login_cecile'].state | int == 0)
}}
- name: maison_all absents
icon: mdi:map-marker-remove-variant
unique_id: maison_all_absents
state: >-
{{ (is_state('input_boolean.presence_lise', "off") or states['sensor.maison_distance_avec_login_lise'].state | int >= 50)
and (is_state('input_boolean.presence_lucas', "off") or states['sensor.maison_distance_avec_login_lucas'].state | int >= 50)
and (is_state('input_boolean.presence_stephane', "off") or states['sensor.maison_distance_avec_login_stephane'].state | int >= 50)
and (is_state('input_boolean.presence_cecile', "off") or states['sensor.maison_distance_avec_login_cecile'].state | int >= 50)
}}
les presence_xxx permettent de désactiver un membre de la famille pour le faire sortir de la famille.
S’il est en voyage par exemple.
8> La carte qui montre tout le monde présent (ou pas) avec les adresses :
type: custom:mod-card
square: false
card:
type: vertical-stack
cards:
- type: markdown
content: >
<h1><center><font color=#1565c0>Proximité</font></center></h1>
{% if is_state('sensor.maison_all_presents', 'True') %} <font
color=green>**Tout le monde est à la maison**</font> {% elif
is_state('sensor.maison_all_absents', 'True') %} <font
color=#CC2800>**Personne n’est à la maison.**</font> {% else %} <font
color=#CC0EA2>**Seule une partie des membres de la famille est à la
maison.**</font> {% endif %}
- type: entities
entities:
- entity: sensor.maison_all_presents
name: Tout le monde est à la maison
card_mod:
style:
hui-generic-entity-row $: |
state-badge {
{% if is_state('sensor.maison_all_presents', 'True') %}
color: green;
{% else %}
color: #DD0000;
{% endif %}
}
.state {
color: rgba(0,0,0,0.0);
}
.: |
:host {
{% if is_state('sensor.maison_all_presents', 'True') %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
- entity: sensor.maison_all_absents
name: Tout le monde est absent de la maison
card_mod:
style:
hui-generic-entity-row $: |
state-badge {
{% if is_state('sensor.maison_all_absents', 'True') %}
color: green;
{% else %}
color: #DD0000;
{% endif %}
}
.state {
color: rgba(0,0,0,0.0);
}
.: |
:host {
{% if is_state('sensor.maison_all_absents', 'True') %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
- type: custom:template-entity-row
entity: sensor.maison_distance_avec_login_stephane
icon: mdi:map-marker-distance
name: Stéphane
state: >
{{ states(config.entity) }} {{ state_attr(config.entity,
'unit_of_measurement') }}
secondary: >
{% if states(config.entity) | int != 0 %} {{
states('sensor.feneck91_geocoded_location') }} {% endif %}
color: >
{% if is_state('input_boolean.presence_stephane', "on") %} {% if
states(config.entity) | int == 0 %} green {% else %} #DD0000 {%
endif %} {% else %} gray {% endif %}
card_mod:
style:
.: |
:host {
{% if states(config.entity) | int == 0 %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
div#wrapper: |
.info.pointer .secondary {
white-space: pre;
}
- type: custom:template-entity-row
entity: sensor.maison_distance_avec_login_cecile
icon: mdi:map-marker-distance
name: Cécile
state: >
{{ states(config.entity) }} {{ state_attr(config.entity,
'unit_of_measurement') }}
secondary: >
{% if states(config.entity) | int != 0 %} {{
states('sensor.iphone_cecile_geocoded_location') }} {% endif %}
color: >
{% if is_state('input_boolean.presence_cecile', "on") %} {% if
states(config.entity) | int == 0 %} green {% else %} #DD0000 {%
endif %} {% else %} gray {% endif %}
card_mod:
style:
.: |
:host {
{% if states(config.entity) | int == 0 %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
div#wrapper: |
.info.pointer .secondary {
white-space: pre;
}
- type: custom:template-entity-row
entity: sensor.maison_distance_avec_login_lise
icon: mdi:map-marker-distance
name: Lise
state: >
{{ states(config.entity) }} {{ state_attr(config.entity,
'unit_of_measurement') }}
secondary: >
{% if states(config.entity) | int != 0 %} {{
states('sensor.tas_pas_de_co_lucas_geocoded_location') }} {% endif
%}
color: >
{% if is_state('input_boolean.presence_lise', "on") %} {% if
states(config.entity) | int == 0 %} green {% else %} #DD0000 {%
endif %} {% else %} gray {% endif %}
card_mod:
style:
.: |
:host {
{% if states(config.entity) | int == 0 %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
div#wrapper: |
.info.pointer .secondary {
white-space: pre;
}
- type: custom:template-entity-row
entity: sensor.maison_distance_avec_login_lucas
icon: mdi:map-marker-distance
name: Lucas
state: >
{{ states(config.entity) }} {{ state_attr(config.entity,
'unit_of_measurement') }}
secondary: >
{% if states(config.entity) | int != 0 %} {{
states('sensor.alors_on_a_pas_de_co_geocoded_location') }} {% endif
%}
color: >
{% if is_state('input_boolean.presence_lucas', "on") %} {% if
states(config.entity) | int == 0 %} green {% else %} #DD0000 {%
endif %} {% else %} gray {% endif %}
card_mod:
style:
.: |
:host {
{% if states(config.entity) | int == 0 %}
color: green;
font-weight: bold;
{% else %}
color: #DD0000;
{% endif %}
}
div#wrapper: |
.info.pointer .secondary {
white-space: pre;
}
show_header_toggle: false
state_color: true
9> La gestion des membres / activation automatique, suppression des membres de la famille. Là, je donne le yaml de toute la vue :
type: masonry
path: parametrage
title: Paramétrage
icon: mdi:alarm-light
cards:
- square: false
type: grid
columns: 1
cards:
- type: entities
entities:
- type: custom:template-entity-row
icon: mdi:alarm-light
name: Status de l'alarme
state: >-
{% if states('alarm_control_panel.532203') | string == 'disarmed'
%} Désarmée {% elif states('alarm_control_panel.532203') | string
== 'arming' %} Activation {% elif
states('alarm_control_panel.532203') | string == 'disarming' %}
Désactivation {% elif states('alarm_control_panel.532203') |
string == 'armed_night' %} Mode nuit {% elif
states('alarm_control_panel.532203') | string == 'armed_home' %}
Mode jour {% elif states('alarm_control_panel.532203') | string ==
'armed_away' %} Absent {% elif
states('alarm_control_panel.532203') | string ==
'armed_custom_bypass' %} Mode extérieur {% else %} {{
states('alarm_control_panel.532203') }} {% endif %}
color: >-
{% if states('alarm_control_panel.532203') | string == 'arming' or
states('alarm_control_panel.532203') | string == 'disarming' %}
orange {% elif states('alarm_control_panel.532203') | string ==
'armed_night' or states('alarm_control_panel.532203') | string ==
'armed_home' or states('alarm_control_panel.532203') | string ==
'armed_custom_bypass' or states('alarm_control_panel.532203') |
string == 'armed_away' %} green {% elif
states('alarm_control_panel.532203') | string == 'disarmed' %}
gray {% else %} lightgray {% endif %}
- entity: input_boolean.alarme_automatique
- entity: input_boolean.presence_lise
- entity: input_boolean.presence_lucas
- entity: input_boolean.presence_cecile
- entity: input_boolean.presence_stephane
- entity: input_boolean.maison_enter_zone
icon: mdi:home-account
secondary_info: last-changed
- type: custom:template-entity-row
icon: mdi:home-account
name: >-
{% if states('input_boolean.maison_enter_zone') | string == 'on'
%} Alarme désarmée temporairement (10 minutes) {% elif
states('input_boolean.maison_enter_zone') | string == 'off' %} {%
if states('alarm_control_panel.532203') | string == 'disarmed' %}
Alarme désarmée {% else %} Désarmer alarme (10 minutes) {% endif
%} {% else %} {{ states('input_boolean.maison_enter_zone') }} {%
endif %}
color: >-
{% if states('input_boolean.maison_enter_zone') | string == 'on'
%} green {% elif states('input_boolean.maison_enter_zone') |
string == 'off' %} {% if states('alarm_control_panel.532203') |
string == 'disarmed' %} gray {% else %} blue {% endif %} {% else
%} gray {% endif %}
state: ""
entity: input_boolean.maison_enter_zone
secondary: >-
{% if states('input_boolean.maison_enter_zone') | string == 'on'
%} Il y a {{
states['input_boolean.maison_enter_zone']['last_changed'] |
relative_time }} {% endif %}
state_color: true
- type: markdown
content: >-
### Les modes de fonctionnement :
* **Alarme automatique**
Permet de désactiver les règles d'activation et de désactivaition
automatiques des alarmes.
* **Présence de ...**
Permet d'activer ou de désactiver une personne de la famille pour le
calcul de "Tout le monde est à la maison" et "Tout le monde est absent
de la maison". Par exemple pendant des vacances ou seuls une partie de
la famille reste à la maison.
* **Entrée d'une personne à la maison**
Est activé automatiquement lorsqu'une personne entre dans la zone de
la maison.
Est désactivé au bout de 10 minutes.
Pendant ce labs de temps l'alarme est désactivée (uniquement en mode
jour / nuit) et empèche la réactivation de l'alarme pendant ces 10
minutes.