RE: Intégration du RMS VE à HomeAssistant - grostoto - 27-03-2026
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).
RE: Intégration du RMS VE à HomeAssistant - Geosr - 27-03-2026
(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.....
RE: Intégration du RMS VE à HomeAssistant - Rakibou - 27-03-2026
(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).
RE: Intégration du RMS VE à HomeAssistant - grostoto - 27-03-2026
ok cool.
tu n'as pas corrigé l'erreur:
'"EnergieChargee_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
RE: Intégration du RMS VE à HomeAssistant - Geosr - 27-03-2026
Je t'avoue que j'avais pas passer au mode semi...
Apres cela donne au moins une piste au expert....
Cela fonctionne chez toi?
RE: Intégration du RMS VE à HomeAssistant - grostoto - 27-03-2026
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.
RE: Intégration du RMS VE à HomeAssistant - Geosr - 27-03-2026
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.
RE: Intégration du RMS VE à HomeAssistant - grostoto - 27-03-2026
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..)
RE: Intégration du RMS VE à HomeAssistant - grostoto - 27-03-2026
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..
|