Je pense que je passerais par un thermostat personnalisé
pour lâaffichage.
Puis une automatisation, en mode queued
sur changement de la consigne pour envoyer la consigne vers le thermostat réel.
A voir si avec un thermostat personnalisĂ©, la latence est toujours prĂ©sente. Si elle ne lâest pas autant partir directement sur lâautomatisation en mode queue
Bonjour ami, pouvez-vous fournir le code de toute la carte que vous avez créée ? Parce que jâaime beaucoup ta carte
kalu
Janvier 23, 2022, 7:17
270
Bonsoir,
Pas besoin de partager le code, tu peux retrouver cette carte en utilisant « hacs » et installer la carte « simple thermostat » (catĂ©gorie frontend"). Tu peux aussi lâinstaller manuellement, tout est dĂ©crit sur la page github (recherche google "simple thermostat hacs).
Bonsoir
Jâessaye dâinstaller le bouton retour, mais jâai le message dâerreur suivant et je ne sais pas ce quâil faut que je fasse pour corriger cette erreur.
Merci pour votre aide
Bob
Janvier 29, 2022, 6:54
272
Bonjour Ă tous !
Jâai dĂ©couvert HA il y a deux ans maintenant, et je mâĂ©clate comme un gamin avec. Notamment avec lâaide de la communautĂ©, quâelle soit française ou plus internationale, câest incroyable tout ce quâon peut faire !
Depuis quelques jours, jâai dĂ©couvert ce « thĂšme » qui me plait beaucoup ; je suis donc en train de switcher mon ancien dashboard en « UI Minimalist ». Jâai commencĂ© par les cards plutĂŽt basiques, mais jâaborde maintenant des petites customisations et voici que je bloqueâŠ
Les anciennes cards Ă convertir
Avec lâaide de la communautĂ©, jâavais mis en place des cartes TempĂ©ratures qui visuellement et fonctionnellement me plaisaient beaucoup. Je souhaite donc adapter quelques chose qui sâen rapproche le plus possible, je ne suis pas convaincu par les exemples trouvĂ©s Ă droite Ă gaucheâŠ
Le visuel
Le code associé
type: entities
title: Salon
state_color: false
theme: transparent
entities:
- entity: sensor.netatmo_air_quality_jouffroy_temperature
name: Température
type: custom:multiple-entity-row
style: |
.entity:not(.state)>div {
color: var(--secondary-text-color);
}
state_header: Actuelle
entities:
- entity: sensor.stats_temp_salon_min
name: Min
- entity: sensor.stats_temp_salon_max
name: Max
- entity: sensor.netatmo_air_quality_jouffroy_humidity
name: Humidité
- entity: sensor.netatmo_air_quality_jouffroy_co2
name: CO2
- type: custom:swipe-card
reset_after: 5
parameters:
roundLengths: true
effect: coverflow
speed: 650
spaceBetween: 20
threshold: 7
coverflowEffect:
rotate: 80
depth: 300
start_card: 1
cards:
- type: custom:hui-element
card_type: horizontal-stack
cards:
- type: custom:mini-graph-card
align_icon: state
line_width: 3
color_thresholds:
- color: '#ef1d0f'
value: 25
- color: '#ef5a0f'
value: 24
- color: '#f0da11'
value: 22
- color: '#11f13a'
value: 19
- color: '#1da4f2'
value: 15
entities:
- entity: sensor.netatmo_air_quality_jouffroy_temperature
index: 0
hour24: true
more_info: false
points_per_hour: 1
show:
labels: false
name: false
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_humidity
index: 0
hour24: true
line_color: '#1da4f2'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
labels: false
name: false
- type: custom:hui-element
card_type: horizontal-stack
cards:
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_noise
index: 0
hour24: true
line_color: '#ff0000'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
labels: false
name: false
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_pressure
index: 0
hour24: true
line_color: '#A700FF'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
graph: bar
labels: false
name: false
Les avancées sur UI Minimalist
Jâai essayĂ©, tant bien que mal, dâopĂ©rer la transition, mais sans grand succĂšsâŠ
Le visuel
Le code associé
- type: 'custom:button-card'
template: card_generic
name: Salon
show_label: false
show_state: false
show_name: false
show_icon: false
styles:
card:
- border-radius: var(--border-radius)
- box-shadow: var(--box-shadow)
- padding: 0px
entity: sensor.netatmo_air_quality_jouffroy_temperature
styles:
grid:
- grid-template-areas: '"item2 item2 item2 item2" "item3 item3 item3 item3"'
- grid-template-rows: min-content min-content min-content min-content
- grid-template-columns: 1fr 1fr 1fr 1fr
- row-gap: 7px
custom_fields:
item2:
card:
type: entities
title: Salon
state_color: false
entities:
- entity: sensor.netatmo_air_quality_jouffroy_temperature
name: Température
type: custom:multiple-entity-row
style: |
.entity:not(.state)>div {
color: var(--secondary-text-color);
}
state_header: Actuelle
entities:
- entity: sensor.stats_temp_salon_min
name: Min
- entity: sensor.stats_temp_salon_max
name: Max
- entity: sensor.netatmo_air_quality_jouffroy_humidity
name: Humidité
- entity: sensor.netatmo_air_quality_jouffroy_co2
name: CO2
item3:
card:
type: custom:swipe-card
reset_after: 5
parameters:
roundLengths: true
effect: coverflow
speed: 650
spaceBetween: 20
threshold: 7
coverflowEffect:
rotate: 80
depth: 300
start_card: 1
cards:
- type: horizontal-stack
cards:
- type: custom:mini-graph-card
align_icon: state
line_width: 3
color_thresholds:
- color: '#ef1d0f'
value: 25
- color: '#ef5a0f'
value: 24
- color: '#f0da11'
value: 22
- color: '#11f13a'
value: 19
- color: '#1da4f2'
value: 15
entities:
- entity: sensor.netatmo_air_quality_jouffroy_temperature
index: 0
hour24: true
more_info: false
points_per_hour: 1
show:
labels: false
name: false
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_humidity
index: 0
hour24: true
line_color: '#1da4f2'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
labels: false
name: false
- type: horizontal-stack
cards:
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_noise
index: 0
hour24: true
line_color: '#ff0000'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
labels: false
name: false
- type: custom:mini-graph-card
align_icon: state
entities:
- entity: sensor.netatmo_air_quality_jouffroy_pressure
index: 0
hour24: true
line_color: '#A700FF'
more_info: false
name: Salon
line_width: 3
points_per_hour: 1
show:
graph: bar
labels: false
name: false
Est-ce que lâun dâentre vous saurait mâaider Ă rendre tout ceci plus « UI Minimalist-compatible » ? Je vous avoue ĂȘtre un peu Ă court dâidĂ©es, jâarrive au bout de mes compĂ©tences sur HAâŠ
Merci Ă vous !
PS: je vais Ă©galement poster un message sur le forum officiel HA, si jâobtiens des rĂ©ponses je pourrai vous les donner si cela vous intĂ©resse !
2 « J'aime »
Hello Clemalex,
Je cherche Ă intĂ©grer une carte camĂ©ra (avec vue live), qui fonctionnait trĂšs bien avant UI Minimalist. Jâai essayĂ© avec tes templates intĂ©grĂ©s en mode custom card comme cela doit ĂȘtre fait aujourdâhui avec ce thĂšme, ou mĂȘme en les mettant « en dur » dans ma vue⊠Rien Ă faire !
Saurais-tu pourquoi ils ne semblent plus fonctionner ?
Merci !
Finalement, aprĂšs quelques heures passĂ©es Ă mâarracher les cheveux, jâai atterri sur un rĂ©sultat qui me convient :
2 « J'aime »
Hello,
Tu pourrais partager ton code stp ?
Merci!
1 « J'aime »
max5962
Février 2, 2022, 10:30
277
Hello,
Comment récupÚres-tu le niveau de bruit et le CO2 ?
je cherche exactement ce type dâinfo
merci !
Hello !
Jâai ces infos grĂące au Netatmo Healthy Home Coach
1 « J'aime »
Hello Galadan,
Je tùche de poster ça ce soir ! Pas évident depuis le téléphone
Re,
Voici le code utilisé :
- type: custom:button-card
show_icon: false
show_name: false
show_label: false
styles:
grid:
- grid-template-areas: "'item1 item1' 'item2 item2' 'item3 item3'"
- grid-template-columns: 1fr 1fr
- grid-template-rows: "min-content min-content min-content"
- row-gap: 5px
card:
- border-radius: var(--border-radius)
- box-shadow: var(--box-shadow)
- padding: 10px
custom_fields:
item1:
card:
type: custom:button-card
template: card_title
name: Salon
label: '[[[ return "Il fait actuellement " + states["sensor.netatmo_air_quality_jouffroy_temperature"].state + "°C dans le salon." ]]]'
item2:
card:
type: custom:button-card
template: list_2_items
custom_fields:
item1:
card:
type: custom:button-card
template: card_generic
entity: sensor.netatmo_air_quality_jouffroy_noise
icon: "mdi:volume-high"
styles:
icon:
- color: "rgba(var(--color-pink),0.8)"
img_cell:
- background-color: "rgba(var(--color-pink),.05)"
card:
- box-shadow: none
item2:
card:
type: custom:button-card
template: card_generic
entity: sensor.netatmo_air_quality_jouffroy_co2
icon: "mdi:molecule-co2"
styles:
icon:
- color: "rgba(var(--color-green),0.8)"
img_cell:
- background-color: "rgba(var(--color-green),.05)"
card:
- box-shadow: none
item3:
card:
type: horizontal-stack
cards:
- type: custom:button-card
template: card_graph
variables:
ulm_card_graph_color: "var(--google-red)"
ulm_card_graph_name: Température
ulm_card_graph_entity: sensor.netatmo_air_quality_jouffroy_temperature
- type: custom:button-card
template: card_graph
variables:
ulm_card_graph_color: "var(--google-blue)"
ulm_card_graph_name: Humidité
ulm_card_graph_entity: sensor.netatmo_air_quality_jouffroy_humidity
En revanche, je ne suis quâun bidouilleur, jâimagine quâil est loin dâĂȘtre clean et pourrait ĂȘtre optimisĂ©
1 « J'aime »
samg23
Février 2, 2022, 9:22
282
Salut,
Jâai crĂ©er une pop-up pour amĂ©liorĂ© la carte « personne » en mâinspirant de la config de lâexcellent @matt8707 .
Le code du template :
custom_card_person:
template:
- "icon_info_bg"
- "popup_custom_card_person"
triggers_update: "all"
variables:
ulm_card_person_use_entity_picture: false
ulm_card_person_zone1: ""
ulm_card_person_zone2: ""
label: >
[[[
var location = states[variables.ulm_card_person_entity].state
if (location != "not_home"){
return (location == "home") ? "Présent" : location;
} else{
return "Absent"
}
]]]
name: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]"
entity: "[[[ return variables.ulm_card_person_entity; ]]]"
icon: "mdi:face-man"
show_entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture ]]]"
entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture != false ? states[variables.ulm_card_person_entity].attributes.entity_picture : null ]]]"
styles:
icon:
- color: "rgba(var(--color-theme),0.9)"
- width: >
[[[
if (variables.ulm_card_person_use_entity_picture == true){
return "42px";
} else {
return "20px";
}
]]]
custom_fields:
notification:
- border-radius: "50%"
- position: "absolute"
- left: "38px"
- top: "8px"
- height: "16px"
- width: "16px"
- border: "2px solid var(--card-background-color)"
- font-size: "12px"
- line-height: "14px"
- background-color: >
[[[
if (states[variables.ulm_card_person_entity].state !== 'home') {
return "rgba(var(--color-green),1)";
} else {
return "rgba(var(--color-blue),1)";
}
]]]
custom_fields:
notification: >
[[[
if (states[variables.ulm_card_person_entity].state !== 'home') {
if (states[variables.ulm_card_person_entity].state === states[variables.ulm_card_person_zone1]?.attributes?.friendly_name) {
var icon = states[variables.ulm_card_person_zone1].attributes.icon !== null ? states[variables.ulm_card_person_zone1].attributes.icon : 'mdi:help-circle'
return '<ha-icon icon="' + icon + '" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
} else if (states[variables.ulm_card_person_entity].state === states[variables.ulm_card_person_zone2]?.attributes?.friendly_name) {
var icon = states[variables.ulm_card_person_zone2].attributes.icon !== null ? states[variables.ulm_card_person_zone2].attributes.icon : 'mdi:help-circle'
return '<ha-icon icon="' + icon + '" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
} else {
return '<ha-icon icon="mdi:home-minus" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
}
} else {
return '<ha-icon icon="mdi:home-variant" style="width: 10px; height: 10px; color: var(--primary-background-color);"></ha-icon>';
}
]]]
button_find_my_phone:
icon: mdi:volume-high
size: 1.4em
styles:
grid:
- grid-template-areas: '"i n"'
- grid-column-gap: 0.3em
name:
- font-size: 1.06em
- letterspacing: 0.015em
card:
- color: "rgba(var(--color-blue),1)"
- background: "rgba(var(--color-blue),0.2"
- border-radius: 0.6em
- padding: 1em 1.4em
- width: max-content
- font-size: 1.06em
- font-weight: 500
- letter-spacing: 0.015em
- box-shadow: none
icon:
- color: "rgba(var(--color-blue),1)"
popup_custom_card_person:
tap_action:
action: fire-dom-event
browser_mod:
command: popup
title: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]"
style:
$: >
*{
--secondary-background-color: none;
}
.mdc-dialog__surface{
border-radius: 20px !important;
}
hui-vertical-stack-card:
$: >
button-card {
align-self: center;
padding: 0.2em 0 2.3em 0;
}
hui-entities-card{
padding: 0.8em 1.4em;
}
$hui-entities-card$: >
ha-card{
box-shadow: none;
}
$hui-history-graph-card$: >
.content {
padding: 0 2.4em !important;
}
ha-card{
box-shadow: none;
}
$hui-glance-card$: >
ha-card{
box-shadow: none;
}
$hui-map-card:
$: >
mwc-icon-button {
color: rgba(var(--color-blue),1);
}
$ha-map:
$: >
.leaflet-control-attribution {
display: none;
}
.leaflet-touch .leaflet-control-layers, .leaflet-touch .leaflet-bar {
border: 2px solid rgba(var(--color-blue),0.4) !important;
}
.leaflet-bar a {
background-color: rgba(var(--color-blue),0.2) !important;
color: rgba(var(--color-blue),1) !important;
}
.leaflet-bar a:first-child {
border-bottom: 2px solid rgba(var(--color-blue),0.4) !important;
}
.leaflet-pane.leaflet-tile-pane {
filter: contrast(95%);
}
card:
type: vertical-stack
cards:
- type: entities
entities:
- entity: "[[[ return variables.ulm_card_person_entity; ]]]"
secondary_info: last-changed
- type: history-graph
entities:
- entity: "[[[ return variables.ulm_card_person_entity; ]]]"
- type: glance
show_state: false
entities:
- entity: "[[[ return variables.ulm_card_person_wifi_tracker; ]]]"
name: WiFi
icon: mdi:wifi
style: &state >
state-badge{
color: {{ 'rgba(var(--color-blue),1)' if is_state(config.entity, 'home') }};
filter: {{ 'opacity(100%)' if is_state(config.entity, 'home') else 'opacity(40%)'}};
}
- entity: "[[[ return variables.ulm_card_person_gps_tracker; ]]]"
name: GPS
icon: mdi:map-marker
style: *state
- type: custom:button-card
template: button_find_my_phone
entity: "[[[ return variables.ulm_card_person_findmy_script; ]]]"
name: "Trouver mon téléphone"
tap_action:
action: toggle
- type: map
aspect_ratio: 12x10
default_zoom: 16
entities: "[[[ return [variables.ulm_card_person_gps_tracker]; ]]]"
Le code de la carte :
- type: custom:button-card
template: custom_card_person
variables:
ulm_card_person_entity: person.samg23
ulm_card_person_wifi_tracker: device_tracker.wifi_oneplus_6t
ulm_card_person_gps_tracker: device_tracker.oneplus_6t
ulm_card_person_findmy_script: script.find_my_oneplus_6t
ulm_card_person_use_entity_picture: true
ulm_card_person_zone1: zone.work
ulm_card_person_zone2: zone.sport
7 « J'aime »
Faut faire un PR sur GitHub pour en faire profiter tout le monde
samg23
Février 4, 2022, 2:47
284
Je ne sais pas comment faire
Comment puis-je remplacer la valeur service ci-dessous par une valeur qui prenne en compte lâequipement de lâutilisateur connectĂ© ?
tap_action:
action: call-service
service: notify.mobile_app_iphone_de_moi
samg23
Février 6, 2022, 4:34
287
Jâessayerai de faire quelque chose comme ca :
tap_action:
action: call-service
service: >
[[[
if (user.name == "John"){
return "notify.mobile_app_iphone_de_john";
} else if (user.name == "Mark"){
return "notify.mobile_app_iphone_de_mark";
}
]]]
ok, je vais voir avec ça. En effet ça pourrait marcher, je nâai pas les reflexes de codes! En tout cas pas encore!