Intégration Solar Optimizer - Optimisation de sa consommation Solaire

Bonjour,
Non pas de souci que géré entièrement le ballon avec solar optimizer

Juste a bien faire attention d’atteindre la consigne de chauffe pour tuer les bacteries , …

devices:
   - name: "Ballon d'eau Chaude"
     entity_id: "switch.ballon_d_eau_chaude"
     power_max: 1000
     duration_min: 15
     duration_stop_min: 5
     action_mode: "service_call"
     activation_service: "switch/turn_on"
     deactivation_service: "switch/turn_off"
     battery_soc_threshold: 50
     max_on_time_per_day_min: 550
     min_on_time_per_day_min: 520
     offpeak_time: "22:02"

Perso, j’ai un retour de la consommation du ballon, donc je sais quand le ballon est activer et pas en chauffe, donc avec des templates sensors, j’ai la date de la dernière chauffe « complète »

question a la con je viens de tester le module
ca allume et éteint mon ballon mais ces la carte électronique qui gère la chauffe donc ca va pas aller ?

Première utilisation aujourd’hui.

Solar optimiser s’est bien lancé pour recharger la voiture lorsque la condition à basculé à true.

Malheureusement le soleil n’étant pas suffisant je n’ai pas vu de changement de puissance. A voir sur une journée plus ensoleillée.

La charge a bien été éteinte aussi quand le surplus s’est retrouvé insuffisant.

C’est prometteur.

2 questions toutefois.

Est ce que solar optimizer fait des augmentations ou réduction Ampère par ampère selon le surplus?
Ou peut il passer de 16 à 10 ampères d’un coup par exemple.
Ce genre de chute trop rapide risquant de bloquer mon appareil électronique.

Enfin, à quels sensors correspondent puissance requise et puissance courante dans la carte lovelace?

Je suis toujours à 0 pour ces 2 sensors

Merci.

Oui c’est le but.

il peut oui si la puissance est disponible

Je ne comprends pas. De quelle carte Lovelace tu parles ?

Merci pour ton retour.
Est ce qu’il serait compliqué par exemple de modifier le code pour faire une augmentation ou réduction progressive ampères par ampères ?

Pour la carte je parle de ces 2 entités que l’on dans l’interface graphique pour surveiller un dispositif géré par solar optimizer

Bonjour,

Je compte utiliser cette intégration lorsque j’aurais fini mon installation.
J’ai juste une petite question, pourquoi ne pas pouvoir mettre une valeur nulle dans « energy sell price » pour les configurations sans contrat de rachat (idem pour la tax de revente)?

Bonjour à tous,

J’essaie tant bien que mal de configurer cette intégration. J’ai utilisé les templates de @Jean-Marc_Collin car j’ai aussi une passerelle Envoy :

Mais ça me donne des chiffres ridicules en W :

Alors que l’appli Enphase me donne la production brute à 2,4kW :

Il vaut mieux utiliser les templates en kW du coup (ce n’est pas ce qu’indique la doc) ? ou alors mettre les chiffres de puissance en W dans le yaml (genre un chauffe eau à 2400W reviendrait à 2,4W) ?

Avant d’utiliser les templates de @Jean-Marc_Collin, j’utilisais les sensors de Enphase et ça me donnait un best_objective à 0,00XXX souvent donc ça lançait jamais mes équipements…

Merci d’avance pour vos éclaircissements.

EDIT : mon template :

