Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
? RMS VE – Intégration Home Assistant (Guide complet)
#1
Bonjour à tous,

Je vous partage ici la procédure complète pour installer et utiliser l’intégration RMS VE dans Home Assistant, permettant de piloter et superviser un routeur de charge VE.
J'avais fait un premier post en utilisant les packtages.. mais c'etait pas trés propre....

? Installation via HACS
1. Ajouter le dépôt
Dans Home Assistant Community Store (HACS) :
  • Aller dans Integrations
  • Menu (⋮) → Custom repositories
Ajouter :
Code :
https://github.com/Geosr600/ha-rms-ve
Type :  Integration


2. Installation:
  • Rechercher RMS VE
  • Installer
  • Redémarrer Home Assistant

? Configuration
Après redémarrage :
  1. Aller dans :
    Paramètres → Appareils & Services
  2. Ajouter :
    RMS VE
Paramètres demandés :
  • Adresse IP du routeur VE
  • Nom de l’équipement
? Le nom servira de base pour les entités



?️ Feedback / contributions
N’hésitez pas à :
  • remonter des bugs
  • proposer des améliorations
  • partager vos dashboards
? Repo GitHub :
https://github.com/Geosr600/ha-rms-ve
Répondre

#2
Tu es un champion.
Répondre

#3
Bravo Geosr, c'est TOP !
Config : 3 routeurs F1ATB en V17.15 - 2 routeurs fixes en mode Triacs + 1 routeur mobile polyvalent en mode : Triac+SSR + 1 afficheur distant ESP32-S3
PV : (8*425W + Onduleur SunGrow 3KW) + (2 *500w + MO Hoymiles HMS-1000W-2T)
Supervision & Domotique : F1atb + Home Assistant / Shelly & MQTT
Répondre

#4
(Hier, 08:59 AM)grostoto a écrit : Tu es un champion.

Merci...

Cela sera plus simple que la première méthode...

N'hésite pas a me dire s'il y a des bug chez toi
Répondre

