Je reviens vers toi pour ton aide, si tu veux bien… Merci d’avance
Oui oui pardon Schumi.
Je rentre de vacances mercredi soir.
Je comptais m’occuper de toi jeudi, si cela ne te dérange pas
pas de soucis. et excuse moi, je ne savais pas que tu etais en vacances. alors profite encore des ces derniers jours.
J’attendrais bien jusque la, je ne suis pas dans l’urgence.
Encore merci a toi !
-
Pour la météo, je suis actuellement sur le sensor de l’intégration officielle « Météo-France », disponible directement en intégration par l’UI. Pour la carte, elle vient de cette communauté! Regarde ici.
-
Je n’utilise pas de sensors pour les jours fériés (pour le moment)
-
Pour le jour de fête je scrape comme beaucoup (ou pas?) sur le site Ephemeride.com. Voici le code :
Code du sensor
#### FETES ####
- platform: scrape
name: Fete du Jour - Homme
resource: https://www.ephemeride.com/free/fete.jsp
select: ".FeteHomme"
scan_interval: 28800
- platform: scrape
name: Fete du Jour - Femme
resource: https://www.ephemeride.com/free/fete.jsp
select: ".FeteFemme"
scan_interval: 28800
Pour l’afficher dans le markdown, ma méthode est la suivante :
Code du Markdown
{% if is_state('input_text.fete_femme', 'unknown') %} {% if is_state('input_text.fete_homme', 'unknown') %} {% else %} Aujourd'hui nous fêtons les <font color= CornflowerBlue>{{ states.input_text.fete_homme.state }}</font>. {% endif%} {% else %}
Aujourd'hui nous fêtons les <font color= MediumOrchid>{{ states.input_text.fete_femme.state }}</font>{% if is_state('input_text.fete_homme', 'unknown') %}. {% else %} ainsi que les <font color= CornflowerBlue>{{ states.input_text.fete_homme.state }}</font>.
{% endif%} {% endif%}
Avec cette petite méthode, si il y a un problème avec le scrape, ou bien seulement pas de données qui remontent un jour, l’info n’est pas affichée.
Il y a sans doute de bien meilleures techniques que la mienne. J’ai vu que tu as regardé le dashboard de @Felix62 et même si je ne l’ai regardé pour le moment qu’en diagonale pendant mes vacances, j’ai cru voir bon nombre de choses intéressantes. Je vais prendre le temps de regarder son œuvre et de lui faire honneur dans le mien
- Je n’utilise pour le moment pas de calendrier dans HA. Mais cela viendra peut-être!
Voilà, je ne pense pas avoir complètement répondu alors n’hésite pas
ok, impec. cela va bien m’aider. Un grand merci…
Puis-je encore profiter de toi et de ton dashboard ?
Pour les carte et code de :
- Liste des course. (deja installer, mais j’aimerais aussi l’avoir sur ma montre…(apple watch)
- Ta carte "stack-in-card avec media player et fold-entity-row histoire d’avoir les pochettes et surtout les playlist.
- Tes lumieres (facon homekit) avec l’intensité de l’eclairage.
J’en demande beaucoup, mais j’apprecie vraiment bc^p de chose de ton dashboard…
Et un grand merci pour ton temps que j’occupe a me repondre.
De rien
Liste de courses :
Intégration en natif via l’UI (Intitulé liste d’achats), mais tu sembles l’avoir déjà fait. Je précise pour d’éventuels futurs intéressés.
Il faut ensuite créer un fichier que tu nommeras « shopping_list.py » et que tu placeras au même endroit que tes fichiers de config (configuration.yaml, etc…)
Et place ce code dans le fichier :
#!/usr/local/bin/python
# coding: utf8
import json
with open('/config/.shopping_list.json') as data_file:
shoppingListData = json.load(data_file)
content = u"<b>Liste de Courses:</b><br>"
for entry in shoppingListData:
if not entry['complete']:
content += u"- %s<br>" % entry['name']
content += u"<br>"
print(content)
Puis dans ton sensors.yaml (ou équivalent), place ce code :
- platform: command_line
name: Liste de Courses
command: python3 /config/shopping_list.py
json_attributes:
- name
Ensuite, pour avoir ma mise en page sur la carte :
card:
cards:
- type: shopping-list
- entity: null
name: COCHER TOUS LES ARTICLES
show_icon: false
style: |
ha-card {
background: none;
font-size: 6px;
font-weight: bold;
color: rgba(3, 169, 244, 0.5);
}
tap_action:
action: call-service
service: shopping_list.complete_all
type: button
- cards:
- entity: script.liste_courses_envoyer_quintus
name: ENVOYER À QUINTUS
show_icon: false
style: |
ha-card {
width: 150px;
margin-left: -10px;
margin-right: auto;
background: none;
font-size: 6px;
font-weight: bold;
color: rgba(3, 169, 244, 0.5);
border-radius: 20px;
}
tap_action:
action: toggle
type: button
- entity: script.liste_courses_envoyer_stickysnoops
name: ENVOYER À STICKYSNOOPS
show_header_toggle: false
show_icon: false
style: |
ha-card {
width: 150px;
margin-left: auto;
margin-right: 0px;
background: none;
font-size: 6px;
font-weight: bold;
color: rgba(3, 169, 244, 0.5);
border-radius: 20px;
}
tap_action:
action: toggle
type: button
type: horizontal-stack
mode: vertical
style: |
ha-card {
border-radius: 20px;
}
type: custom:stack-in-card
conditions:
- entity: input_boolean.liste_courses
state: 'on'
type: conditional
Et le script qui va avec :
alias: '[Liste de Courses] Envoyer Liste à Quintus'
sequence:
- data: {}
entity_id: sensor.liste_de_courses
service: homeassistant.update_entity
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: notify.mobile_app_quintus_s21
data_template:
data:
sticky: 'true'
subject: <b>Liste de Courses</b>
message: '{{ states(''sensor.liste_de_courses'') }}'
title: Home Assistant
mode: single
Il suffit ensuite de faire un bouton qui « toggle » un boolean (ici nommé « liste_courses ») pour dévoiler la carte (si vraiment tu veux faire comme moi. Pas obligé)
Media Player :
Voici le code pompeux de ma carte :
cards:
- artwork: full-cover
entity: media_player.multiroom
hide:
icon_state: false
power_state: false
progress: false
repeat: false
runtime: false
shuffle: false
source: true
volume: false
icon: mdi:cast-audio
idle_view:
when_idle: true
when_paused: true
when_standby: true
name: Serveur Multiroom
shortcuts:
buttons:
- data:
card:
aspect_ratio: 160%
style: |
ha-card {
border-radius: 20px;
margin-left: auto;
margin-right: auto;
}
type: iframe
url: http://192.168.1.90:3689/#/
deviceID:
- this
large: true
style:
$: |
.mdc-dialog .mdc-dialog__container .mdc-dialog__surface {
border-radius: 22px;
}
.: |
:host {
--mdc-theme-surface: rgba(0,0,0,0);
--secondary-background-color: rgba(0,0,0,0.5);
--ha-card-background: rgba(40,40,40,0.8);
}
:host .content {
width: 60%;
top: 10px;
}
title: Liste de Lecture
icon: mdi:playlist-music
id: browser_mod.popup
type: service
- data:
card:
cards:
- cards:
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/Best.jpg
name: Best de Quintus
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_playlist_quintus
type: picture-entity
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/Trop Mimi.jpg
name: Un peu de douceur...bordel
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_playlist_stickysnoops
type: picture-entity
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/OST.jpg
name: OST
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_playlist_ost
type: picture-entity
type: horizontal-stack
- cards:
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/OUI_FM.jpg
show_name: false
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_ouifm
type: picture-entity
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/OUI FM - Rock Indé.png
show_name: false
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_ouifm_rockinde
type: picture-entity
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/OUI FM - Alternatif.png
show_name: false
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_ouifm_alternatif
type: picture-entity
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/OUI FM - Classic Rock.png
show_name: false
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_ouifm_classicrock
type: picture-entity
type: horizontal-stack
- cards:
- color_type: blank-card
type: custom:button-card
- aspect_ratio: 100%
entity: input_text.fete_homme
image: /local/Images/RTL2.png
show_name: false
show_state: false
style: |
ha-card {
border-radius: 10px;
text-align: center
}
tap_action:
action: call-service
service: rest_command.multiroom_rtl2
type: picture-entity
- color_type: blank-card
type: custom:button-card
type: horizontal-stack
type: vertical-stack
large: true
style:
$: |
.mdc-dialog .mdc-dialog__container .mdc-dialog__surface {
border-radius: 12px;
}
.: |
:host {
--mdc-theme-surface: rgba(0,0,0,0);
--secondary-background-color: rgba(0,0,0,0.5);
--ha-card-background: rgba(40,40,40,0.8);
width: 80%;
}
:host .content {
top: 10px;
}
title: Source de Musique
deviceID:
- this
icon: hass:folder-music
id: browser_mod.popup
type: service
column_height: 40
columns: 4
style: |
:host {
--mini-media-player-name-font-weight: bold;
--mini-media-player-overlay-color-stop: 25%;
--mini-media-player-overlay-color: rgba(40,40,40, .8);
--mini-media-player-accent-color: rgba(37,129,172, .6);
--mini-media-player-button-color: rgba(240,240,240, .1);
--mini-media-player-progress-height: 12px;
--mini-media-player-icon-color: rgb(37,129,172);
--mini-media-player-media-cover-info-color: rgba(137,229,272, 1);
background:
{% if is_state_attr('media_player.multiroom', 'media_album_name', 'OUI FM La Radio du Rock') %} url(/local/Images/OUI_FM.jpg)
{% elif is_state_attr('media_player.multiroom', 'media_album_name', 'OUI FM Rock Indé') %} url(/local/Images/OUI_FM_Rock.jpg)
{% elif is_state_attr('media_player.multiroom', 'media_album_name', 'OUI FM Alternatif') %} url(/local/Images/OUI_FM_Alternatif.jpg)
{% elif is_state_attr('media_player.multiroom', 'media_album_name', 'OUI FM Classic Rock') %} url(/local/Images/OUI_FM_Classic.jpg)
{% elif is_state_attr('media_player.multiroom', 'media_album_name', 'RTL2 [MP3 192]') %} url(/local/Images/RTL2.png)
{% else %} none
{% endif %} center / cover ;
}
toggle_power: false
type: custom:mini-media-player
- entities:
- entities:
- entity: media_player.multiroom_yamaha_5_1
name: Salon - Ampli 5.1
- entity: media_player.multiroom_varys
name: Salon - Varys
- entity: media_player.multiroom_marc_pc
name: Bureau
- entity: media_player.multiroom_salle_de_bain
name: Salle de Bain
head: group.pieces
padding: 2
show_state: false
type: custom:fold-entity-row
type: entities
mode: vertical
style:
.: |
ha-card {
border-radius: 20px;
}
type: custom:stack-in-card
Et c’est vrai qu’il est pompeux. Et bourré d’aberrations que je n’ai jamais pris le temps de corriger.
En exemple, je ne savais pas à l’époque faire de bouton sans avoir à mettre une entité. Du coup, tu verras dans mon code des « entity: input_text.fete_homme » complètement inutiles. Ils sont juste là car ils me permettaient de feinter et réussir à créer un bouton clickable. Alors que c’est tout à fait possible de faire sans (on a bien tous commencé un jour, hein )
Tout comme faire des rest_command pour appeler les playlist. Obsolète. Depuis, HA permet de les appeler directement depuis l’entité media_player avec un media_player.select_source.
Tout ça pour dire que cette carte est vieille. La vérité c’est que je ne l’utilise que rarement maintenant. Voilà pourquoi je ne lui ai pas donné un coup de neuf.
Pour les pochettes, soit le media_player les fournit directement, soit je passe par un background qui se met en fonction du « media_album_name » de ma source, exemple : OUI FM.
Lumières :
Pour ma view Lumières, ce n’est qu’une seule carte en mode panel. Je vais bientot la changer car je ne suis pas satisfait. Je pense passer sur le très joli style Minimalist relayé par @Clemalex.
Mais si tu souhaites prendre ce que j’ai fait jusque là (et que j’ai en fait copié sur d’autres), voici le code d’un bouton :
Code :
enableColumns: true
masonry: false
home: false
rows:
- columns:
- column: 1
entities:
- entities:
- card: custom:button-card
cardOptions:
entity: light.ambiance_salon
show_last_changed: true
state_display: |
[[[
if (entity.state === 'on')
return 'Allumée';
else
return 'Eteinte';
]]]
custom_fields:
icon_hue: >
<svg viewBox="0 0 32 32"><path d="M8.4395,16.668
C8.9795,16.552
9.5115,16.895 9.6285,17.435 C9.7455,17.974 9.4025,18.506 8.8625,18.623
C8.3225,18.74 7.7905,18.397 7.6735,17.857 C7.5565,17.317 7.9005,16.785
8.4395,16.668 M13.3275,15.611 C13.8665,15.495 14.3985,15.838
14.5155,16.377 C14.6325,16.917 14.2895,17.449 13.7505,17.566
C13.2105,17.683 12.6775,17.34 12.5605,16.8 C12.4445,16.261
12.7875,15.729 13.3275,15.611 M18.2135,14.555 C18.7535,14.438
19.2865,14.781 19.4025,15.32 C19.5195,15.86 19.1765,16.393 18.6365,16.51
C18.0965,16.626 17.5645,16.283 17.4485,15.743 C17.3315,15.203
17.6735,14.671 18.2135,14.555 M23.1005,13.498 C23.6405,13.381
24.1725,13.724 24.2905,14.264 C24.4065,14.804 24.0635,15.336
23.5235,15.453 C22.9835,15.569 22.4515,15.227 22.3355,14.687
C22.2175,14.147 22.5615,13.614 23.1005,13.498 M10.6695,20.639
L25.4735,17.444 C26.5535,17.211 27.2405,16.147 27.0065,15.067
C26.4495,12.484 23.9035,10.842 21.3205,11.399 L6.5165,14.594
C5.4365,14.827 4.7505,15.891 4.9835,16.971 C5.5415,19.554 8.0865,21.196
10.6695,20.639 M25,26 C24.447,26 24,25.553 24,25 C24,24.447 24.447,24
25,24 C25.553,24 26,24.447 26,25 C26,25.553 25.553,26 25,26 M20,26
C19.447,26 19,25.553 19,25 C19,24.447 19.447,24 20,24 C20.553,24
21,24.447 21,25 C21,25.553 20.553,26 20,26 M15,26 C14.447,26 14,25.553
14,25 C14,24.447 14.447,24 15,24 C15.553,24 16,24.447 16,25 C16,25.553
15.553,26 15,26 M10,26 C9.447,26 9,25.553 9,25 C9,24.447 9.447,24 10,24
C10.553,24 11,24.447 11,25 C11,25.553 10.553,26 10,26 M27,22 L9,22 C5,22
4,19 4,18 L4,23 C4,25.762 6.238,28 9,28 L27,28 C27.553,28 28,27.553
28,27 L28,23 C28,22.447 27.553,22 27,22 M22,8 C21.447,8 21,7.553 21,7
C21,6.447 21.447,6 22,6 C22.553,6 23,6.447 23,7 C23,7.553 22.553,8 22,8
M17,8 C16.447,8 16,7.553 16,7 C16,6.447 16.447,6 17,6 C17.553,6 18,6.447
18,7 C18,7.553 17.553,8 17,8 M12,8 C11.447,8 11,7.553 11,7 C11,6.447
11.447,6 12,6 C12.553,6 13,6.447 13,7 C13,7.553 12.553,8 12,8 M7,8
C6.447,8 6,7.553 6,7 C6,6.447 6.447,6 7,6 C7.553,6 8,6.447 8,7 C8,7.553
7.553,8 7,8 M23,4 L5,4 C4.447,4 4,4.447 4,5 L4,9 C4,9.553 4.447,10 5,10
L23,10 C27,10 28,13 28,14 L28,9 C28,6.238 25.762,4 23,4"
style="fill:#C0C0C0;"></path> <g><circle cx="7" cy="7" r="0.878"
style="fill:var(--button-card-light-color)"/> <circle cx="17" cy="7"
r="0.878" style="fill:var(--button-card-light-color)"/> <circle cx="22"
cy="7" r="0.878" style="fill:var(--button-card-light-color)"/> <circle
cx="8.651" cy="17.646" r="0.878"
style="fill:var(--button-card-light-color)"/> <circle cx="13.538"
cy="16.589" r="0.878" style="fill:var(--button-card-light-color)"/>
<circle cx="18.425" cy="15.532" r="0.878"
style="fill:var(--button-card-light-color)"/> <circle cx="23.313"
cy="14.475" r="0.878" style="fill:var(--button-card-light-color)"/>
<circle cx="10" cy="25" r="0.878"
style="fill:var(--button-card-light-color)"/> <circle cx="15" cy="25"
r="0.878" style="fill:var(--button-card-light-color)"/> <circle cx="20"
cy="25" r="0.878" style="fill:var(--button-card-light-color)"/> <circle
cx="25" cy="25" r="0.878" style="fill:var(--button-card-light-color)"/>
<circle cx="12" cy="7" r="0.878"
style="fill:var(--button-card-light-color)"/></g> </svg>
styles:
card:
- font-family: Sf Display
- letter-spacing: 0.05vw
- font-weight: bold
- font-size: 100%
name:
- top: 30%
- left: 54%
- position: absolute
label:
- top: 42%
- left: 54%
- position: absolute
state:
- top: 36%
- left: 54%
- position: absolute
custom_fields:
icon_hue:
- top: 2%
- left: 2%
- width: 40%
- position: absolute
circle:
- top: 2%
- left: 74%
- width: 24%
- position: absolute
- letter-spacing: 0.03vw
template: light
higherSize: 1
wider: true
widerSize: 2
noPadding: true
title: Ambiance
tileOnRow: 2
title: Lumières
titleColor: '#FFF'
style: |
:host {
--tile-background: rgba(255, 255, 255, 0.1);
--tile-border-radius: 10px;
--tile-width: 100px;
--tile-height: 100px;
--tile-on-background: none;
--tile-name-text-color: rgba(255, 255, 255, 1);
--tile-on-name-text-color: rgba(0, 0, 0, 1);
--tile-state-text-color: rgba(0, 0, 0, 0.7);
--tile-on-state-text-color: rgba(255,255,255, 1);
--tile-state-changed-text-color: rgb(255, 255, 255);
--tile-unavailable-state-text-color: rgba(255, 0, 0, 1);
--tile-value-text-color: rgba(255, 0, 0, 1);
--tile-icon-color: rgba(0, 0, 0, 0.6);
--tile-on-icon-color: #F7D959;
--tile-width-mobile: 140px;
--tile-height-mobile: 140px;
background: none;
}
type: custom:homekit-card
Quand tu vois la gueule du code pour 1 seul bouton, tu comprendras que je ne te mets pas toute la page
Je pense qu’avec ça, tu devrais t’en sortir. Mais si tu coinces, tu sais quoi faire
Merci pour le coup de main, c’est super…
Je jette un coup d’oeil aux lumiere, et je vois qu’en mettant la carte, il me dit:
Button-card template ‹ light › is missing!
Tu as un ou plusieurs template qui fonctionne avec la carte ? si oui, tu sais me les donner et me dire ou les mettre stp.
C’est gentil a toi… je suis assez novice dans la mise en page des dashboard, avec template, sensors et tout les trucs du genre !
encore merci.
les templates faut les ajouter en haut du dashboard en mode RAW
Ah bien vu! Euh…c’était un test
Voici en effet tous mes templates :
button_card_templates:
base:
aspect_ratio: 1/1
show_state: true
show_icon: false
state_display: |
[[[
if (entity.state === 'on')
return 'Allumé';
else
return 'Eteint';
]]]
state:
- value: 'on'
styles:
card:
- background-color: rgba(255, 255, 255, 0.8)
- font-weight: bold
name:
- color: rgba(0, 0, 0, 1)
- font-weight: bold
state:
- color: rgba(0, 0, 0, 0.6)
label:
- color: rgba(0, 0, 0, 0.6)
- value: 'off'
styles:
name:
- color: rgba(0, 0, 0, 1)
- font-weight: bold
tap_action:
action: toggle
haptic: light
styles:
name:
- top: 74%
- left: 6%
- position: absolute
label:
- top: 84%
- left: 40%
- position: absolute
state:
- top: 84%
- left: 6%
- position: absolute
icon:
- top: 44%
- left: 11%
- position: absolute
card:
- font-family: Sf Display
- letter-spacing: 0.05vw
- font-weight: bold
- color: rgba(0, 0, 0, 0.4)
- font-size: 80%
- background-color: rgba(140, 140, 140, 0.8)
- border-radius: 0.8vw
- box-shadow: none
- transition: none
custom_fields:
circle:
- top: 4%
- left: 66%
- width: 30%
- position: absolute
- letter-spacing: 0.03vw
loader:
custom_fields:
loader: >
[[[ if (entity.state === 'on') { return '<img
src="/local/Icones/loader.svg" width="100%">'; } ]]]
styles:
custom_fields:
loader:
- filter: '[[[ return entity.state === ''off'' ? ''invert(1)'' : ''none''; ]]]'
- top: '-4%'
- left: 70%
- width: 36%
- position: absolute
- opacity: 0.6
light:
styles:
card:
- box-shadow: 0px 0px 20px 3px var(--button-card-light-color-no-temperature)
template:
- base
custom_fields:
circle: >
[[[ if (entity.state === 'on' && entity.attributes.brightness) { const
brightness = Math.round(entity.attributes.brightness / 2.54); const
radius = 20.5; const circumference = radius * 2 * Math.PI; return `<svg
viewBox="0 0 50 50"><circle cx="25" cy="25" r="${radius}"
stroke="#b2b2b2" stroke-width="1.5" fill="none" style=" transform:
rotate(-90deg); transform-origin: 50% 50%; stroke-dasharray:
${circumference}; stroke-dashoffset: ${circumference - brightness / 100
* circumference};" /> <text x="50%" y="54%" fill="#8d8e90"
font-size="14" text-anchor="middle"
alignment-baseline="middle">${brightness}<tspan
font-size="10">%</tspan></text></svg>`; } ]]]
hold_action:
action: fire-dom-event
browser_mod:
command: popup
card:
actionSize: 60px
actions:
- color: rgb(180, 200, 250)
name: Froid
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 126
- 150
- 255
- color: rgb(80, 100, 250)
name: Myrtille
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 43
- 3
- 255
- color: rgb(0, 250, 200)
name: Turquoise
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 0
- 255
- 200
- color: rgb(255, 220, 150)
name: Chaud
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 255
- 126
actionsInARow: 4
brightnessHeight: 300px
brightnessWidth: 120px
entity: '[[[ return entity.entity_id ]]]'
icon: mdi:led-strip
settings:
closeButton: Retour
openButton: Roue Chromatique
settingsCard:
cardOptions:
cards:
- entities:
- brightness: false
brightness_icon: weather-sunny
child_card: true
color_picker: true
color_temp: true
color_wheel: true
consolidate_entities: false
effects_list: false
entity: '[[[ return entity.entity_id ]]]'
full_width_sliders: false
hide_header: true
persist_features: false
shorten_cards: false
show_slider_percent: false
smooth_color_wheel: true
temperature_icon: thermometer
type: custom:light-entity-card
white_icon: file-word-box
white_value: false
style: |
ha-card {
border-radius: 40px;
background: none;
box-shadow: none;
}
type: entities
- entities:
- colors:
- icon_color: rgb(180, 200, 250)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 126
- 150
- 255
type: call-service
- icon_color: rgb(80, 100, 250)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 43
- 3
- 255
type: call-service
- icon_color: rgb(0, 0, 250)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 0
- 2
- 255
type: call-service
- icon_color: rgb(220, 0, 250)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 146
- 2
- 255
type: call-service
- icon_color: rgb(240, 100, 250)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 0
- 250
type: call-service
- icon_color: rgb(255, 0, 0)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 0
- 0
type: call-service
- icon_color: rgb(255, 100, 0)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 40
- 0
type: call-service
- icon_color: rgb(255, 200, 0)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 200
- 0
type: call-service
- icon_color: rgb(255, 220, 150)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 255
- 255
- 126
type: call-service
- icon_color: rgb(0, 250, 200)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 0
- 255
- 200
type: call-service
- icon_color: rgb(40, 200, 40)
service: light.turn_on
service_data:
entity_id: '[[[ return entity.entity_id ]]]'
rgb_color:
- 0
- 255
- 2
type: call-service
entity: light.lumieres_cuisine
justify: center
size: 42
type: custom:rgb-light-card
entity: '[[[ return entity.entity_id ]]]'
style: |
ha-card {
border-radius: 40px;
background: none;
box-shadow: none;
}
type: entities
type: vertical-stack
cardStyle: |
background-color:#FFF;
type: entities
sliderColoredByLight: true
switchHeight: 400px
switchWidth: 150px
type: custom:light-popup-card
deviceID:
- this
large: true
style:
$: |
.mdc-dialog .mdc-dialog__container {
width: 100%;
}
.mdc-dialog .mdc-dialog__container .mdc-dialog__surface {
width:100%;
box-shadow:none;
}
.: |
:host {
--mdc-theme-surface: rgba(0,0,0,0);
--secondary-background-color: rgba(0,0,0,0);
--ha-card-background: rgba(0,0,0,0);
--mdc-dialog-scrim-color: rgba(0,0,0,0.8);
--mdc-dialog-min-height: 100%;
--mdc-dialog-min-width: 100%;
--mdc-dialog-max-width: 100%;
}
mwc-icon-button {
color: #FFF;
}
title: Fermer
icon_button:
aspect_ratio: 4/3
color_type: icon
hold_action:
action: none
layout: vertical
show_label: false
show_name: false
show_state: false
styles:
card:
- border-radius: 10px
- border: solid 1px var(--primary-color)
- box-shadow: none
- padding: 6px 6px
- margin: 0px 0px
- '--paper-card-background-color': rgba(0, 0, 0, 0)
icon:
- width: 28px
name:
- justify-self: middle
- align-self: end
- font-size: 14px
- padding: 0px 0px
- color: var(--secondary-text-color)
tap_action:
action: call-service
menu_button:
aspect_ratio: 4/3
color_type: icon
hold_action:
action: none
layout: vertical
show_label: false
show_name: true
show_state: false
styles:
card:
- border-radius: 10px
- border: solid 1px var(--primary-color)
- box-shadow: none
- padding: 6px 6px
- margin: 0px 0px
- '--paper-card-background-color': rgba(0, 0, 0, 0)
icon:
- width: 28px
name:
- justify-self: middle
- align-self: end
- font-size: 14px
- padding: 0px 0px
- color: var(--secondary-text-color)
tap_action:
action: call-service
name_action:
styles:
name:
- display: flex
- align-items: center
- justify-content: center
- margin-top: 0.5px
card:
- background: '#FFFFFF10'
- color: '#9da0a2'
- border-radius: 0.6em
- box-shadow: none
- transition: none
- width: 100%
- padding: 1em 1.4em 1em 1.2em
- font-size: 1.06em
- font-weight: 500
- letter-spacing: 0.015em
style: '#name > ha-icon {width: 1.4em; margin-right: 0.3em; }'
A placer en effet, comme le dit @barto_95 , dans la partie « Editeur de configuration » (RAW), dans les 3 petits points en haut à droite de la page Lovelace.
On a tous été novices. Je le suis encore dans bien des domaines
Je teste media player.
et voici a quoi j’arrive… pas plus loin !!!
fermer:
et ouvert:
pas de pochette, et rien pour changer ma playlist.
j’ai oublier de faire quelque chose ??
De ce que je vois, tu as inclus le Media Player dans le groupe Pièces. Je me trompe?
Pourrais-je voir le code de ta carte (bancaire ) ?
L’arborescence doit être une Stack-in-card qui englobe un custom:mini-media-player et des entitites
je n’arrive pas a coller le code.
toggle_power: false
type: custom:mini-media-player
- entities:
- entities:
- entity: media_player.sonos
name: Sonos
- entity: media_player.alexa_salon
name: Salon - Alexa
- entity: media_player.google
name: Google
- entity: media_player.firetvstick_van
name: FireTV
head: group.group_pieces
padding: 2
show_state: false
type: custom:fold-entity-row
type: entities
mode: vertical
style:
.: |
ha-card {
border-radius: 20px;
}
type: custom:stack-in-card
voila la fin
en meme temps, ceci corespond a quoi ?
type: iframe
url: http://192.168.1.90:3689/#/
Concernant la liste des courses, tout est mis en place, mais une fois que je recois le message sur mon smartphone il me met:
Home assistant:
unknown
qu’ai-je oublier en chemin ???
Soucis avec mon sensors ?? car quand je prend l’entity du sensors: inconnu !!!
Sérieusement ? Pour toi il n’y a pas de soucis ?
Si ton entité est inconnu, tu reçois unknown… Donc tout va bien de ce côté
Recommence l’intégration du script python pour obtenir la liste de course…
Mon Media Player est un Forked Daapd, hébergé sur mon NAS. Ce iFrame renvoie à la page web de ce Forked. Quel est le tien? (ta source audio)
Essaie peut-être de copier pleinement mon code, puis de modifier avec tes entités? (mais je suppose que tu as fait comme ça)
Soucis avec mon sensors ?? car quand je prend l’entity du sensors: inconnu !!!
Je pense que @Clemalex a raison, il doit te manquer quelque chose au niveau du script, ou du sensor. Je ne pense pas avoir oublié quelque chose à te renseigner…?
j’ai trouver mon probleme qui etait un mauvais chemin.
Mais alors maintenant que ca fonctionne, voila ce que me donne le capteur:
ca donne pas ce qu’il faut !!
Ce formatage dans l’état du sensor est tout à fait normal (pour ma part, en tout cas)
les « b » sont des balises pour mettre en gras le titre. les « br » sont des retours à la ligne.
Tu as essayé de te l’envoyer sur ton phone (et donc ta montre)?
oups, désolé.
pour la liste des courses, oui, j’ai envoyer sur mon gsm et ca donne le meme message, avec les « b » identique au sensor
et de ce que je vois, ce n’est pas un soucis du script, mais plus un soucis du python.
#!/usr/local/bin/python
# coding: utf8
import json
with open('/config/python_scripts/.shopping_list.json') as data_file:
shoppingListData = json.load(data_file)
content = u"<b>Liste de Courses:</b><br>"
for entry in shoppingListData:
if not entry['complete']:
content += u"- %s<br>" % entry['name']
content += u"<br>"
print(content)
resultat sur mon gsm:
et voici mon script:
alias: '[Liste de Courses] Envoyer Liste à Schumi'
sequence:
- data: {}
service: homeassistant.update_entity
target:
entity_id: sensor.liste_de_courses
- delay:
hours: 0
minutes: 0
seconds: 2
milliseconds: 0
- service: notify.mobile_app_iphone
data_template:
data:
sticky: 'true'
subject: <b>Liste de Courses</b>
message: '{{ states(''sensor.liste_de_courses'') }}'
title: Home Assistant
mode: single