Intégration onduleur solaire Sofar HYD 6000 EP

Bonjour, a tous

Pour effectuer le pilotage il y a egalement l’integration SOLAX
mais chez moi pas fiable a 100% j’ai tout de meme reussi a changer le mode d’injection a distance.

je cherche une solution directement connecté a l’onduler HYP6-EP via esphome mais je n’ai pas encore trouvé j’ai essayé de créé code a partir des adresses Solarman mais j’ai encore des erreurs.

Pour Solarman_LSE pas la version Wifi j’ai un fichier qui fonctionne pour l’HYD EP

# sofar_hyd3k-6k-ep.yaml
# Pour sofar solar HYDxxxx-EP
# Testé sur un HYD6000EP Sofar Solar avec une batterie DIY 14kw JKBMS

requests:
  - start: 0x0404      # Onduleur
    end: 0x041A
    mb_functioncode: 0x03
  - start: 0x0484      #GRID AC
    end: 0x04AF
    mb_functioncode: 0x03
  - start: 0x0507      #GRID EPS
    end: 0x050C
    mb_functioncode: 0x03
  - start: 0x0584      #Onduleur DC
    end: 0x0589
    mb_functioncode: 0x03
  - start: 0x0604      # batterie
    end: 0x060A        # fin de la première batterie après cela, continuez avec le pack de batteries 2, 3, 4
    mb_functioncode: 0x03
  - start: 0x0684      #Generation
    end: 0x069B
    mb_functioncode: 0x03