template:
  - sensor:
      - name: "Total puissance consommée instantanée (W)"
        unique_id: total_power_consomme_w
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set power = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=-1.0) %}
          {% if power < 0 %}0{% else %}
            {{ power | round(2) }}
          {% endif %}
      - name: "Total puissance consommee instantanée"
        unique_id: total_power_consommee
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_consommee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power / 1000) | round(2) }}
          {% endif %}
      - name: "Total puissance produite instantanée (W)"
        icon: mdi:solar-power-variant
        unique_id: total_power_produite_w
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set power = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=-1.0) %}
          {% if power < 0 %}0{% else %}
            {{ power | round(2) }}
          {% endif %}
      - name: "Total puissance produite instantanée"
        icon: mdi:solar-power-variant
        unique_id: total_power_produite
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_produite_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power / 1000) | round(2) }}
          {% endif %}
      - name: "Total puissance importée instantanée (W)"
        icon: mdi:transmission-tower-import
        unique_id: total_power_importee_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set consommation = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=0) %}
          {% set production = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=0) %}
          {% if consommation < 0 or production < 0 %}{{none}}{% else %}
            {% set delta = (consommation - production) | round(2) %}
            {% if delta > 0 %}
               {{ delta }}
            {% else %}
               {{ 0.0 }}
            {% endif %}
          {% endif %}
      - name: "Total puissance exportée instantanée (W)"
        icon: mdi:transmission-tower-export
        unique_id: total_power_exportee_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set consommation = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=0) %}
          {% set production = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=0) %}
          {% if consommation < 0 or production < 0  %}{{none}}{% else %}
            {% set delta = (consommation - production) | round(2) %}
            {% if delta < 0 %}
               {{ -delta }}
            {% else %}
               {{ 0.0 }}
            {% endif %}
          {% endif %}
      - name: "Total puissance importée instantanée"
        icon: mdi:transmission-tower-import
        unique_id: total_power_importee
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_importee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power / 1000) | round(2) }}
          {% endif %}
      - name: "Total puissance exportée instantanée"
        icon: mdi:transmission-tower-import
        unique_id: total_power_exportee
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_exportee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power / 1000) | round(2) }}
          {% endif %}
      - name: "Total puissance consommée net instantanée (W)"
        unique_id: total_power_consommee_net_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set importe = states('sensor.total_puissance_importee_instantanee_w') | float(default=-1.0) %}
          {% set exporte = states('sensor.total_puissance_exportee_instantanee_w') | float(default=-1.0) %}
          {% if importe < 0 or exporte < 0  %}{{none}}{% else %}
            {% set delta = (importe - exporte) | round(2) %}
               {{ delta }}
          {% endif %}
      - name: "Total puissance consommée net instantanée"
        unique_id: total_power_consommee_net
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        state: >
          {% set importe = states('sensor.total_puissance_importee_instantanee') | float(default=-1.0) %}
          {% set exporte = states('sensor.total_puissance_exportee_instantanee') | float(default=-1.0) %}
          {% if importe < 0 or exporte < 0  %}{{none}}{% else %}
            {% set delta = (importe - exporte) | round(2) %}
               {{ delta }}
          {% endif %}

D’après moi, mes sensors n’avaient pas la même unité, j’ai bidouillé ça :

template:
  - sensor:
      - name: "Total puissance consommée instantanée (W)"
        unique_id: total_power_consomme_w
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set power = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=-1.0) %}
          {% if power < 0 %}0{% else %}
            {{ power * 1000 | round(2) }}
          {% endif %}
      - name: "Total puissance consommee instantanée"
        unique_id: total_power_consommee
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_consommee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power) | round(2) }}
          {% endif %}
      - name: "Total puissance produite instantanée (W)"
        icon: mdi:solar-power-variant
        unique_id: total_power_produite_w
        device_class: power
        unit_of_measurement: "W"
        state_class: measurement
        state: >
          {% set power = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=-1.0) %}
          {% if power < 0 %}0{% else %}
            {{ power * 1000 | round(2) }}
          {% endif %}
      - name: "Total puissance produite instantanée"
        icon: mdi:solar-power-variant
        unique_id: total_power_produite
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_produite_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power) | round(2) }}
          {% endif %}
      - name: "Total puissance importée instantanée (W)"
        icon: mdi:transmission-tower-import
        unique_id: total_power_importee_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set consommation = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=0) %}
          {% set production = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=0) %}
          {% if consommation < 0 or production < 0 %}{{none}}{% else %}
            {% set delta = (consommation - production) | round(2) %}
            {% if delta > 0 %}
               {{ delta }}
            {% else %}
               {{ 0.0 }}
            {% endif %}
          {% endif %}
      - name: "Total puissance exportée instantanée (W)"
        icon: mdi:transmission-tower-export
        unique_id: total_power_exportee_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set consommation = states('sensor.envoy_122320045964_current_net_power_consumption') | float(default=0) %}
          {% set production = states('sensor.envoy_122320045964_production_d_electricite_actuelle') | float(default=0) %}
          {% if consommation < 0 or production < 0  %}{{none}}{% else %}
            {% set delta = (consommation - production) | round(2) %}
            {% if delta < 0 %}
               {{ -delta }}
            {% else %}
               {{ 0.0 }}
            {% endif %}
          {% endif %}
      - name: "Total puissance importée instantanée"
        icon: mdi:transmission-tower-import
        unique_id: total_power_importee
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_importee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power) | round(2) }}
          {% endif %}
      - name: "Total puissance exportée instantanée"
        icon: mdi:transmission-tower-import
        unique_id: total_power_exportee
        unit_of_measurement: "kW"
        state_class: measurement
        state: >
          {% set power = states('sensor.total_puissance_exportee_instantanee_w') | float(default=-1.0) %}
          {% if power < 0 %}{{none}}{% else %}
            {{ (power) | round(2) }}
          {% endif %}
      - name: "Total puissance consommée net instantanée (W)"
        unique_id: total_power_consommee_net_w
        unit_of_measurement: "W"
        device_class: power
        state_class: measurement
        state: >
          {% set importe = states('sensor.total_puissance_importee_instantanee_w') | float(default=-1.0) %}
          {% set exporte = states('sensor.total_puissance_exportee_instantanee_w') | float(default=-1.0) %}
          {% if importe < 0 or exporte < 0  %}{{none}}{% else %}
            {% set delta = (importe - exporte) | round(2) %}
               {{ delta }}
          {% endif %}
      - name: "Total puissance consommée net instantanée"
        unique_id: total_power_consommee_net
        unit_of_measurement: "kW"
        device_class: power
        state_class: measurement
        state: >
          {% set importe = states('sensor.total_puissance_importee_instantanee') | float(default=-1.0) %}
          {% set exporte = states('sensor.total_puissance_exportee_instantanee') | float(default=-1.0) %}
          {% if importe < 0 or exporte < 0  %}{{none}}{% else %}
            {% set delta = (importe - exporte) | round(2) %}
               {{ delta }}
          {% endif %}

