Intégration Solar Optimizer - Optimisation de sa consommation Solaire

Hello @cbo51130,

Je ne sais où tu as trouvé ça (la condition …), mais ce n’est pas pris en compte par l’intégration donc ça ne sert à rien.
Il faut utiliser le check_usable_template qui lui est là pour ça et reconnu par l’intégration.
Si ce check_usable_template est True, Solar Optimizer va l’utiliser sinon il n’y touche pas.

Donc si je veux que l’integration l’utilise que si la prise est sur OFF ce donne ca :


- name: "Prise Bureau"
    # Le switch qui commande la pompe du réservoir
    entity_id: "switch.prise_bureau"
    # la puissance de cette pompe
    power_max: 100
    # Toujours utilisable
    check_usable_template: "{{ is_state('switch.prise_bureau', 'off') }}"
    # 15 min d'activation minimum
    duration_min: 15
    # On active/desactive via un appel de service
    action_mode: "service_call"
    # Le service permettant d'activer le switch
    activation_service: "switch/turn_on"
    # Le service permettant de désactiver le switch
    deactivation_service: "switch/turn_off"
1 « J'aime »

Bonjour
C’est vraiment super !
Existe il une possibilité de moduler la puissance de charge pour n’importe quelle voiture électrique ?
Je crois que la réponse est non mais peut être que je me trompe.
Cordialement

Bonjour,

Non, il faut que la voiture le propose ou que la borne sur laquelle est branchée la voiture le fasse aussi.

Merci
Pour l’instant je branche mon chargeur sur une prise normale ou sur une prise greenup en fonction de mes besoins. Quel type de borne est compatible avec HA ?

J’ai la borne Tesla de mon coté qui est compatible HA mais non pilotable depuis HA. On peut juste consulter les données.

Bonjour,

Merci @Jean-Marc_Collin pour cette intégration qui semble bien utile.

Je débute sous HA et envisage de poser des PV, j’ai lu (rapidement) ton githib GitHub - jmcollin78/solar_optimizer: The Solar Optimizer integration for Home Assistant starts and stops your equipments depending on the Solar net production et pas vu de spécification/recommandation concernant les équipements (onduleur, batterie éventuellement, …)
Y a-t-il des choses à choisir/spécifier avant de passer commande d’une installation de PV pour que l’intégration fonctionne (au mieux)?

Merci pour votre réponse.
Je pensais qu’il y avait un moyen de régler automatiquement la puissance de charge en fonction de la production solaire mais je ne comprenais pas comment.
Bonne journée

Hello, @pmgs ,

Non rien de spécial. Il faut juste avoir dans HA la production instantanée et la consommation instantanée. C’est tout.

1 « J'aime »

Bonjour, je débute sur HA, j’étais auparavant sur Jeedom et Eedomus. Je peine un peu, c’est bien plus difficile. J’ai installé cette intégration, mais elle ne démarre pas j’ai un message d’erreur malgré les redémarrages etc. J’ai bien les 5 variables, les trois dernières créé pour l’occasion, le reste, depuis l’intégration fronius, et un shelly EM. Mais cela ne fonctionne pas j’ai du mal a comprendre, si quelqu’un à une piste. Merci

Hello @Mikalele

Si tu nous donnais ta conf et tes erreurs dans les logs, ça nous aiderait.

Bien compris.

Merci beaucoup.

Toujours en rapport avec la recharge de la voiture, je constate un comportement innatendu :

  • En bleu : conso
  • En vert : production
  • En rouge : Courant de charge de la voiture (piloté par Solar Optimiser)
  • Fond jaune : La voiture est en charge

Quand solar optimizer démarre un cycle, il semble régler la puissance de charge du véhicule sur 6A quoi qu’il arrive, quitte a dépasser allègrement la production solaire. Quand le cycle est long (par beau temps) cela ne pose pas vraiment de problème mais par des journées nuageuse comme celle-ci cela induit une conso en heure pleine qui, bien que minime, est néanmoins malvenue.

:arrow_forward: Devrais-je réduire la fréquence de calcul ? Mon CPU a encore de la marge :
image