parameters:

  - group: Inverter
    items:
      - name: "État de l’onduleur"
        widget: "grid_status"
        class: ""
        state_class: "measurement"
        uom: ""
        scale: 1
        rule: 1
        registers: [ 0x0404 ]
        isstr: true
        lookup:
          - key: 0
            value: "Attente"
          - key: 1
            value: "Détection"
          - key: 2
            value: "Raccordé au réseau"
          - key: 3
            value: "Alimentation électrique de secours"
          - key: 4
            value: "Défaut récupérable"
          - key: 5
            value: "Défaut permanent"
          - key: 6
            value: "Mise à niveau"
          - key: 7
            value: "Auto-Rechargeable"
        icon: 'mdi:wrench'
      - name: "Température ambiante"
        widget: "dc_temp"
        class: "temperature"
        uom: "°C"
        scale: 1
        rule: 2
        registers: [ 0x0418 ]
        icon: 'mdi:thermometer'
      - name: "Température radiateur"
        widget: "ac_temp"
        class: "temperature"
        uom: "°C"
        scale: 1
        rule: 2
        registers: [ 0x041A ]
        icon: 'mdi:thermometer'

  - group: InverterDC
    items:
      - name: "Tension PV1"
        widget: "pv1_voltage"
        class: "voltage"
        state_class: "measurement"
        uom: "V"
        scale: 0.1
        rule: 1
        registers: [ 0x0584 ]
        icon: 'mdi:solar-power'
      - name: "Courant PV1"
        widget: "pv1_current"
        class: "current"
        state_class: "measurement"
        uom: "A"
        scale: 0.01
        rule: 1
        registers: [ 0x0585 ]
        icon: 'mdi:solar-power'
      - name: "Puissance PV1"
        widget: "pv1_power"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 1
        registers: [ 0x0586 ]
        icon: 'mdi:solar-power'
      - name: "Tension PV2"
        widget: "pv2_voltage"
        class: "voltage"
        state_class: "measurement"
        uom: "V"
        scale: 0.1
        rule: 1
        registers: [ 0x0587 ]
        icon: 'mdi:solar-power'
      - name: "Courant PV2"
        widget: "pv2_current"
        class: "current"
        state_class: "measurement"
        uom: "A"
        scale: 0.01
        rule: 1
        registers: [ 0x0588 ]
        icon: 'mdi:solar-power'
      - name: "Puissance PV2"
        widget: "pv2_power"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 1
        registers: [ 0x0589 ]
        icon: 'mdi:solar-power'

  - group: Battery
    items:
      - name: "Tension batterie"
        widget: "battery_voltage"
        class: "voltage"
        state_class: "measurement"
        uom: "V"
        scale: 0.1
        rule: 1
        registers: [ 0x0604 ]
        icon: 'mdi:battery'
      - name: "Courant batterie"
        widget: "battery_current"
        class: "current"
        state_class: "measurement"
        uom: "A"
        scale: 0.01
        rule: 2
        registers: [ 0x0605 ]
        icon: 'mdi:current-dc'
      - name: "Puissance batterie"
        widget: "battery_power"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 2
        registers: [ 0x0606 ]
        icon: 'mdi:battery-charging'
      - name: "Température batterie"
        widget: "battery_temp"
        class: "temperature"
        state_class: "measurement"
        uom: "°C"
        scale: 1
        rule: 2
        registers: [ 0x0607 ]
        icon: 'mdi:battery'
      - name: "SOC Batterie"
        widget: "battery_state"
        class: "battery"
        state_class: "measurement"
        uom: "%"
        scale: 1
        rule: 1
        registers: [ 0x0608 ]
        icon: 'mdi:battery'
      - name: "SOH Batterie"
        class: "battery"
        state_class: "measurement"
        uom: "%"
        scale: 1
        rule: 1
        registers: [ 0x0609 ]
        icon: 'mdi:battery'
      - name: "Cycles Batterie"
        class: ""
        state_class: "measurement"
        uom: "cycle"
        scale: 1
        rule: 1
        registers: [ 0x060A ]
        icon: 'mdi:battery'
    

  - group: GridAC
    items:
      - name: "Fréquence réseau"
        widget: "frequency_state"
        class: "current"
        state_class: "measurement"
        uom: "Hz"
        scale: 0.01
        rule: 1
        registers: [ 0x0484 ]
        icon: 'mdi:home-lightning-bolt'
      - name: "Puissance totale onduleur"
        widget: "load_state"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 2
        registers: [ 0x04AF ]
        icon: 'mdi:home-lightning-bolt'
      - name: "Puissance tableau principal"
        widget: "load2_state"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 2
        registers: [ 0x048F ]
        icon: 'mdi:home-lightning-bolt'
      - name: "Tension réseau"
        widget: "voltage_state"
        class: "voltage"
        state_class: "measurement"
        uom: "V"
        scale: 0.1
        rule: 1
        registers: [ 0x048D ]
        icon: 'mdi:lightning-bolt-outline'
      - name: "Courant Réseau"
        widget: "Current_state"
        class: "current"
        state_class: "measurement"
        uom: "A"
        scale: 0.01
        rule: 1
        registers: [ 0x048E ]
        icon: 'mdi:lightning-bolt-outline'
      - name: "Consommation réseau"
        widget: "grid_power"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 2
        registers: [ 0x0488 ]
        icon: 'mdi:lightning-bolt-outline'

  - group: GridEPS
    items:
      - name: "Fréquence EPS"
        widget: ""
        class: "current"
        state_class: "measurement"
        uom: "Hz"
        scale: 0.01
        rule: 1
        registers: [ 0x0507 ]
        icon: 'mdi:home-lightning-bolt'
      - name: "Tension EPS"
        widget: ""
        class: "voltage"
        state_class: "measurement"
        uom: "V"
        scale: 0.1
        rule: 1
        registers: [ 0x050A ]
        icon: 'mdi:lightning-bolt-outline'
      - name: "Courant EPS"
        widget: ""
        class: "current"
        state_class: "measurement"
        uom: "A"
        scale: 0.01
        rule: 1
        registers: [ 0x050B ]
        icon: 'mdi:lightning-bolt-outline'
      - name: "Puissance tableau secouru"
        widget: "load1_state"
        class: "power"
        state_class: "measurement"
        uom: ""
        scale: 10
        rule: 2
        registers: [ 0x050C ]
        icon: 'mdi:lightning-bolt-outline'

  - group: Generation
    items:
      - name: "Production PV journalière"
        widget: "daily_solar"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x0685,0x0684 ]
        icon: 'mdi:solar-power'
      - name: "Production PV totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x0687,0x0686 ]
        icon: 'mdi:solar-power'
      - name: "Énergie consommée journalière"
        widget: "daily_load"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x0689,0x0688 ]
        icon: 'mdi:lightning-bolt-outline'
      - name: "Énergie consommée totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x068B,0x068A ]
        icon: 'mdi:solar-power'
      - name: "Énergie Importée journalière"
        widget: "daily_grid_buy"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x068D,0x068C ]
        icon: 'mdi:transmission-tower-export'
      - name: "Énergie impotée totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x068F,0x068E ]
        icon: 'mdi:transmission-tower-export'
      - name: "Énergie exportée journalière"
        widget: "daily_grid_sell"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x0691,0x0690 ]
        icon: 'mdi:transmission-tower-import'
      - name: "Énergie exportée totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x0693,0x0692 ]
        icon: 'mdi:transmission-tower-import'
      - name: "Énergie chargée journalière"
        widget: "daily_battery_charge"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x0695,0x0694 ]
        icon: 'mdi:battery-plus'
      - name: "Énergie chargée totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x0697,0x0696 ]
        icon: 'mdi:battery-plus'
      - name: "Énergie déchargée journalière"
        widget: "daily_battery_discharge"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.01
        rule: 3
        registers: [ 0x0699,0x0698 ]
        icon: 'mdi:battery-minus'
      - name: "Énergie déchargée totale"
        class: "energy"
        state_class: "total_increasing"
        uom: "kWh"
        scale: 0.1
        rule: 3
        registers: [ 0x069B,0x069A ]
        icon: 'mdi:battery-minus'

  - group: Alert
    items:
      - name: "Alerte"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 6
        registers: [ 0x0405,0x0406,0x0407,0x0408,0x0409,0x040A,0x040B,0x040C,0x040D,0x040E,0x040F,0x0410 ]

      - name: "Erreur 1"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        registers: [ 0x0405 ]
        isstr: true
        icon: 'mdi:wrench'
        lookup:
          - key: 0
            value: "Pas d’erreur"
          - key: 1
            value: "ID01 Protection contre les surtensions du réseau"
          - key: 2
            value: "ID02 Protection contre les sous-tensions du réseau"
          - key: 4
            value: "ID03 Protection contre les surfréquences de grille"
          - key: 8
            value: "ID04 Grille sous protection de fréquence"
          - key: 16
            value: "ID05 Défaut de courant de fuite"
          - key: 32
            value: "ID06 Erreur de pénétration élevée"
          - key: 64
            value: "ID07 Erreur de faible pénétrationr"
          - key: 128
            value: "ID08 Erreur d’îlot"
          - key: 256
            value: "ID09 Surtension de la valeur transitoire de la tension du réseau 1"
          - key: 512
            value: "ID10 Surtension de la valeur transitoire de la tension du réseau 2"
          - key: 1024
            value: "ID11 Erreur de tension de ligne de réseau"
          - key: 2048
            value: "ID12 Erreur de tension de l’onduleur"
          - key: 4096
            value: "ID13 Surcharge anti-refoulement"
          - key: 8192
            value: "ID14"
          - key: 16384
            value: "ID15"
          - key: 32768
            value: "ID16"
      - name: "Erreur 2"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true
        registers: [ 0x0406 ]
        lookup:
          - key: 0
            value: "Pas d’erreur"
          - key: 1
            value: "ID17 Erreur d’échantillonnage du courant de grille"
          - key: 2
            value: "ID18 Erreur d’échantillonnage de la composante CC du courant de réseau (côté CA)"
          - key: 4
            value: "ID19 Erreur d’échantillonnage de tension du réseau (côté CC)"
          - key: 8
            value: "ID20 Erreur d’échantillonnage de la tension du réseau (côté CA)"
          - key: 16
            value: "ID21 Erreur d’échantillonnage du courant de fuite (côté CC)"
          - key: 32
            value: "ID22 Erreur d’échantillonnage du courant de fuite (côté AC)"
          - key: 64
            value: "ID23 Erreur d’échantillonnage de la composante CC de la tension de charge"
          - key: 128
            value: "ID24 Erreur d’échantillonnage du courant d’entrée CC"
          - key: 256
            value: "ID25 Erreur d’échantillonnage de la composante CC du courant de réseau (côté CC)"
          - key: 512
            value: "ID26 Erreur d’échantillonnage du courant de dérivation d’entrée CC"
          - key: 1024
            value: "ID27"
          - key: 2048
            value: "ID28"
          - key: 4096
            value: "ID29 Erreur de cohérence du courant de fuite"
          - key: 8192
            value: "ID30 Erreur de cohérence de la tension du réseau"
          - key: 16384
            value: "ID31 Erreur de cohérence DCI"
          - key: 32768
            value: "ID32"
      - name: "Erreur 3"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true

        registers: [ 0x0407 ]
        lookup:
          - key: 0
            value: "Pas d’erreur"
          - key: 1
            value: 'ID033 Erreur de communication SPI (côté CC)'
          - key: 2
            value: 'ID034 Erreur de communication SPI (côté secteur)'
          - key: 4
            value: 'ID035 Erreur de puce (côté CC)'
          - key: 8
            value: 'ID036 Erreur de puce (côté AC)'
          - key: 16
            value: 'ID037 Erreur d’alimentation auxiliaire'
          - key: 32
            value: 'ID038 Défaillance du démarrage progressif de l’onduleur'
          - key: 64
            value: 'ID039 '
          - key: 128
            value: 'ID040 '
          - key: 256
            value: 'ID041 Échec de la détection du relais'
          - key: 512
            value: 'ID042 Faible impédance d’isolation'
          - key: 1024
            value: 'ID043 Erreur de mise à la terre'
          - key: 2048
            value: 'ID044 Erreur de réglage du mode d’entrée'
          - key: 4096
            value: 'ID045 Erreur CT'
          - key: 8192
            value: 'ID046 Erreur d’inversion d’entrée'
          - key: 16384
            value: 'ID047 Erreur parallèle'
          - key: 32768
            value: 'ID048 Erreur de numéro de série'
      - name: "Erreur 4"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        registers: [ 0x0408 ]
        isstr: true
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID049 Protection contre la température de la batterie'
          - key: 2
            value: 'ID050 Dissipateur thermique 1 protection thermique'
          - key: 4
            value: 'ID051 Protection thermique du chauffage 2'
          - key: 8
            value: 'ID052 Protection thermique du chauffage 3'
          - key: 16
            value: 'ID053 Dissipateur thermique 4 protection contre la température'
          - key: 32
            value: 'ID054 Protection thermique du dissipateur thermique 5'
          - key: 64
            value: 'ID055 Protection de la température du radiateur 6'
          - key: 128
            value: 'ID056 '
          - key: 256
            value: 'ID057 Protection contre la température ambiante 1'
          - key: 512
            value: 'ID058 Protection contre la température ambiante 2'
          - key: 1024
            value: 'ID059 Module 1 protection de la température'
          - key: 2048
            value: 'ID060 Module 2 protection contre la température'
          - key: 4096
            value: 'ID061 Module 3 protection de la température'
          - key: 8192
            value: 'ID062 La différence de température du module est trop importante'
          - key: 16384
            value: 'ID063 '
          - key: 32768
            value: 'ID064 '
      - name: "Erreur 5"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        registers: [ 0x0409 ]
        isstr: true
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID065 Déséquilibre RMS de la tension du bus'
          - key: 2
            value: 'ID066 Déséquilibre de la valeur transitoire de la tension du bus'
          - key: 4
            value: 'ID067 Sous-tension de la barre omnibus lors de la connexion au réseau'
          - key: 8
            value: 'ID068 Barre omnibus basse tension'
          - key: 16
            value: 'ID069 Surtension PV'
          - key: 32
            value: 'ID070 Surtension de la batterie'
          - key: 64
            value: 'ID071 LLCBus protection contre les surtensions'
          - key: 128
            value: 'ID072 Tension du bus de l’onduleur Surtension du logiciel RMS'
          - key: 256
            value: 'ID073 Tension du bus de l’onduleur surtension du logiciel de valeur transitoire'
          - key: 512
            value: 'ID074 Protection contre les surtensions des condensateurs Flying Cross'
          - key: 1024
            value: 'ID075 Protection contre les sous-tensions du condensateur Flying Crossn'
          - key: 2048
            value: 'ID076 '
          - key: 4096
            value: 'ID077 '
          - key: 8192
            value: 'ID078 '
          - key: 16384
            value: 'ID079 '
          - key: 32768
            value: 'ID080 '
      - name: "Erreur 6"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true
        registers: [ 0x040A ]
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID081 Protection logicielle contre les surintensités de la batterie'
          - key: 2
            value: 'ID082 Protection contre les surintensités Dci'
          - key: 4
            value: 'ID083 Protection contre les courants transitoires de sortie'
          - key: 8
            value: 'ID084 Surintensité logicielle BuckBoost'
          - key: 16
            value: 'ID085 Protection du courant RMS de sortie'
          - key: 32
            value: 'ID086 Protection logicielle contre les surintensités de courant instantané PV'
          - key: 64
            value: 'ID087 Courant parallèle inégal PV'
          - key: 128
            value: 'ID088 Déséquilibre du courant de sortie'
          - key: 256
            value: 'ID089 Protection contre les surintensités du logiciel PV'
          - key: 512
            value: 'ID090 Protection contre les surintensités du circuit équilibré'
          - key: 1024
            value: 'ID091 Protection par résonance'
          - key: 2048
            value: 'ID092 '
          - key: 4096
            value: 'ID093 '
          - key: 8192
            value: 'ID094 '
          - key: 16384
            value: 'ID095 '
          - key: 32768
            value: 'ID096 '
      - name: "Erreur 7"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true
        registers: [ 0x040B ]
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID097 LLC bus surtension matérielle'
          - key: 2
            value: 'ID098 Surtension matérielle du bus de l’onduleur'
          - key: 4
            value: 'ID099 Surintensité matérielle BuckBoost'
          - key: 8
            value: 'ID100 Surintensité matérielle de la batterie'
          - key: 16
            value: 'ID101 '
          - key: 32
            value: 'ID102 Surintensité matérielle PV'
          - key: 64
            value: 'ID103 Surintensité matérielle de sortie CA'
          - key: 128
            value: 'ID104 '
          - key: 256
            value: 'ID105 Erreur du capteur de puissance'
          - key: 512
            value: 'ID106 Erreur de modèle de numéro de série'
          - key: 1024
            value: 'ID107 '
          - key: 2048
            value: 'ID108 '
          - key: 4096
            value: 'ID109 '
          - key: 8192
            value: 'ID110 Protection contre les surcharges 1'
          - key: 16384
            value: 'ID111 Protection contre les surcharges 2'
          - key: 32768
            value: 'ID112 Protection contre les surcharges 3'

      - name: "Erreur 8"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        registers: [ 0x040C ]
        isstr: true
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID113 Déclassement en cas de surchauffe'
          - key: 2
            value: 'ID114 Fréquence de charge descendante'
          - key: 4
            value: 'ID115 Chargement de fréquence'
          - key: 8
            value: 'ID116 Charge de tension descendante'
          - key: 16
            value: 'ID117 Charge de tension'
          - key: 32
            value: 'ID118 '
          - key: 64
            value: 'ID119 '
          - key: 128
            value: 'ID120 '
          - key: 256
            value: 'ID121 Défaillance de la protection contre la foudre (DC)'
          - key: 512
            value: 'ID122 Défaillance de la protection contre la foudre (AC)'
          - key: 1024
            value: 'ID123 '
          - key: 2048
            value: 'ID124 Protection basse tension de la batterie'
          - key: 4096
            value: 'ID125 Arrêt basse tension de la batterie'
          - key: 8192
            value: 'ID126 Pré-alarme basse tension de la batterie'
          - key: 16384
            value: 'ID127 '
          - key: 32768
            value: 'ID128 '
      - name: "Erreur 9"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true

        registers: [ 0x040D ]
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID129 Défaut permanent de surintensité matérielle de sortie'
          - key: 2
            value: 'ID130 Défaut permanent de surtension de bus'
          - key: 4
            value: 'ID131 Défaut permanent de surtension matérielle du bus'
          - key: 8
            value: 'ID132 PV écoulement irrégulier défaut permanent'
          - key: 16
            value: 'ID133 Défaut permanent de surintensité de la batterie en mode EPS'
          - key: 32
            value: 'ID134 Défaut permanent de surintensité transitoire de sortie'
          - key: 64
            value: 'ID135 Défaut permanent de déséquilibre du courant de sortie'
          - key: 128
            value: 'ID136 '
          - key: 256
            value: 'ID137 Erreur de réglage du mode d’entrée défaut permanent'
          - key: 512
            value: 'ID138 Défaut permanent de surintensité d’entrée'
          - key: 1024
            value: 'ID139 Défaut permanent de surintensité matérielle d’entrée'
          - key: 2048
            value: 'ID140 Relais défaut permanent'
          - key: 4096
            value: 'ID141 Déséquilibre de bus défaut permanent'
          - key: 8192
            value: 'ID142 Protection contre la foudre défaut permanent - côté DC'
          - key: 16384
            value: 'ID143 Défaut permanent de protection contre la foudre - côté secteur'
          - key: 32768
            value: 'ID144 '
      - name: "Erreur 10"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        isstr: true
        registers: [ 0x040E ]
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'Défaut USB ID145'
          - key: 2
            value: 'ID146 Défaut WIFI'
          - key: 4
            value: 'ID147 Défaut Bluetooth'
          - key: 8
            value: 'ID148 Défaut d’horloge RTC'
          - key: 16
            value: 'ID149 Erreur EEPROM de la carte de communication'
          - key: 32
            value: 'ID150 Erreur FLASH de la carte de communication'
          - key: 64
            value: 'ID151 '
          - key: 128
            value: 'ID152 Erreur de version du règlement de sécurité'
          - key: 256
            value: 'ID153 Erreur de communication SCI (côté CC)'
          - key: 512
            value: 'ID154 Erreur de communication SCI (côté CA)'
          - key: 1024
            value: 'Erreur de communication SCI ID155 (côté carte de convergence)'
          - key: 2048
            value: 'ID156 Incohérence de la version du logiciel'
          - key: 4096
            value: 'ID157 Batterie au lithium 1 erreur de communication'
          - key: 8192
            value: 'ID158 Erreur de communication de la batterie Li-ion 2'
          - key: 16384
            value: 'ID159 Erreur de communication de la batterie au lithium 3'
          - key: 32768
            value: 'ID160 Batterie au lithium 4 panne de communication'
      - name: "Erreur 11"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        registers: [ 0x040F ]
        isstr: true
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID161 Arrêt forcé'
          - key: 2
            value: 'ID162 Arrêt à distance'
          - key: 4
            value: 'ID163 Arrêt de Drms0'
          - key: 8
            value: 'ID164 '
          - key: 16
            value: 'ID165 Téléchargement descendant à distance'
          - key: 32
            value: 'ID166 Interface logique en charge descendante'
          - key: 64
            value: 'ID167 Déclassement anti-flux inverse'
          - key: 128
            value: 'ID168 '
          - key: 256
            value: 'ID169 Défaillance du ventilateur 1'
          - key: 512
            value: 'ID170 Défaillance du ventilateur 2'
          - key: 1024
            value: 'ID171 Défaillance du ventilateur 3'
          - key: 2048
            value: 'ID172 Défaillance du ventilateur 4'
          - key: 4096
            value: 'ID173 Défaillance du ventilateur 5'
          - key: 8192
            value: 'ID174 Défaillance du ventilateur 6'
          - key: 16384
            value: 'ID175 Défaillance du ventilateur 7'
          - key: 32768
            value: 'ID176 Défaillance de la communication du compteur'
      - name: "Erreur 12"
        class: ""
        state_class: ""
        uom: ""
        scale: 1
        rule: 1
        icon: 'mdi:wrench'
        registers: [ 0x0410 ]
        isstr: true
        lookup:
          - key: 0
            value: "Pas d'erreur"
          - key: 1
            value: 'ID177 Alarme de surtension BMS'
          - key: 2
            value: 'ID178 Alarme de sous-tension BMS'
          - key: 4
            value: 'ID179 BMS Alarme de température élevée'
          - key: 8
            value: 'ID180 BMS Alarme de basse température'
          - key: 16
            value: 'ID181 BMS Alarme de surcharge de charge/décharge'
          - key: 32
            value: 'ID182 BMS Alarme de court-circuit'
          - key: 64
            value: 'ID183 BMS Incohérence de version'
          - key: 128
            value: 'ID184 BMS CAN Incohérence de version'
          - key: 256
            value: 'ID185 BMS CAN version est trop basse'
          - key: 512
            value: 'ID186 '
          - key: 1024
            value: 'ID187 '
          - key: 2048
            value: 'ID188 '
          - key: 4096
            value: 'ID189 Échec de la communication du dispositif Arc'
          - key: 8192
            value: 'ID190 Défaut d’alarme d’arc CC'
          - key: 16384
            value: 'ID191 Échec de la réparation du PID'
          - key: 32768
            value: 'ID192 Perte de signal du module PLC'

