Messages : 1,007
Sujets : 9
Inscription : Aug 2024
27-03-2026, 03:45 PM
(Modification du message : 27-03-2026, 03:46 PM par grostoto.)
bon, j'ai essayé d'aller chercher automatiquement les valeurs min et max dans le data pour le slider, mais sans succès...
dans le fichier c'est défini à 0 et 32, chez moi à 4.9 et 16: mais cela ne va pas les chercher.
si j'édite dans le fichier directement cela fonctionne, mais cela serait mieux de manière automatique.. (plus adaptif).
Messages : 17
Sujets : 2
Inscription : Jul 2024
27-03-2026, 04:33 PM
(Modification du message : 27-03-2026, 05:12 PM par Geosr.)
(27-03-2026, 03:45 PM)grostoto a écrit : bon, j'ai essayé d'aller chercher automatiquement les valeurs min et max dans le data pour le slider, mais sans succès...
dans le fichier c'est défini à 0 et 32, chez moi à 4.9 et 16: mais cela ne va pas les chercher.
si j'édite dans le fichier directement cela fonctionne, mais cela serait mieux de manière automatique.. (plus adaptif).
je viens de comprendre...
Remplace le fichier par ce contenu. attention au adresse IP.
Code : rest_command:
ve_set_mode:
url: "http://192.168.1.175/setMode?mode={{ mode }}"
method: GET
ve_set_current:
url: "http://192.168.1.175/setCurrent?amp={{ amp }}"
method: GET
script:
ve_mode_arret:
alias: "VE mode arrêt"
sequence:
- service: rest_command.ve_set_mode
data:
mode: 3
ve_mode_semi_auto:
alias: "VE mode semi-auto"
sequence:
- service: rest_command.ve_set_mode
data:
mode: 1
ve_mode_auto:
alias: "VE mode auto"
sequence:
- service: rest_command.ve_set_mode
data:
mode: 0
ve_mode_manuel:
alias: "VE mode manuel"
sequence:
- service: rest_command.ve_set_mode
data:
mode: 2
sensor:
- platform: rest
name: "Borne VE API"
resource: "http://192.168.1.175/data"
scan_interval: 1
timeout: 10
value_template: "{{ value_json.state | default('unknown') }}"
json_attributes:
- I_charge
- state
- cp_pwm_charging
- EnergieChargee_Wh
- mode
- I_min_c
- I_max
- I_charge_manual
- fact_Icharge
- TempsCharge_ms
- enab
- nb_depassement_soft
- nb_depassement_hard
template:
- number:
- name: "Courant borne VE dynamique"
unique_id: courant_borne_ve_dynamique
min: "{{ state_attr('sensor.borne_ve_api', 'I_min_c') | float(6) }}"
max: "{{ state_attr('sensor.borne_ve_api', 'I_max') | float(16) }}"
step: 1
unit_of_measurement: "A"
icon: mdi:ev-plug-ccs2
state: "{{ state_attr('sensor.borne_ve_api', 'I_charge_manual') | float(0) }}"
set_value:
service: rest_command.ve_set_current
data:
amp: "{{ value }}"
- sensor:
- name: "État de la liaison VE"
unique_id: etat_liaison_ve
state: >
{% set s = states('sensor.borne_ve_api') %}
{% if s == 'A' %}
A - Pas de véhicule
{% elif s == 'B' %}
B - Véhicule connecté
{% elif s == 'C' %}
C - Charge en cours
{% elif s == 'F' %}
F - Défaut
{% else %}
Inconnu
{% endif %}
icon: mdi:ev-station
- name: "Courant de charge VE"
unique_id: courant_charge_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'I_charge') | float(0) }}
unit_of_measurement: "A"
device_class: current
icon: mdi:current-ac
- name: "Recharge cumulée VE"
unique_id: recharge_cumulee_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'EnergieChargee_Wh') | float(0) }}
unit_of_measurement: "Wh"
device_class: energy
state_class: total_increasing
icon: mdi:battery-charging
- name: "Temps de charge VE"
unique_id: temps_charge_ve
state: >
{% set ms = state_attr('sensor.borne_ve_api', 'TempsCharge_ms') | int(0) %}
{% set total_s = (ms / 1000) | int %}
{% set h = total_s // 3600 %}
{% set m = (total_s % 3600) // 60 %}
{% set s = total_s % 60 %}
{{ '%02d:%02d:%02d' | format(h, m, s) }}
icon: mdi:timer-outline
- name: "PWM borne VE"
unique_id: pwm_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'cp_pwm_charging') | float(0) }}
unit_of_measurement: "%"
icon: mdi:sine-wave
- name: "Mode de fonctionnement borne VE"
unique_id: mode_fonctionnement_borne_ve
state: >
{% set m = state_attr('sensor.borne_ve_api', 'mode') | int(-1) %}
{% if m == 0 %}
Auto
{% elif m == 1 %}
Semi-auto
{% elif m == 2 %}
Manuel
{% else %}
Arrêt
{% endif %}
icon: mdi:cog
- name: "I charge manuel borne VE"
unique_id: i_charge_manuel_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'I_charge_manual') | float(0) }}
unit_of_measurement: "A"
device_class: current
icon: mdi:lightning-bolt
- name: "Courant minimum borne VE"
unique_id: i_min_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'I_min_c') | float(0) }}
unit_of_measurement: "A"
device_class: current
icon: mdi:current-dc
- name: "Courant maximum borne VE"
unique_id: i_max_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'I_max') | float(0) }}
unit_of_measurement: "A"
device_class: current
icon: mdi:current-ac
- name: "Facteur I charge borne VE"
unique_id: facteur_i_charge_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'fact_Icharge') | float(0) }}
icon: mdi:tune
- name: "Dépassements soft borne VE"
unique_id: depassements_soft_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'nb_depassement_soft') | int(0) }}
icon: mdi:alert-outline
- name: "Dépassements hard borne VE"
unique_id: depassements_hard_borne_ve
state: >
{{ state_attr('sensor.borne_ve_api', 'nb_depassement_hard') | int(0) }}
icon: mdi:alert
- binary_sensor:
- name: "Borne VE activée"
unique_id: borne_ve_activee
state: >
{{ state_attr('sensor.borne_ve_api', 'enab') | int(0) == 1 }}
icon: mdi:check-circle-outline
(27-03-2026, 08:58 AM)H3rv3 a écrit : Bravo, sans modification du code.
Ça devrait faire des heureux.
J'ai pas HA donc pas de tests de mon côté.
Merci à toute l'équipe pour le developpement et le code.
Tu as pas mal d'informations en tapant http://IProuteur/data
Cela peut vous etre utilise pour debug peut etre.. ou intégration dans un autres systeme domotique!!!
Et oui sans modification du code comme ca pas de soucis pour les maj futur.....
Messages : 330
Sujets : 20
Inscription : Feb 2025
27-03-2026, 05:33 PM
(Modification du message : 27-03-2026, 05:35 PM par Rakibou.)
(26-03-2026, 11:03 PM)Geosr a écrit : Loin d’être un expert en programmation, et encore moins en explications, je vous partage ma solution pour intégrer le routeur à Home Assistant.
[...]
Petit bonus : le fichier card.txt est prêt à être collé dans votre dashboard.
Bravo et merci pour cette belle contribution !
Si tu veux on peut ajouter une doc pour les utilisateurs de HA (il n'y en a pas dans l'équipe de développement).
3 kWc - Enphase iq8hc
Enphase envoy metered
RMS triac - 2,2kW appoint ECS
RMS Station de charge VE-RMS
Merci André !
Messages : 1,007
Sujets : 9
Inscription : Aug 2024
27-03-2026, 05:42 PM
(Modification du message : 27-03-2026, 06:12 PM par grostoto.)
ok cool.
tu n'as pas corrigé l'erreur:
'"EnergieCharge e_Wh", il faut mettre "EnergieCharge_Wh"
d'autre part, la modif du fichier plus haut implique la modif de la card (j'ai ajouté une ligne pour afficherle pwm).
Code : type: vertical-stack
cards:
- square: false
type: grid
columns: 4
cards:
- type: custom:button-card
name: Arrêt
icon: mdi:stop-circle
tap_action:
action: call-service
service: script.ve_mode_arret
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'var(--error-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'rgba(244, 67, 54, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? '0 0 10px rgba(244,67,54,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'var(--error-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? '700'
: '500';
]]]
- type: custom:button-card
name: Auto
icon: mdi:flash-auto
tap_action:
action: call-service
service: script.ve_mode_auto
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? '700'
: '500';
]]]
- type: custom:button-card
name: Semi-auto
icon: mdi:sync
tap_action:
action: call-service
service: script.ve_mode_semi_auto
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? '700'
: '500';
]]]
- type: custom:button-card
name: Manuel
icon: mdi:hand-back-right
tap_action:
action: call-service
service: script.ve_mode_manuel
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? '700'
: '500';
]]]
- type: custom:mushroom-number-card
entity: number.courant_borne_ve_dynamique
fill_container: false
layout: horizontal
secondary_info: state
primary_info: name
grid_options:
columns: 12
rows: 3
icon_type: icon
visibility:
- condition: state
entity: sensor.mode_de_fonctionnement_borne_ve
state: Manuel
- type: gauge
entity: sensor.courant_de_charge_ve
min: 5
max: 20
needle: false
severity:
green: 0
yellow: 16
red: 25
- type: entities
entities:
- entity: sensor.mode_de_fonctionnement_borne_ve
- entity: binary_sensor.borne_ve_activee
- entity: sensor.etat_de_la_liaison_ve
- entity: sensor.recharge_cumulee_ve
- entity: sensor.temps_de_charge_ve
- entity: sensor.pwm_borne_ve
il reste un point: en mode SEMI-AUTO, il faut aussi affcher le slidde, car la valeur mini du courant est celle réglé dans le slide.
je vais essayer de le faire.
voici le code pour la card afin que le slidder s'affiche également en mode Semi-auto:
Code : type: vertical-stack
cards:
- square: false
type: grid
columns: 4
cards:
- type: custom:button-card
name: Arrêt
icon: mdi:stop-circle
tap_action:
action: call-service
service: script.ve_mode_arret
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'var(--error-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'rgba(244, 67, 54, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? '0 0 10px rgba(244,67,54,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? 'var(--error-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 3
? '700'
: '500';
]]]
- type: custom:button-card
name: Auto
icon: mdi:flash-auto
tap_action:
action: call-service
service: script.ve_mode_auto
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 0
? '700'
: '500';
]]]
- type: custom:button-card
name: Semi-auto
icon: mdi:sync
tap_action:
action: call-service
service: script.ve_mode_semi_auto
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 1
? '700'
: '500';
]]]
- type: custom:button-card
name: Manuel
icon: mdi:hand-back-right
tap_action:
action: call-service
service: script.ve_mode_manuel
styles:
card:
- border-radius: 16px
- padding: 12px
- font-size: 14px
- border: 2px solid
- border-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'var(--primary-color)'
: 'rgba(150,150,150,0.25)';
]]]
- background-color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'rgba(33, 150, 243, 0.18)'
: 'var(--card-background-color)';
]]]
- box-shadow: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? '0 0 10px rgba(33,150,243,0.45)'
: 'none';
]]]
icon:
- color: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? 'var(--primary-color)'
: 'var(--primary-text-color)';
]]]
name:
- font-weight: |
[[[
return states['sensor.borne_ve_api']?.attributes?.mode == 2
? '700'
: '500';
]]]
- type: custom:mushroom-number-card
entity: number.courant_borne_ve_dynamique
fill_container: false
layout: horizontal
secondary_info: state
primary_info: name
grid_options:
columns: 12
rows: 3
icon_type: icon
visibility:
- condition: or
conditions:
- condition: state
entity: sensor.mode_de_fonctionnement_borne_ve
state: Manuel
- condition: state
entity: sensor.mode_de_fonctionnement_borne_ve
state: Semi-auto
display_mode: slider
- type: gauge
entity: sensor.courant_de_charge_ve
min: 5
max: 20
needle: false
severity:
green: 0
yellow: 16
red: 25
- type: entities
entities:
- entity: sensor.mode_de_fonctionnement_borne_ve
- entity: binary_sensor.borne_ve_activee
- entity: sensor.etat_de_la_liaison_ve
- entity: sensor.recharge_cumulee_ve
- entity: sensor.temps_de_charge_ve
- entity: sensor.pwm_borne_ve
Messages : 17
Sujets : 2
Inscription : Jul 2024
Je t'avoue que j'avais pas passer au mode semi...
Apres cela donne au moins une piste au expert....
Cela fonctionne chez toi?
Messages : 1,007
Sujets : 9
Inscription : Aug 2024
oui, cela fonctionne.
reste un truc que je ne me dépatouille pas:
le pas de réglage est de 1, mais j'aimerais le mettre à 0.1, sauf que cela me met plein de chiffres après la virgule si je met "step: 0.1" dans le fichier yaml.
Messages : 17
Sujets : 2
Inscription : Jul 2024
27-03-2026, 08:11 PM
(Modification du message : 27-03-2026, 08:12 PM par Geosr.)
Dans le yaml. Change step: 1 on 0.1
(27-03-2026, 05:33 PM)Rakibou a écrit : (26-03-2026, 11:03 PM)Geosr a écrit : Loin d’être un expert en programmation, et encore moins en explications, je vous partage ma solution pour intégrer le routeur à Home Assistant.
[...]
Petit bonus : le fichier card.txt est prêt à être collé dans votre dashboard.
Bravo et merci pour cette belle contribution !
Si tu veux on peut ajouter une doc pour les utilisateurs de HA (il n'y en a pas dans l'équipe de développement).
Bah oui avec plaisir. Je vous le refait au propre.... et je vous l'envoie.
Messages : 1,007
Sujets : 9
Inscription : Aug 2024
step: 1 on 0.1
c'est ce que j'ai fais, mais j'ai un comportement étrange de la valeur indiqué par le curseur quand on le bouge.
je vais essayer de limiter l'affichage de la valeur à une décimal (parfois il y en a 10..)
Messages : 1,007
Sujets : 9
Inscription : Aug 2024
en fait il y a besoin du slider aussi en mode auto.. car si on programme les heures creuses, il faut régler le courant..
|