Bonjour,
Merci pour cette intégration qui me facilite la vie.
J’essaye de la faire correctement fonctionner mais j’ai encore quelques difficultés, surtout les jours de vent avec alternance de nuages (j’habite en normandie, c’est plutôt courant :slightly_smiling_face: ). L’intégration déclenche quasi systématiquement les prises trop tard, donc au moment du passage d’un nuage, et stoppe les prises forcément trop tard aussi, quand le nuage est déjà passé.
Du coup j’ai baissé le « refresh period » à 20, ca n’a pas d’incidence réelle sur le processeur pour l’instant, ça améliore un peu mais pas suffisamment. On peut descendre jusqu’où ?
J’aimerais savoir aussi : dans la configuration il est coché par défaut « Lisse la production ».
Je ne vois pas dans la doc à quoi cela correspond exactement et ce que cela fait concrètement. Ça peut améliorer la réactivité si on le décoche ?
Sinon, j’ai pas vu dans la doc non plus si duration_min est forcément un entier ou si on peut mettre une valeur décimale comme 0.1 (6 secondes ?) par exemple (je suppose que cela peut améliorer la réactivité pour stopper beaucoup rapidement une prise) ?
Merci de vos réponses.

Bonjour @YoppY

Ca consiste à moyenné la production sur une période glissante pour justement éviter les switch intempestifs lors des passages de nuages. Ca ne peut pas se désactiver, et je le conseille pas.

Ce qui peut améliorer la réactivité c’est de baisser la fréquence de rafraichissement le refresh_period comme tu as déjà fait. Attention les calculs sont gourmands, donc si tu baisses trop ça doit bouffer de la CPU. Tu peux descendre autant que ton matériel le permet mais en dessous d’une minute, j’ai du mal à l’envisager.
Je ne vois pas allumer / éteindre les switchs toutes les minutes. Ca va faire cramer tes chargeurs de voitures électriques (si tu as).

duration_min est forcément un entier et ne peut pas descendre en dessous de 1 min donc. Encore une fois quel intérêt de démarrer un eqt sur moins d’une minute ?

Merci pour tes réponses. :slightly_smiling_face:

[quote=« Jean-Marc_Collin, post:135, topic:25318, full:true »]
Ca consiste à moyenné la production sur une période glissante pour justement éviter les switch intempestifs lors des passages de nuages. Ca ne peut pas se désactiver, et je le conseille pas.
[/quote]Du coup, pourquoi le proposer avec une case à cocher ?

[quote=« Jean-Marc_Collin, post:135, topic:25318, full:true »]Ce qui peut améliorer la réactivité c’est de baisser la fréquence de rafraichissement le refresh_period comme tu as déjà fait. Attention les calculs sont gourmands, donc si tu baisses trop ça doit bouffer de la CPU. Tu peux descendre autant que ton matériel le permet mais en dessous d’une minute, j’ai du mal à l’envisager.[/quote]J’ai descendu le refresh_period à 5s depuis 48h et je n’ai vu aucune évolution notable de la charge processeur. (pour info, mon HA est sous virtualbox sur un NUC, avec 2 threads dédiés d’un i7-7500u)

[quote=« Jean-Marc_Collin, post:135, topic:25318, full:true »]
Je ne vois pas allumer / éteindre les switchs toutes les minutes. Ca va faire cramer tes chargeurs de voitures électriques (si tu as).[/quote]Je n’ai pas de voiture électrique, et ce n’est pas pour des consommateurs sensibles, que je cherche de la réactivité. Ma PAC ou mon ballon thermo sont réglés sur des activations minimales d’une heure. C’est pour des switchs d’appareils basiques, sans électronique, à consommation fixe, qui peuvent encaisser des allumages répétés.

[quote=« Jean-Marc_Collin, post:135, topic:25318, full:true »]duration_min est forcément un entier et ne peut pas descendre en dessous de 1 min donc. [/quote]Tu es sur ? Je l’ai mis à 0.1 sur certaines prises connectés, et ça à l’air de fonctionner, ça na plus l’air d’attendre une minute.