Bonjour,
Je vois que je ne suis pas le seul à avoir des soucis à cause du zéro-injection pour optimiser
la conso par rapport à la production solaire.
On ne peut pas mesurer l’injection, puisqu’elle n’existe pas, mais … on peut mesurer la conso
sur le réseau ! Partant de ce constat, j’ai créé un petit automatisme qui augmente la charge
du VE quand la conso réseau est en-dessous d’un certain niveau, et qui la baisse quand elle est au-dessus. Il prend également en compte la charge ou décharge de la batterie résidentielle, ce qui permet de donner la priorité à la la batterie ou le VE.
L’onduleur est un Sofar 5000-EP, batterie Sofar, chargeur de VE Feyree.

La courbe montre que la conso suit parfaitement la production. Ça fonctionne, bien sûr, si on
a la possibilité de consommer tout ce que les panneaux peuvent produire (VE). Actuellement, je suis à plus de 80 % de conso sur le solaire.

Voici le Blueprint … si ça intéresse quelqu’un :

blueprint:
  name: EV - Charge dynamique optimisée
  description: "Gestion de la charge en fonction de l'heure. \n
En heures pleines (6h - 22h) : Priorité au solaire. \n
En heures creuses (22h - 6h) : Charge maxi autorisée, en fonction de la conso de la maison.\n"

  domain: automation

  input:

    interval:
      name: Intervalle d'ajustement (s)
      description: ""
      default: /30
      selector:
        select:
          options:
          - label: 20 secondes
            value: /20
          - label: 30 secondes
            value: /30
          - label: 59 secondes
            value: /59
          custom_value: false
          sort: false
          multiple: false

    sensor_house_power:
      name: Capteur de consommation ES
      description: ""
      default: sensor.conso_es_puissance
      selector:
        entity:
          domain:
          - sensor
          device_class:
          - power
          multiple: false

    charging_current:
      name: Contrôle de charge
      description: ""
      default: number.ev_charger_set_charge_current
      selector:
        entity:
          domain:
          - number
          multiple: false

    puissance_batt:
      name: Puissance batterie
      description: ""
      default: sensor.inverter_puissance_batterie
      selector:
        entity:
          domain:
          - sensor
          multiple: false

    soc_batt:
      name: Batterie résidentielle (SOC)
      description: ""
      default: sensor.inverter_soc_batterie
      selector:
        entity:
          domain:
          - sensor
          multiple: false

    max_grid_power_day:
      name: Consommation maximale autorisée sur le Réseau en journée (W)
      description: " Priorité au solaire !"
      default: 500
      selector:
        number:
          min: 0.0
          max: 3000.0
          step: 100.0
          mode: slider

    max_grid_power_night:
      name: Consommation maximale autorisée sur le Réseau en heure creuse (W)
      description: "Consommation totale de la maison ... Avant de faire disjoncter !"
      default: 9000
      selector:
        number:
          min: 0.0
          max: 12000.0
          step: 1000.0
          mode: slider

    min_charge_batt:
      name: Puissance de décharge maxi de la batterie (W)
      description: ""
      default: -1300
      selector:
        number:
          min: -2500.0
          max: 0.0
          step: 100.0
          mode: slider

    max_amps_day:
      name: Courant maximum du chargeur en journée (A)
      description: ""
      default: 16
      selector:
        number:
          min: 6.0
          max: 32.0
          step: 1.0
          mode: slider

    max_amps_night:
      name: Courant maximum du chargeur de nuit (A)
      description: ""
      default: 16
      selector:
        number:
          min: 6.0
          max: 32.0
          step: 1.0
          mode: slider

    min_amps:
      name: Courant minimum du chargeur (A)
      description: ""
      default: 8
      selector:
        number:
          min: 6.0
          max: 32.0
          step: 1.0
          mode: slider

    plus_amps:
      name: Augmentation du courant par cycle de mesure (A)
      description: ""
      default: 2
      selector:
        number:
          min: 1.0
          max: 4.0
          step: 1.0
          mode: slider

    moins_amps:
      name: Diminution du courant par cycle de mesure (A)
      description: ""
      default: 2
      selector:
        number:
          min: 1.0
          max: 4.0
          step: 1.0
          mode: slider