#5
je partage une card, on peut la découper en petits bouts..

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:
            - height: 60px
            - border-radius: 16px
            - background-color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 3
                ? 'rgba(244, 67, 54, 0.8)' : '#1a1a1a' ]]]
            - border: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 3
                ? '2px solid #f44336' : '1px solid #333' ]]]
            - box-shadow: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 3
                ? '0 0 15px rgba(244,67,54,0.6)' : 'none' ]]]
          icon:
            - color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 3
                ? 'white' : '#f44336' ]]]
          name:
            - color: white
            - font-weight: 700
            - font-size: 11px
      - type: custom:button-card
        name: Auto
        icon: mdi:flash-auto
        tap_action:
          action: call-service
          service: script.ve_mode_auto
        styles:
          card:
            - height: 60px
            - border-radius: 16px
            - background-color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 0
                ? 'rgba(76, 175, 80, 0.8)' : '#1a1a1a' ]]]
            - border: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 0
                ? '2px solid #4caf50' : '1px solid #333' ]]]
            - box-shadow: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 0
                ? '0 0 15px rgba(76,175,80,0.6)' : 'none' ]]]
          icon:
            - color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 0
                ? 'white' : '#4caf50' ]]]
          name:
            - color: white
            - font-weight: 700
            - font-size: 11px
      - type: custom:button-card
        name: Semi-auto
        icon: mdi:sync
        tap_action:
          action: call-service
          service: script.ve_mode_semi_auto
        styles:
          card:
            - height: 60px
            - border-radius: 16px
            - background-color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 1
                ? 'rgba(33, 150, 243, 0.8)' : '#1a1a1a' ]]]
            - border: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 1
                ? '2px solid #2196f3' : '1px solid #333' ]]]
            - box-shadow: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 1
                ? '0 0 15px rgba(33,150,243,0.6)' : 'none' ]]]
          icon:
            - color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 1
                ? 'white' : '#2196f3' ]]]
          name:
            - color: white
            - font-weight: 700
            - font-size: 11px
      - type: custom:button-card
        name: Manuel
        icon: mdi:hand-back-right
        tap_action:
          action: call-service
          service: script.ve_mode_manuel
        styles:
          card:
            - height: 60px
            - border-radius: 16px
            - background-color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 2
                ? 'rgba(156, 39, 176, 0.8)' : '#1a1a1a' ]]]
            - border: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 2
                ? '2px solid #9c27b0' : '1px solid #333' ]]]
            - box-shadow: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 2
                ? '0 0 15px rgba(156,39,176,0.6)' : 'none' ]]]
          icon:
            - color: >-
                [[[ return states['sensor.borne_ve_api']?.attributes?.mode == 2
                ? 'white' : '#9c27b0' ]]]
          name:
            - color: white
            - font-weight: 700
            - font-size: 11px
  - type: tile
    entity: number.courant_borne_ve_dynamique
    name: réglage intensité
    icon: mdi:lightning-bolt
    features:
      - type: numeric-input
    card_mod:
      style: |
        ha-card {
          {% set v = states('number.courant_borne_ve_dynamique') | float(0) %}
          {% set c = '#4caf50' if v < 14 else '#ff9800' if v <= 16 else '#f44336' %}
          --tile-color: {{ c }} !important;
        }
        ha-control-slider {
          --control-slider-background: rgba(255, 255, 255, 0.2) !important;
          --control-slider-thumb-visibility: visible !important;
        }
  - type: custom:button-card
    entity: sensor.etat_de_la_liaison_ve
    name: État de la liaison VE
    show_icon: true
    show_name: true
    show_state: true
    styles:
      grid:
        - grid-template-areas: "\"i n s\""
        - grid-template-columns: 45px auto max-content
        - align-items: center
      card:
        - padding: 8px 16px
        - background: none
        - border: none
        - box-shadow: none
        - "--wave-color": |
            [[[
              const v = states['sensor.courant_de_charge_ve'].state;
              if (v < 14) return '76, 175, 80';    // Vert (#4caf50)
              if (v <= 16) return '255, 152, 0';   // Orange (#ff9800)
              return '244, 67, 54';                // Rouge (#f44336)
            ]]]
      icon:
        - width: 40px
        - height: 40px
        - margin-left: 10px
        - color: |
            [[[
              const s = entity.state;
              if (s.includes('A -')) return '#9e9e9e';
              if (s.includes('B -')) return '#00b0ff';
              if (s.includes('C -')) return '#00b0ff';
              if (s.includes('F -')) return '#ff5252';
              return 'white';
            ]]]
      name:
        - justify-self: start
        - font-size: 14px
        - margin-left: 20px
      state:
        - justify-self: end
        - font-size: 14px
    custom_fields:
      wave: |
        [[[
          if (entity.state.includes('C -')) {
            return `
              <div class="wave-container">
                <svg class="wave-svg second" viewBox="0 0 1440 320"><path d="M0,160L48,170.7C96,181,192,203,288,218.7C384,235,480,245,576,240C672,235,768,213,864,202.7C960,192,1056,192,1152,181.3C1248,171,1344,149,1392,138.7L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>
                <svg class="wave-svg" viewBox="0 0 1440 320"><path d="M0,160L48,170.7C96,181,192,203,288,218.7C384,235,480,245,576,240C672,235,768,213,864,202.7C960,192,1056,192,1152,181.3C1248,171,1344,149,1392,138.7L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>
              </div>
            `;
          }
        ]]]
    extra_styles: |
      .wave-container {
        position: absolute;
        top: 0px;
        left: 8px;
        width: 70px;
        height: 55px;
        border-radius: 50%;
        overflow: hidden;
        z-index: 0;
        background: rgba(var(--wave-color), 0.1); /* Utilise la variable */
        pointer-events: none;
      }
      .wave-svg {
        position: absolute;
        bottom: -8px;
        left: 0;
        width: 400%;
        height: 140%;
        fill: rgba(var(--wave-color), 0.5); /* Utilise la variable */
        animation: wave-move 3s infinite linear;
      }
      .wave-svg.second {
        fill: rgba(var(--wave-color), 0.2); /* Utilise la variable */
        animation: wave-move 6s infinite linear;
        bottom: -0px;
      }
      @keyframes wave-move {
        0% { transform: translateX(0); }
        100% { transform: translateX(-70%); }
      }
      .img-cell {
        z-index: 1;
      }
  - type: custom:config-template-card
    entities:
      - number.courant_borne_ve_dynamique
      - sensor.courant_de_charge_ve
    card:
      type: custom:bar-card
      name: Courant Actuel
      direction: right
      height: 40px
      positions:
        icon: "off"
        indicator: "off"
        name: inside
        value: inside
      min: 4
      max: ${states['number.courant_borne_ve_dynamique'].attributes.max}
      severity:
        - color: "#00e676"
          from: 0
          to: 13.9
        - color: "#ffeb3b"
          from: 14
          to: 16
        - color: "#ff5252"
          from: 16.1
          to: 40
      style: |
        ha-card {
          background: #000;
          border-radius: 15px;
          border: 1px solid #444;
          padding: 10px;
        }
        /* Optionnel : ajoute du contraste au texte sur les couleurs claires */
        .bar-card-name, .bar-card-value {
          font-weight: bold;
          text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
        }
      entities:
        - entity: sensor.courant_de_charge_ve
  - type: entities
    title: Station de charge VE
    show_header_toggle: false
    entities:
      - entity: sensor.courant_de_charge_ve
        name: Courant de charge
        icon: mdi:flash
      - entity: sensor.routeur_maitre_routeur_rms_puissances_m
        name: Production-Consommation
        icon: mdi:solar-power-variant-outline
        card_mod:
          style: |

            :host {

              --paper-item-icon-color: #ff9800;

              background-color: rgba(144, 238, 144, 0.1);

            }
      - entity: sensor.recharge_cumulee_ve
        name: Recharge Cumulée d'énergie
      - entity: sensor.temps_de_charge_ve
        name: Temps de charge
      - entity: sensor.pwm_borne_ve
        name: PWM
        icon: mdi:pulse
      - entity: sensor.etat_de_la_liaison_ve
        name: État de la liaison VE
        card_mod:
          style:
            state-badge:
              $: |
                ha-state-icon {
                  {% set etat = states('sensor.etat_de_la_liaison_ve') %}
                  {% if 'A -' in etat %}
                    color: #9e9e9e !important;
                  {% elif 'B -' in etat %}
                    color: #00b0ff !important;
                  {% elif 'C -' in etat %}
                    color: #00e676 !important;
                    animation: blink 2s infinite;
                  {% elif 'F -' in etat %}
                    color: #ff5252 !important;
                  {% endif %}
                }
                ha-icon {
                  height: 40px !important;
                  width: 40px !important;
                }
                @keyframes blink {
                  50% { opacity: 0.3; }
                }
            .: |
              :host {
                --mdc-icon-size: 40px !important;
              }
      - entity: sensor.mode_de_fonctionnement_borne_ve
        name: Mode de fonctionnement
      - entity: number.courant_borne_ve_dynamique
        name: "I charge manuel :"
Répondre

#6
(Hier, 12:00 AM)Geosr a écrit : Je vous partage ici la procédure complète pour installer et utiliser l’intégration RMS VE dans Home Assistant, permettant de piloter et superviser un routeur de charge VE.

Merci pour ta contribution et pour la doc.
J'ai porté la doc dans la documentation générale Station de charge VE-RMS.
3 kWc - Enphase iq8hc
Enphase envoy metered
RMS triac - 2,2kW appoint ECS
RMS Station de charge VE-RMS
Merci André !
Répondre

#7
(Hier, 11:45 PM)Rakibou a écrit :
(Hier, 12:00 AM)Geosr a écrit : Je vous partage ici la procédure complète pour installer et utiliser l’intégration RMS VE dans Home Assistant, permettant de piloter et superviser un routeur de charge VE.

Merci pour ta contribution et pour la doc.
J'ai porté la doc dans la documentation générale Station de charge VE-RMS.

Avoir plaisir
Répondre



Atteindre :


Utilisateur(s) parcourant ce sujet :
5 visiteur(s)

Moteur MyBB, © 2002-2026 Melroy van den Berg.