Au top Clemalex
Effectivement ça rend bien mieux. J’aime beaucoup. je prépare d’autres exemple de carte sympa.
Au top Clemalex
Effectivement ça rend bien mieux. J’aime beaucoup. je prépare d’autres exemple de carte sympa.
N’hésite pas !
J’adore voir des cartes car on peut tellement faire de très belles choses
Bonsoir les homies,
Et un grand merci à toi @Clemalex pour cette carte faut pratique !
Je n’ai pas eu de problème pour reproduire la carte dans mon dashboard, par contre j’essaie d’adapter le code des entités de la carte à ma configuration. En effet je n’ai pas de xiaomi, j’utilise mon enceinte Google comme réveil. Du coup je voulais savoir à quoi sert les scripts xiaomi_alarm
(1, 2 et 3) et alarm_snooze
histoire d’essayer de convertir tout cela avec mon enceinte Google. J’imagine que c’est différent son d’alarme ?
Tant que j’y suis, les inputs select, datetime, et booleans m’ont pas mal rempli mon fichier de configuration, c’est possible de séparer ma config vers d’autres fichiers comme c’est le cas avec les automations, scripts, sensor etc…?
Bonne nuit.
A bientôt!
C’est détaillé ici :
Je te conseille de lire :
La traduction de la documentation est ici.
Inspire toi des configurations présentes dans l’awesome.
Si tu bloque toujours, n’hésite pas à expliquer ce que tu veux faire exactement, et on fera la mise au point ensemble
Bonjour,
Navré pour ma question basique, je débute: j’essaye d’intégrer le mode package en créant un fichier reveil.yaml que je déclare dans configuration .yaml (reveil: !include reveil.yaml) mais HA n’est pas content (Component error: reveil - Integration ‹ reveil › not found.). Cela avant d’aller intégrer la carte dans Lovelace.
Ce n’est pas la bonne procédure ?
Merci
Non, pas du tout
Regarde par ici :
Re, merci pour les infos. Après avoir bien compris le fonctionnement de HA avec les fichiers yaml j’ai séparé ma config en créant les fichiers input_boolean.yaml, input_datetime.yaml, et input_select.yaml. Mon fichier de config s’est ainsi bien aéré.
En ce qui concerne les scripts de la xiaomi gateway j’ai bien compris qu’ils servent juste émettre un son répété d’alarme à l’heure du réveil.
A la place de ces scripts, j’ai simplement mis un script qui joue une musique sur mon enceinte. Le script est fonctionnelle quand je le joue manuellement mais il ne fonctionne pas avec les automatisations qui découle de la carte réveil. Pourtant j’ai bien veillé à remplacer dans l’automation « Wake 1 Activated » le script qui est lancé par le mien…
J’ai une piste : j’ai l’impression que l’automatisation qui met à jour l’heure du réveil ne fonctionne pas
Tu as des idées @Clemalex ?
Tu peux me fournir le code que TU utilises (je précise le tiens car j’avais fait des remarques sur le fonctionnement de l’automatisation de base).
Réponds à la suite de ce fil ci :
J’avais fais ces remarques :
On passe sur le topic de l’automatisation plutôt que la carte
Du coup, j’ai eu besoin d’ajouter une heure d’extinction à la carte de base, ce qui me donne :
Le titre de la carte n’est plus cliquable et clignote si la prise associée est allumée.
L’activation/désactivation se fait depuis les boutons ON/OFF
Le réglage de l’heure d’allumage/extinction se fait à l’aide des boutons avec l’icone d’une prise.
Aucun changement pour les boutons des jours.
style: >
@keyframes blink {
50% {
color: var(--paper-item-icon-active-color);
}
100% {
color: var(--primary-color);
}
}
#root > hui-state-label-element:nth-child(2),#root >
hui-state-label-element:nth-child(3) {
animation: {% if is_state('switch.prise_bureau', 'on') %} blink 1.5s ease-in-out infinite{% endif %};
}
elements:
- entity: sensor.vide
prefix: Bureau
style:
color: var(--primary-color)
font-size: 20px
font-variant: small-caps
left: 15%
pointer-events: none
top: 23%
tap_action:
action: none
type: state-label
- entity: sensor.vide
prefix: Clemalex
style:
color: var(--primary-color)
font-size: 20px
font-variant: small-caps
left: 15%
pointer-events: none
top: 34%
tap_action:
action: none
type: state-label
- type: 'custom:stack-in-card'
style:
bottom: 30%
left: 15%
mode: horizontal
keep:
background: true
cards:
- type: 'custom:button-card'
entity: input_boolean.wakestatus_1
show_icon: false
show_state: false
name: 'On'
styles:
card:
- width: 50px
- height: 24px
- padding: 10%
- font-size: 16px
- font-variant: small-caps
- border: 2px solid var(--primary-color)
- background: |
[[[
if (entity.state == 'on')
return 'var(--primary-color)';
else
return 'white';
]]]
name:
- color: |
[[[
if (entity.state == 'on')
return 'white';
else
return 'var(--primary-color)';
]]]
- type: 'custom:button-card'
entity: input_boolean.wakestatus_1
show_icon: false
show_state: false
name: 'Off'
styles:
card:
- width: 50px
- height: 24px
- padding: 10%
- font-size: 16px
- font-variant: small-caps
- border: 2px solid var(--primary-color)
- background: |
[[[
if (entity.state == 'off')
return 'var(--primary-color)';
else
return 'white';
]]]
name:
- color: |
[[[
if (entity.state == 'off')
return 'white';
else
return 'var(--primary-color)';
]]]
- type: 'custom:state-switch'
style:
left: 47%
top: 36%
entity: input_boolean.wakesettime_1
default: 'on'
transition: flip
transition_time: 300
states:
'on':
entity: input_datetime.wake_time_1_on
hide:
name: true
hour_step: 1
layout:
embedded: false
name: inside
align_controls: center
link_values: true
minute_step: 1
name: ''
style:
.: |
ha-card {
box-shadow: none;
background-color: rgba(0,0,0,0);
opacity: {% if is_state('input_boolean.wakestatus_1', 'off') %} 0.3 {% endif %};
pointer-events: {% if is_state('input_boolean.wakestatus_1', 'off') %} none {% endif %};
}
.time-picker-row{
margin-left: 5px !important;
}
.time-picker-row:
.time-picker-content:
.: |
.time-separator {
display: none;
}
time-unit:
$: |
.time-unit {
padding: 2px !important;
}
.time-input {
border: 2px solid var(--primary-color) !important;
background-color: rgba(0,0,0,0) !important;
color: black !important;
border-radius: 5px;
}
.time-picker-icon {
color: var(--primary-color) !important;
z-index: 100;
}
type: 'custom:time-picker-card'
'off':
entity: input_datetime.wake_time_1_off
hide:
name: true
hour_step: 1
layout:
embedded: false
name: inside
align_controls: center
link_values: true
minute_step: 1
name: ''
style:
.: |
ha-card {
box-shadow: none;
background-color: rgba(0,0,0,0);
opacity: {% if is_state('input_boolean.wakestatus_1', 'off') %} 0.3 {% endif %};
pointer-events: {% if is_state('input_boolean.wakestatus_1', 'off') %} none {% endif %};
}
.time-picker-row{
margin-left: 5px !important;
}
.time-picker-row:
.time-picker-content:
.: |
.time-separator {
display: none;
}
time-unit:
$: |
.time-unit {
padding: 2px !important;
}
.time-input {
border: 2px solid var(--primary-color) !important;
background-color: rgba(0,0,0,0) !important;
color: black !important;
border-radius: 5px;
}
.time-picker-icon {
color: var(--primary-color) !important;
z-index: 100;
}
type: 'custom:time-picker-card'
- entity: input_boolean.wakeweekday_mon_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Lu
style:
'--paper-item-icon-color': var(--primary-color)
right: 15%
top: 20%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_mon_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_tue_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Ma
style:
'--paper-item-icon-color': var(--primary-color)
right: 5%
top: 20%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_tue_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_wed_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Me
style:
'--paper-item-icon-color': var(--primary-color)
right: 20%
top: 50%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_wed_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_thu_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Je
style:
'--paper-item-icon-color': var(--primary-color)
right: 10%
top: 50%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_thu_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_fri_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Ve
style:
'--paper-item-icon-color': var(--primary-color)
right: 0%
top: 50%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_fri_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_sat_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Sa
style:
'--paper-item-icon-color': var(--primary-color)
right: 15%
top: 80%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_sat_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- entity: input_boolean.wakeweekday_sun_1
show_label: false
show_icon: false
show_name: true
show_state: false
name: Di
style:
'--paper-item-icon-color': var(--primary-color)
right: 5%
top: 80%
styles:
card:
- width: 30px
- height: 30px
- border-radius: 999px
- background-color: |
[[[
if ( (states['input_boolean.wakeweekday_sun_1'].state == 'off') ) return 'var(--primary-color)';
else return 'var(--paper-item-icon-active-color)';
]]]
- box-shadow: none
- border-radius: 999px
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
name:
- color: white
type: 'custom:button-card'
- type: 'custom:stack-in-card'
style:
top: 80%
left: 48%
mode: horizontal
keep:
background: true
cards:
- type: 'custom:button-card'
entity: input_boolean.wakesettime_1
icon: 'mdi:power-plug'
show_label: false
show_name: false
show_state: false
styles:
card:
- line-height: 0
- width: 50px
- height: 24px
- border: 2px solid var(--primary-color)
- background: |
[[[
if (entity.state == 'on')
return 'var(--primary-color)';
else
return 'white';
]]]
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
icon:
- transform: scale(1.2)
- color: |
[[[
if (entity.state == 'on')
return 'white';
else
return 'var(--primary-color)';
]]]
- type: 'custom:button-card'
entity: input_boolean.wakesettime_1
icon: 'mdi:power-plug-off'
show_label: false
show_name: false
show_state: false
styles:
card:
- line-height: 0
- width: 50px
- height: 24px
- border: 2px solid var(--primary-color)
- background: |
[[[
if (entity.state == 'off')
return 'var(--primary-color)';
else
return 'white';
]]]
- opacity: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return '0.3';
else return '1';
]]]
- pointer-events: |
[[[
if ( (states['input_boolean.wakestatus_1'].state == 'off') ) return 'none';
else return 'auto';
]]]
icon:
- transform: scale(1.2)
- color: |
[[[
if (entity.state == 'off')
return 'white';
else
return 'var(--primary-color)';
]]]
image: /local/images/transparent/transparent_clock.png
type: picture-elements
Image transparent agrandie : [ ] ← Elle est entre les crochets
Et l’automatisation qui va avec :
- id: 'bureau_clemalex'
alias: bureau_clemalex
description: ''
trigger:
- platform: state
entity_id: sensor.time
condition:
- condition: template
value_template: '{% set today = ''input_boolean.wakeweekday_'' ~ now().strftime("%a")
| lower ~ ''_1'' %} {{ is_state(''input_boolean.wakestatus_1'', ''on'') and
is_state(today, ''on'') }}
'
action:
- choose:
- conditions:
- condition: template
value_template: "{% set time_off = strptime(states('input_datetime.wake_time_1_off'),\
\ '%H:%M:%S').strftime('%H:%M:%S') %} {% set time = strptime(states('sensor.time'),\
\ '%H:%M').strftime('%H:%M:%S')%} {% if time >= time_off %}\n true\n{%\
\ else %}\n false\n{% endif %}\n"
sequence:
- service: switch.turn_off
entity_id: switch.prise_bureau
- conditions:
- condition: template
value_template: "{% set time_on = strptime(states('input_datetime.wake_time_1_on'),\
\ '%H:%M:%S').strftime('%H:%M:%S') %} {% set time = strptime(states('sensor.time'),\
\ '%H:%M').strftime('%H:%M:%S')%} {% if time >= time_on %}\n true\n{% else\
\ %}\n false\n{% endif %}\n"
sequence:
- service: switch.turn_on
entity_id: switch.prise_bureau
mode: single
Pour rappel les entités :
sensor:
- platform: template
sensors:
vide:
value_template: ""
input_boolean:
wakesettime_1:
name: set time
icon: mdi:clock
wakestatus_1:
name: Alarme 1
icon: mdi:alarm
wakeweekday_sun_1:
name: Sunday
icon: mdi:calendar
wakeweekday_mon_1:
name: Monday
icon: mdi:calendar
wakeweekday_tue_1:
name: Tuesday
icon: mdi:calendar
wakeweekday_wed_1:
name: Wednesday
icon: mdi:calendar
wakeweekday_thu_1:
name: Thursday
icon: mdi:calendar
wakeweekday_fri_1:
name: Friday
icon: mdi:calendar
wakeweekday_sat_1:
name: Saturday
icon: mdi:calendar
input_datetime:
wake_time_1_on:
name: Horaire 1 on
has_time: true
wake_time_1_off:
name: Horaire 1 off
has_time: true
Mise à jour de la carte avec un bouton d’activation de l’automatisation plus compréhensible :
https://forum.hacf.fr/t/mon-dashboard-clemalex/737/51?u=clemalex
Salut @Clemalex ,
J’ai un p’tit soucis avec ta carte et j’arrive pas voir d’où ça vient.
J’ai un point d’exclamation à la place de l’activation, un truc Zarbi derrière les minutes…
Et la couleur ne change pas quand j’active ou desactive les jours…
Saurais tu m’aiguiller ?
Le « truc zarbi » je pense que c’est l’image non présente.
Le point d’exclamation, une entité manquante.
Le non changement de couleur doit être un autre manque d’entité je pense…
Sur la carte d’origine, le bouton activation fonctionne bien. C’est une autre entité ?
Les couleurs, je vois pas.
Je vais revérifier toutes les déclarations…
Et l’image encore moins
Mais j’ai pas d’erreurs dans le code, du moins il m’en dit pas…
De quoi ? Le texte ? Oui le texte est une entité vide.
Le texte c’est bon. Me manquait l’entité vide.
Les autres erreurs je sais pas encore…
→ input_boolean.wakestatus_1
Alors c’est pas le wakestatus, c’est plus bête que ça.
J’ai un thème dark_orange, et il ne me change pas la couleur. Il fait orange-orange…
Si j’enlève le thème, il me permute bien les couleurs.
Faut que je change les couleurs dans la carte ?
Me reste donc cet ersatz d’image derrière …
@Clemalex Hello,
j’ai pas compris dans le fonctionnement du réveil à un seul réglage comment le wakestatus_1 se remet à 0 ?
Et tu pourrais me dire comment changer la taille de la sélection d’heures/minutes, et la couleur ?
Merci