trigger:
- platform: time_pattern
  seconds: !input interval

condition:
  - condition: state
    entity_id: switch.commutateur_ev_switch
    state: "on"

action:
- variables:
    max_amps_day: !input max_amps_day
    max_amps_night: !input max_amps_night
    min_amps: !input min_amps
    plus_amps: !input plus_amps
    moins_amps: !input moins_amps
    sensor_house_power_entity: !input sensor_house_power
    grid_power: '{{ states(sensor_house_power_entity) | float(0) }}'
    charging_current_entity: !input charging_current
    amps: '{{ states(charging_current_entity) | float(0) }}'
    puissance_batt_entity: !input puissance_batt
    charge_batt: '{{ states(puissance_batt_entity) | float(0) }}'
    min_charge: !input min_charge_batt
    soc_batt_entity: !input soc_batt
    soc: '{{ states(soc_batt_entity) | float(0) }}'
    max_grid_power_day: !input max_grid_power_day
    max_grid_power_night: !input max_grid_power_night
    is_day_time: '{{ 6 <= now().hour < 22 }}'
    max_grid_power: '{% if is_day_time %} {{ max_grid_power_day | int }}
                     {% else %} {{ max_grid_power_night | int }}
                     {% endif %}'
    max_amps: '{% if is_day_time %} {{ max_amps_day | int }}
               {% else %} {{ max_amps_night | int }}
               {% endif %}'
    min_charge_batt: '{% if soc < 90 %} {{ min_charge | int}}
                      {% else %} {{ min_charge - 1000 | int }}
                      {% endif %}'