Ca sort des valeurs cohérentes en W maintenant

1 « J'aime »

Hello,

Parce-que si tu n’as pas de prix de revente, ca change la vision de l’algo. Mets la même valeur que l’achat si tu n’en as pas.
Pour la tax, tu peux mettre un input_number qui donne 0.

Avec plein de temps tout est possible. Ca reste simple contournement non ?

1 « J'aime »

il faut que tout soit dans la même unité. Si tu as des prix en kWh il faut mettre des puissances en kW et elles doivent être tous en kW. Je crois que c’est ça ton soucis.

1 « J'aime »

Bonjour,

On est d’accord pour dire que l’entité « production lissée » = surplus ? ou il faut faire la différence production brute - production lissée pour avoir le surplus ?

Bonne journée !

Hello @Zeroth,

Non on n’est pas d’accord, la production c’est … ce que tu as produit et pas ce que tu as renvoyé. Elle est lissée pour éviter trop de variation si un nuage passe devant les panneaux.

Le surplus c’est produit - consommé (et pas produit brut - produit lissé qui ne donne rien de spécial d’exploitable).

1 « J'aime »

Bonjour
Question sur la configuration d’un équipement a puissance variable :
J’ai une chaudiere electrique que je voudrait faire fonctionner la journée avec SO

au minimum elle prend 2000w au max 4000W via 2 switch , un l’allume donc direct 2000w l’autre active l’étage de puissance donc 4000w

est ce qu’il vaut mieux que je fasse dans SO un device pour chaque switch ou un Device a puissance variable qui active un number , mais comment gerer les switch avec le number via un script ? et comment SO change le number sur qu’elle critère?

Hello @Jean-Marc_Collin

Merci pour la précision.

De toute façon, mon installation a été mal faite. Plus je produis, plus je consomme ! Je n’ai donc jamais de surplus. Et c’est comme ça tous les jours quasiment.


Je vais attendre sagement qu’ils corrigent…

Hello,

Ah oui en effet. Tu as certainement un soucis sur tes pinces amperemtrique

J’arrête pas de leur dire mais ils n’y arrivent pas. Ça va faire 4 fois qu’ils viennent…

1 « J'aime »

Hello,

Tu peux faire les 2. Nativement tu peux gérer 2 entrées dans SO ou alors faire input_number (input_number.load_power dans l’exemple) qui est géré par SO avec des paramètres qui ressemblent à ça :

     entity_id: "input_number.load_power"
     # The minimum load power is 2000
     power_min: 2000
     # The minimum load power is 4000
     power_max: 4000
     power_step: 2000
     # The entity that drives the load power
     power_entity_id: "input_number.load_power"
     # 5 min minimum between 2 power changes
     duration_power_min: 5
     # activation is done by a service call
     action_mode: "service_call"
     activation_service: "input_number/set_value:1"
     deactivation_service: "input_number/set_value:0"
     # the power change is done by a service call
     change_power_service: "input_number/set_value"
     # the factor used to convert the set power
     convert_power_divide_factor: 1000

Après il te faut une automatisation qui écoute les changements sur input_number.load_power et si qui switch les bons switch si la valeur vaut 0 (les 2 off), 1 (2000 watts), 2 (4000 watt)

J’ai pas pu tester évidemment mais sur le papier ça marche.

Hello,

Merci Jean Marc, je test ça demain et ferai un retour

Salut @Zeroth

Regarde la notice et installe toi même les pinces correctement et pour la configuration, si je me trompe pas, la SAV d’Enphase est joignable pour t’aider et surtout si tu leur dis que ton installateur n’y arrive pas

Hello,

J’ai fait appel à une société autant qu’elle aille au bout :unamused:
En plus y a peut être autre chose. J’ai remarqué que d’un jour sur l’autre j’ai pas les mêmes données pour un même jour

Même jour mais prise le lendemain : j’ai plus d’import quasiment ! :exploding_head:

1 « J'aime »