[quote=« Jean-Marc_Collin, post:135, topic:25318, full:true »]Encore une fois quel intérêt de démarrer un eqt sur moins d’une minute ?[/quote]Par chez moi (normandie, proche de la mer), en cas d’alternance répété de nuages les jours de vent, les délais entre les pics de surplus et l’arrêt complet du surplus (nuage) sont souvent de 10 à 30s secondes. Et ce n’est pas forcément des « coupes nettes », on peut passer d’un ciel bleu à un nuage épais à 0 surplus, puis un voile léger qui divise le surplus par 2. Et cela dure sans problème pendant des heures, voir des jours. Si on ne peut pas désactiver rapidement les appareils qui consomment pendant le nuage, on perd ce que l’on a gagné juste avant le nuage. (avec une minute minimum, imaginons qu’on active un appareil de 500w au moment du surplus, 20s après : nuage, et pendant 40s secondes on consomme 500w sur le réseau inutilement => perte sèche).
Une autre solution avec cette météo est de se caler sur un surplus moyen pour lisser (par exemple 500w d’activé tout le temps pour une alternance de 1000w/500w/0w de surplus), sauf que dans ce cas là on perd une grosse partie du surplus (là encore, si nuage on consomme sur le réseau 500w, alors que durant le ciel bleu on ne récupéré que 500w sur les 1000 potentiels).
Evidemment, je parle ici d’activer/désactiver des appareils qui peuvent encaisser des allumages répétés, surtout pas des voitures électriques ou des pompes à chaleur. Par exemple chez moi j’ai un vieux radiateur bain d’huile que j’active/désactive comme ça depuis des années sans aucun souci. Les démarrages réguliers le maintiennent chaud. Idem avec un vieux grille pain. J’ai aussi des vieux ventilateurs des 80’s, avec 0 électronique, qui en cas de surplus brassent l’air de la véranda et me l’envoi dans la maison si la température de la véranda est > à celle de la maison, etc…

@Jean-Marc_Collin, êtes vous confronté au problème suivant depuis les dernières màj de l’intégration Tesla :

Quand solar optimizer démarre un cycle pour une charge dynamique, deux commandes sont envoyées : l’une pour activer le switch et l’autre pour régler le courant. Si le véhicule est en veille, l’exécution des commandes échoue :

* Error executing service: <ServiceCall switch.turn_on (c:XXXXXX): entity_id=['switch.titine_charger']>
* Error executing service: <ServiceCall number.set_value (c:XXXXXX): value=7.0, entity_id=['number.titine_charging_amps']>

Passé cela, le switch switch.solar_optimizer_tesla n’est pas activé : j’imagine que son passage sur on est conditionné au succès des commandes précédentes.

Actuellement, la charge et l’optimisation doivent être activés manuellement. Le véhicule restant connecté pendant la charge, le courant peut ensuite être modulé sans problème.

:arrow_forward: Êtes vous confronté à ce problème ? Je ne perçois à ce stade pas de manière de le régler via une automation ou autre solution qui ne demanderait pas de modifier le code du module.

Une discussion sur le repo de l’intégration est en cours concernant le problème d’execution des commandes.

J’ai pas assez de puissance pour charger en hiver. Donc non j’ai pas re-essayé depuis longtemps. Merci pour le signalement en tout cas.

Bonjour,

Je suis très intéressé par cette intégration, qui est exactement ce que je cherchais.
Je l’ai installé, mais je rencontre quelques difficultés.

Tout d’abord mon installation photovoltaïque :

  • 4100wc
  • 5 kWh de stockage (sofar Solar)
  • onduleur hybride (sofar Solar)

Initialement, mon installation fonctionnait comme suit :

  • recharge batterie en heures creuses (22h -6h)
  • décharge le jour suivant demande, se recharge si surplus.

Je pilotais manuellement depuis mon téléphone la recharge de ma Tesla model 3, pour consommer le surplus au mieux.

Mes problèmes :

  • ma production nette est en positif lorsque j’exporte et pas l’inverse… Il faudrait que j’inverse cette valeur, comment puis-je faire ?

  • ma batterie rechargeant sur le surplus jusqu’à 100%, elle se chargera avant la voiture, comment rendre la voiture prioritaire ?

Merci d’avance.

Hello @Campashi,

Il va falloir faire des template sensor. Qqes exemples chez moi:

- 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_122307065303_current_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_122307065303_current_power_production') | 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_122307065303_current_power_consumption') | float(default=0) %}
        {% set production = states('sensor.envoy_122307065303_current_power_production') | 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_122307065303_current_power_consumption') | float(default=0) %}
        {% set production = states('sensor.envoy_122307065303_current_power_production') | 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 %}

A adapter et à mettre dans le fichier template.yaml