- if:
    - condition: time
      after: "06:00:00"
      before: "22:00:00"

  then:

    - if:
        - condition: sun
          after: sunset
          after_offset: "-03:30:00"

      then:
        - service: select.select_option
          target:
            entity_id: select.ev_charger_toggle_charging
          data:      
            option: Stop charging

      else:

        - if:
            - condition: and
              conditions:
                - condition: numeric_state
                  entity_id: sensor.inverter_puissance_batterie
                  below: 0
                - condition: numeric_state
                  entity_id: number.ev_charger_set_charge_current
                  below: 7
          then:
            - service: select.select_option
              target:
                entity_id: select.ev_charger_toggle_charging
              data:      
                option: Stop charging

      else:

        - if:
            - condition: numeric_state
              entity_id: sensor.inverter_soc_batterie
              below: 50

          then:
            - service: select.select_option
              target:
                entity_id: select.ev_charger_toggle_charging
              data:      
                option: Stop charging

        - if:
            - condition: and
              conditions:
                - condition: numeric_state
                  entity_id: sensor.inverter_soc_batterie
                  above: 49
                  below: 70
                - condition: numeric_state
                  entity_id: sensor.inverter_puissance_batterie
                  below: 0

          then:
            - service: select.select_option
              target:
                entity_id: select.ev_charger_toggle_charging
              data:      
                option: Stop charging

        - if:
            - condition: and
              conditions:
                - condition: numeric_state
                  entity_id: sensor.inverter_soc_batterie
                  above: 49
                  below: 70
                - condition: numeric_state
                  entity_id: sensor.inverter_puissance_batterie
                  above: 0
          then:
            - service: select.select_option
              target:
                entity_id: select.ev_charger_toggle_charging
              data:      
                option: Start charging
            - service: number.set_value
              target:
                entity_id: number.ev_charger_set_charge_current
              data:  
                value: '{% if charge_batt > 0 %} {{ min_amps | int }}
                        {% endif %}'

            - variables:
                amps: '{{ states(charging_current_entity) | float(0) }}'

            - if:
                - condition: numeric_state
                  entity_id: sensor.inverter_soc_batterie
                  below: 55
              then:
                - delay:
                    minutes: 3

        - if:
            - condition: numeric_state
              entity_id: sensor.inverter_soc_batterie
              above: 69

          then:
            - variables:
               charge_batt: '{{ states(puissance_batt_entity) | int }}'
               new_amps: '{% if grid_power < max_grid_power and charge_batt > (min_charge_batt + 230) %} {{ amps + plus_amps | int }}
                          {% elif grid_power > max_grid_power %} {{ amps - moins_amps | int }}
                          {% elif charge_batt < (min_charge_batt - 230) %} {{ amps - moins_amps | int }}
                          {% else %} {{ amps | int }}
                          {% endif %}'

            - service: select.select_option
              target:
                entity_id: select.ev_charger_toggle_charging
              data:      
                option: Start charging
            - service: number.set_value
              target:
                entity_id: number.ev_charger_set_charge_current
              data:  
                value: '{% if new_amps > max_amps %} {{ max_amps | int }}
                        {% elif new_amps < min_amps %} {{ min_amps | int }}
                        {% elif charge_batt < min_charge_batt %} {{ new_amps - moins_amps | int}}
                        {% else %} {{ new_amps | int }}
                        {% endif %}'

            - variables:
                amps: '{{ states(charging_current_entity) | float(0) }}'

  else:
    - variables:
       new_amps: '{% if grid_power < max_grid_power %} {{ amps + plus_amps | int }}
                  {% elif grid_power > max_grid_power %} {{ amps - moins_amps | int }}
                  {% else %} {{ amps | int }}
                  {% endif %}'

    - if:
        - condition: time
          after: "22:00:00"
          before: "04:00:00"

      then:
        - service: select.select_option
          target:
            entity_id: select.ev_charger_toggle_charging
          data:      
            option: Start charging
        - service: number.set_value
          target:
            entity_id: number.ev_charger_set_charge_current
          data:  
            value: '{% if new_amps > max_amps %} {{ max_amps | int }}
                    {% elif new_amps < min_amps %} {{ min_amps | int }}
                    {% else %} {{ new_amps | int }}
                    {% endif %}'
        - variables:
            amps: '{{ states(charging_current_entity) | float(0) }}'

      else:
        - service: select.select_option
          target:
            entity_id: select.ev_charger_toggle_charging
          data:      
            option: Start charging
        - service: number.set_value
          target:
            entity_id: number.ev_charger_set_charge_current
          data:  
            value: '{{ min_amps | int }}'
        - variables:
            amps: '{{ states(charging_current_entity) | float(0) }}'


mode: single