Oui c’est bien cela le problème ta syntaxe n’est pas la bonne si tu mets cela dans le fichier sensors.yaml.
ah zut je me doutais bien qu’il y avait un soucis… Mais je ne sais comment resoudre le soucis de syntaxe…
En suivant correctement le tutoriel ?
Pourquoi vouloir improviser sans maîtriser la chose ?
Pour cela que je demande de l’aide afin de progresser et apprendre de mes erreurs.
Si je comprends bien la premiere partie est sensors.yaml et la seconde creer un template.yaml ?
ou est ce que j’ai tout faux ?
Tout faux.
J’ai pas relu les 325 messages mais je lis dans le premier message :
Ok. Dedans pas de soucis de fonctionnement.
Mais je voulais juste faire quelque de propre et pas surcharger configuration.yaml.
Apres si c’'est pas possible, tant pis.
Si tu veux découper la configuration, il faut ajouter la ligne template: !include template.yaml
dans ton configuration.yaml.
Tu crées un fichier template.yaml dans /config ( ou homeassistant sous file editor )
dans le fichier template.yaml, tu colles le code :
- sensor:
- name: 'SpeedTest CLI Ping'
unique_id: speedtest_cli_ping
icon: mdi:speedometer
unit_of_measurement: ms
state_class: measurement
state: "{{ (states('sensor.speedtest_cli_data') | from_json).ping | round(2) }}"
- name: 'SpeedTest CLI Download'
unique_id: speedtest_cli_download
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) }}"
- name: 'SpeedTest CLI Upload'
unique_id: speedtest_cli_upload
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(2) }}"
de même pour le command_line, dans le configuration.yaml, tu ajoutes la ligne
command_line: !include command_line.yaml
tu crées un fichier command_line.yaml, et colle le code :
- sensor:
name: "SpeedTest CLI Data"
unique_id: speedtest_cli_data
command: "/config/3rdparty/speedtest/speedtest --format=json --accept-license --accept-gdpr"
#Toutes les 4 heures, 60 * 60 * 4 = 14400 3600 = 1 heure
scan_interval: 3600
command_timeout: 60
value_template: >-
{{
{
"ping": value_json.ping.latency,
"download": value_json.download.bandwidth,
"upload": value_json.upload.bandwidth
}
| to_json
}}
Si c’est possible, mais pourquoi vouloir mettre des command_lines dans un fichier sensors.yaml
plutôt qu’un fichier command_line.yaml
.
C’est un peu choquant, non ?
Tu mélanges deux syntaxes, je crois.
C’est surtout qu’il ne sais pas ce qu’il fais
Merci pour ton aide
Je ne comprends pas les gens qui ne lisent pas un tuto et veulent changer des choses sans savoir.
Je n’ai pas de réponses à te donner
J’ai remis comme dans le tuto et tou est ok ca fonctionne nickel
Je t’ai mis les explications si tu veux découper ta configuration.
Salut @Guizmos
Je détère un peu ce sujet
As-tu le code mis à jour pour les dernières version de HA et de Bubble-Card ?
Et comment puis-je intégrer le code des cartes dans mon dashboard yaml qui contient déjà deux trois bricoles ?
Merci d’avance
Salut
Je comprends pas trop ta demande.
Le code n’a pas changé spécialement avec les dernières versions de HA.
Chez moi ça tourne et s’affiche correctement sans avoir changé le code.
Tu as déjà installé le module Speedtest et est-il fonctionnel ?
C’est la première étape, ensuite on regardera pour la partie card
Et bien j’ai du changer le Sensor car ça ne correspondait pas à ce qui est dans la doc de HA, ni à ce qu’à écrit @WarC0zes, mais bon, ça j’ai pu le corriger facilement
En revanche, je ne sais pas à quoi te sert la dernière partie de ce fichier :
- platform: template
sensors:
speedtest_temp_ping:
unique_id: speedtest_temp_ping
friendly_name: 'SpeedTest CLI Ping'
icon_template: mdi:speedometer
unit_of_measurement: ms
value_template: "{{ (states('sensor.speedtest_cli_data') | from_json).ping | round(2) }}"
speedtest_temp_download:
unique_id: speedtest_temp_download
friendly_name: 'SpeedTest CLI Download'
icon_template: mdi:download-network-outline
value_template: >-
{%- set download = ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) -%}
{% if download | float > 1000 %}
{{ (download | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ download | replace('.',',') }} Mb/s
{% endif %}
speedtest_temp_upload:
unique_id: speedtest_temp_upload
friendly_name: 'SpeedTest CLI Upload'
icon_template: mdi:upload-network-outline
value_template: >-
{%- set upload = ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(2) -%}
{% if upload | float > 1000 %}
{{ (upload | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ upload | replace('.',',') }} Mb/s
{% endif %}
je n’ai vu nul part de référence à ces ID dans ton code de carte
Sachant qu’en plus friendly_name
, icon_template
, value_template
me génère des erreurs dans HA.
Je pense que la manière de coder ça a dûe changer dans des MAJ de HA. Je ne l’ai donc pas mis.
Est-ce que ça sert ?
Je vais probablement prendre le code qui transforme les valeurs de débits en GBps si c’est supérieur à 1000.
Est-ce que c’est possible de mettre cette conversion dans le code state
des deux sensors suivants ?
- name: 'SpeedTest CLI Download'
unique_id: speedtest_cli_download
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(2) }}"
- name: 'SpeedTest CLI Upload'
unique_id: speedtest_cli_upload
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(2) }}"
Ensuite, ma grosse question porte sur les cartes ^^
Est-ce que si je colle dans dans un dashboard tout neuf ça fonctionnera ?
Idéalement je voudrais placer dans ce dashboard, dans une section séparée :
# dashboard_test.yaml
# ========================================================================================
# ===================== Dashboard de test Bubble-Cards, avec Popups ======================
# ========================================================================================
views:
- path: default_view
title: Home
icon: mdi:home
type: custom:masonry-layout
layout:
width: 300
max_cols: 2
background:
image: /local/_wallpapers/homekit-bg-blue-red.jpg
cards:
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Les Popups ║
# ╚══════════════════════════════════════════════════════════════════════════╝
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ UPDATES POPUP ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Source : https://forum.hacf.fr/t/maj-de-hacs-version-1-34-vers-la-version-2-0-procedure-dinstallation/46439/72
- type: vertical-stack
cards:
- type: custom:bubble-card
card_type: pop-up
hash: "#update"
name: Mises à jour
icon: mdi:update
close_on_click: false
sub_button:
- entity: switch.hacs_pre_release
name: Beta
show_name: false
icon: ''
show_state: true
show_last_changed: false
show_attribute: false
tap_action:
action: toggle
show_icon: false
show_background: true
# ╔══════════════════════════════════════════════════════════════════════════╗
# ║ Les Cartes ║
# ╚══════════════════════════════════════════════════════════════════════════╝
- type: custom:bubble-card
card_type: button
button_type: state
card_layout: large-2-rows
name: Update(s) Software & modules
entity: sensor.texte_avec_nombre_de_mise_a_jour_total
icon: mdi:update
show_state: true
button_action:
tap_action:
action: navigate
navigation_path: '#update'
sub_button:
- entity: sensor.tplt_available_updates_system
icon: mdi:home-assistant
show_background: false
show_state: true
tap_action:
action: more-info
- entity: sensor.tplt_available_updates_addon
icon: mdi:puzzle
show_background: false
show_state: true
tap_action:
action: more-info
- entity: sensor.tplt_available_updates_hacs
icon: mdi:view-module
show_background: false
show_state: true
tap_action:
action: more-info
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ UPDATES CARDS ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Source : https://forum.hacf.fr/t/maj-de-hacs-version-1-34-vers-la-version-2-0-procedure-dinstallation/46439/72
- type: conditional
conditions:
- condition: state
entity: binary_sensor.tplt_available_updates
state: 'on'
card:
type: vertical-stack
cards:
- type: custom:bubble-card
card_type: separator
name: "Mise(s) à jour disponible(s):"
<<: &separator
styles: |-
ha-card { color: var(--primary-text-color); }
.bubble-line {
background: var(--primary-text-color);
opacity: 0.2;
}
- !include /config/YAML/dashboards/card_update/card_update_available.yaml
- type: conditional
conditions:
- condition: state
entity: binary_sensor.tplt_skipped_updates
state: 'on'
card:
type: vertical-stack
cards:
- type: custom:bubble-card
card_type: separator
name: "Mise(s) à jour ignorée(s):"
<<: *separator
- !include /config/YAML/dashboards/card_update/card_update_skipped.yaml
- type: conditional
conditions:
- condition: state
entity: binary_sensor.tplt_update_restart
state: 'on'
card:
type: markdown
card_mod:
class: stock
style:
.: |
ha-markdown {
padding: 0px !important;
}
ha-markdown $:
.: |
ha-alert {
margin: 0px !important;
}
ha-alert $: |
.issue-type::after {
border-radius: var(--ha-card-border-radius) !important;
}
p: |
ha-alert {
border-radius: var(--ha-card-border-radius);
border: 2px dashed var(--error-color);
}
content: >
<ha-alert alert-type="error">{{ state_attr('binary_sensor.tplt_update_restart','list') }}</ha-alert>
C’est possible ?
@Guizmos
Je viens de tenter de placer ton code dans une section :
# ... voir code prédécent pour ce qui précède ...
- path: speedtest
title: Speetest
icon: mdi:speedometer
type: custom:masonry-layout
layout:
width: 300
max_cols: 2
background:
image: /local/_wallpapers/homekit-bg-blue-red.jpg
tap_action:
action: fire-dom-event
haptic: heavy
browser_mod:
service: browser_mod.popup
data:
style: |-
--popup-header-background-color: black;
--popup-background-color: transperant;
--popup-border-radius: 15px;
--popup-border-color: transparent;
--popup-padding-x: 5px;
size: normal
content:
type: custom:button-card
show_entity_picture: false
entity: template
name: Speedtest
show_icon: false
show_name: true
tap_action:
action: navigate
navigation_path: '#empty'
styles:
card:
- height: 480px
- top: 0px
- border-radius: 10px
- background-color: transparent
- '--mdc-ripple-press-opacity': 0
name:
- z-index: 2
- position: absolute
- font-size: 45px
- font-weight: lighter
- justify-self: start
- color: white
- left: 25px
- top: 20px
icon:
- width: 50%
img_cell:
- z-index: 2
custom_fields:
blur:
- z-index: 1
- top: 0%
- left: 0%
- width: 100%
- height: 100%
- border-radius: 10px
- position: absolute
- background-color: rgba(0, 0, 0, 0.1)
- backdrop-filter: blur(10px)
- '-webkit-backdrop-filter': blur(20px)
temp:
- z-index: 2
- position: absolute
- top: 25%
- left: 5%
- height: 100%
- width: 90%
custom_fields:
blur: |
<div></div>
temp:
card:
type: vertical-stack
cards:
- type: custom:button-card
tap_action:
action: call-service
service: homeassistant.update_entity
service_data:
entity_id: sensor.speedtest_cli_data
color: var(--google-grey)
show_icon: true
show_label: false
show_name: true
styles:
icon:
- color: rgba(var(--color-theme),0.9)
- width: 20px
img_cell: null
name:
- font-weight: bold
- font-size: 16px
- place-self: start
- margin: 15px 0 0 15px
grid:
- grid-template-areas: '"i n item1" "i n item1"'
- grid-template-columns: 1fr 10fr 1fr
- grid-template-rows: auto
card:
- box-shadow: none
- border-radius: 20px
- padding_bottom: '-8px'
- height: 65px
- padding-top: 5px
- padding-left: 5px
- '--mdc-ripple-color': white
- '--mdc-ripple-press-opacity': 0.9
name: Démarrer Speedtest
icon: mdi:speedometer
custom_fields:
item1:
card:
type: custom:button-card
show_icon: true
show_name: false
show_label: false
styles:
icon:
- color: rgba(var(--color-theme),0.9)
- width: 20px
grid:
- grid-template-areas: i
- grid-template-columns: auto
- grid-template-rows: auto
card:
- box-shadow: none
- background: rgba(0, 0, 0, 0.0)
- border: none
icon: mdi:chevron-right
- type: custom:swipe-card
start_card: 1
parameters:
effect: coverflow
roundLengths: true
speed: 650
spaceBetween: 20
threshold: 7
coverflowEffect:
rotate: 80
depth: 300
start_card: 1
cards:
- type: custom:mini-graph-card
entities:
- entity: sensor.speedtest_cli_download
name: Download
decimals: '0'
more_info: true
line_width: 2
hours_to_show: 24
points_per_hour: 2
show:
graph: line
extrema: true
color_thresholds:
- value: 0
color: '#ef1d0f'
- value: 2000
color: '#ef5a0f'
- value: 3000
color: '#f0da11'
- value: 4000
color: '#11f13a'
- value: 7000
color: '#1da4f2'
style: |
ha-card .header.flex .name.flex {
color: #44739e;
font-size: 14px;
}
.header.flex .icon {
--mdc-icon-size: 28px;
}
:host {
--card-mod-icon-color: #44739e;
}
.fill {
fill: white;
opacity: 0.2 !important;
}
ha-card {
box-shadow: none;
}
ha-card .states.flex::after {
content: "{{states('sensor.speedtest_cli_server_name')}}";
white-space: pre;
background-color: rgba(68, 115, 158,0.4);
padding: 2px 2px 0px 2px;
border-radius: 4px;
font-size: 9px;
}
- type: custom:mini-graph-card
entities:
- entity: sensor.speedtest_cli_upload
name: Upload
name: Upload
decimals: '0'
more_info: true
line_width: 2
hours_to_show: 24
points_per_hour: 2
show:
graph: line
extrema: true
color_thresholds:
- value: 0
color: '#ef1d0f'
- value: 2000
color: '#ef5a0f'
- value: 3000
color: '#f0da11'
- value: 4000
color: '#11f13a'
- value: 7000
color: '#1da4f2'
style: |
ha-card .header.flex .name.flex {
color: #44739e;
font-size: 14px;
}
.header.flex .icon {
--mdc-icon-size: 28px;
}
:host {
--card-mod-icon-color: #44739e;
}
.fill {
fill: white;
opacity: 0.2 !important;
}
ha-card {
box-shadow: none;
}
ha-card .states.flex::after {
content: "{{states('sensor.speedtest_cli_server_name')}}";
white-space: pre;
background-color: rgba(68, 115, 158,0.4);
padding: 2px 2px 0px 2px;
border-radius: 4px;
font-size: 9px;
}
- type: custom:mini-graph-card
entities:
- entity: sensor.speedtest_cli_ping
name: Ping
name: Ping
decimals: '0'
more_info: true
line_width: 2
hours_to_show: 24
points_per_hour: 2
show:
graph: line
extrema: true
color_thresholds:
- value: 0
color: '#ef1d0f'
- value: 10
color: '#ef5a0f'
- value: 15
color: '#f0da11'
- value: 20
color: '#11f13a'
- value: 25
color: '#1da4f2'
style: |
ha-card .header.flex .name.flex {
color: #44739e;
font-size: 14px;
}
.header.flex .icon {
--mdc-icon-size: 28px;
}
:host {
--card-mod-icon-color: #44739e;
}
.fill {
fill: white;
opacity: 0.2 !important;
}
ha-card {
box-shadow: none;
}
ha-card .states.flex::after {
content: "{{states('sensor.speedtest_cli_server_name')}}";
white-space: pre;
background-color: rgba(68, 115, 158,0.4);
padding: 2px 2px 0px 2px;
border-radius: 4px;
font-size: 9px;
}
- type: vertical-stack
cards:
- type: markdown
content: >-
![Image]({{ states('sensor.speedtest_cli_url')+
'.png' }})
card_mod:
style: |
ha-card {
--ha-card-background: transparent;
color: rgb(255,255,255);
border-color: transparent;
- type: custom:html-card
name: Speedtest
content: >
<a href="[[sensor.speedtest_cli_url]]">Speedtest
Résultat</a>
card_mod:
style: |
ha-card {
--ha-card-background: transparent;
color: rgb(255,255,255);
border-color: transparent;
margin-left: 0px;
margin-top: -40px;
Je n’ai pas d’erreurs, mais je n’ai rien dans la section :
Concernant ton problème avec le template (prmièree partie qui génère des erreurs) tu dois avoir une mauvaise mise en forme :
template:
- sensor:
- name: 'SpeedTest CLI Ping'
unique_id: speedtest_cli_ping
icon: mdi:speedometer
unit_of_measurement: ms
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).ping) }}"
- name: 'SpeedTest CLI Download'
unique_id: speedtest_cli_download
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(0) }}"
- name: 'SpeedTest CLI Upload'
unique_id: speedtest_cli_upload
icon: mdi:speedometer
unit_of_measurement: Mbit/s
state_class: measurement
state: "{{ ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(0) }}"
- name: Speedtest Server Name
unique_id: speedtest_Server_Name
state: '{{ ((states("sensor.speedtest_cli_data") | from_json).server_name) }}'
- name: Speedtest Server Host
unique_id: speedtest_Server_Host
state: '{{ ((states("sensor.speedtest_cli_data") | from_json).server_host) }}'
- name: 'Speedtest CLI URL'
unique_id: speedtest_url
state: '{{ ((states("sensor.speedtest_cli_data") | from_json).url) }}'
Concernant la conversion pour afficher du Gbit au lieu des Mbit, voici ce que j’ai pour toi :
sensor:
- platform: template
sensors:
speedtest_temp_ping:
unique_id: speedtest_temp_ping
friendly_name: 'SpeedTest CLI Ping'
icon_template: mdi:speedometer
unit_of_measurement: ms
value_template: "{{ (states('sensor.speedtest_cli_data') | from_json).ping | round(2) }}"
speedtest_temp_download:
unique_id: speedtest_temp_download
friendly_name: 'SpeedTest CLI Download'
icon_template: mdi:download-network-outline
value_template: >-
{%- set download = ((states('sensor.speedtest_cli_data') | from_json).download * 8 / 1000 / 1000) | round(1) -%}
{% if download | float > 1000 %}
{{ (download | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ download | replace('.',',') }} Mb/s
{% endif %}
speedtest_temp_upload:
unique_id: speedtest_temp_upload
friendly_name: 'SpeedTest CLI Upload'
icon_template: mdi:upload-network-outline
value_template: >-
{%- set upload = ((states('sensor.speedtest_cli_data') | from_json).upload * 8 / 1000 / 1000) | round(0) -%}
{% if upload | float > 1000 %}
{{ (upload | int / 1000) | round(2) | replace('.',',') }} Gb/s
{% else %}
{{ upload | replace('.',',') }} Mb/s
{% endif %}
Sensor de base :
Sensor en Gbit: