SolarOptimizer : optimisez votre consommation solaire

Bonjour,

SolarOptimizer est une intégration qui va vous permettre d’optimiser la consommation de votre production solaire et automatisant le démarrage et l’arrêt de vos équipements pilotables.

Elle permet entre autre de piloter le déclenchement d’un ballon d’eau chaude ou d’une pompe de piscine si l’ensoleillement est suffisant.

Il permet aussi de piloter l’ampérage de charge d’une voiture électrique par exemple.

La documentation coomplète est ici (en Français) : solar_optimizer/README-fr.md at main · jmcollin78/solar_optimizer · GitHub

4 « J'aime »

:tada: Release 3.0 en preview :mega:

Plus d’informations ici : Release 3.0.0.beta2 · jmcollin78/solar_optimizer · GitHub

Cette pre-release fonctionne bien en tout cas chez moi et la documentation a été mise à jour. J’attends un ou deux de vos retours et je la passerai en release.

N’hésitez pas si vous voyez des bugs ou de la documentation pas claire.

1 « J'aime »

Bonjour @Jean-Marc_Collin,

Est-ce qu’il est possible de combiner SolarOptimizer et VTherm ?

Dans la documentation, je ne comprends pas bien ceci

Citation
A chaque équipement configuré est associé une entité de type switch qui permet d’autoriser l’algorithme à utiliser l’équipement. Si je veux forcer la chauffe du ballon d’eau chauffe, je mets son switch sur off. L’algorithme ne le regardera donc pas, le chauffe-eau repasse en manuel, non géré par Solar Optimizer.

Jai un module On/Off pour piloter le ballon d’eau chaude. En configurant cet equipement avec SolarOptimizer pour qu’il soit géré par ce dernier je dois mettre le module sur On. Est-ce bien cela ?

Cordialement,

Hello, je viens juste à la minute de faire une mise à jour y compris de la documentation.

Peut être que ça vaut le coup de la reparcourir et notamment ce passage qui parle de l’entité enable : solar_optimizer/README-fr.md at main · jmcollin78/solar_optimizer · GitHub

En gros, si ce switch est décoché, l’algorithme ne touchera pas à l’appareil associé. Donc, ça permet de le « repasser en manuel » pour le forcer. Si tu l’allumes alors que le switch est sur ‹ on ›, SO risque de l’éteindre. En mettant enable sur ‹ off › l’algo ne le regarde pas.

Oui

1 « J'aime »

Yes ca réponds à mes questions :+1:

Bon j’en ai encore, notamment pour configurer un VTherm. Je ne vois pas trop ce qu’il faut renseigner ni comment le renseigner pour:

  • action_mode
  • activation_service
  • deactivation_service

Comme cela j’aurai fait action_call et les mêmes commandes d’allumage et d’extinction que pour la configuration du sous-jacent dans VT.

C’est bien cela ?

Hello, il faut commander le VTherm et non pas le sous-jacent (sinon Vtherm va reprendre la main dessus). Voici un exemple (non testé) que je suis en train de rajouter dans la doc :

Commande d’une climatisation

Attention, cette configuration n’a pas été testée sur un cas réel.

Pour allumer une climatisation si la température est supérieure à 27° :

    name: "Climatisation salon"
    entity_id: "climate.clim_salon"
    power_max: 1500
    check_usable_template: "{{ states('sensor.temperature_salon') | float(0) > 27 }}"
    # 1 h minimum
    duration_min: 60
    action_mode: "service_call"
    activation_service: "climate/set_hvac_mode/hvac_mode:cool"
    deactivation_service: "climate/set_hvac_mode/hvac_mode:off"
    battery_soc_threshold: 80

Je veux bien un retour si ça fonctionne.

EDIT : Il faut installer la release 3.0.0.beta3 pour que ça ait une chance de marcher.

Je vais essayer de faire ça pendant le week-end.

Faut-il désinstaller la beta2 pour installer la beta2 ? Ou bien je réinstalle par dessus ?

J ai testé la beta2 avec un ballon d eau chaude. Il ne s est pas activé (vu la prod ça m étonné). Je l ai forcé sans basculer enable à off et il s est bien coupé. Il faut que je relise la doc. !

Bonjour

Çà ne fonctionne qu’avec un climate en mode cool , en mode heat ce n’est pas faisable ?

Hello.
Il me semble, mais je ne suis plus sûr, que dans la carte Lovelace , en version 2.x , quand on cliquait sur l’icône du chauffe eau par exemple , celui-ci s’allumait vraiment. Or maintenant en beta v3, la couleur change bien en orange quand on clique dessus, mais le switch ne se fait pas réellement. Est-ce un bug ? (c’est bien le switch.solar_optimizer_chauffe_eau qui est concerné par l’icône). Le code (juste pour la première carte du haut Mushroom Template) est ok non ?

type: custom:mushroom-template-card
primary: "{{ state_attr('switch.solar_optimizer_chauffe_eau', 'device_name') }}"
secondary: >
  {{ states('sensor.shelly_em0_chauffe_eau_power') }} W actuels. (max. {{
  state_attr('switch.solar_optimizer_chauffe_eau', 'power_max') }} W)

  Durée de "ON" aujourd'hui: {%- set on_time_parts =
  state_attr('sensor.on_time_today_solar_optimizer_chauffe_eau',
  'on_time_hms').split(':') -%}

  {%- if on_time_parts | length == 3 -%}
    {%- set on_hours = on_time_parts[0] | int -%}
    {%- set on_minutes = on_time_parts[1] | int -%}
    {%- set on_seconds = on_time_parts[2] | int -%}
  {%- elif on_time_parts | length == 2 -%}
    {%- set on_hours = 0 -%}
    {%- set on_minutes = on_time_parts[0] | int -%}
    {%- set on_seconds = on_time_parts[1] | int -%}
  {%- else -%}
    {%- set on_hours = 0 -%}
    {%- set on_minutes = 0 -%}
    {%- set on_seconds = 0 -%}
  {%- endif -%}

  {%- set on_time_str = '' -%} {%- if on_hours > 0 -%}
    {%- set on_time_str = on_time_str + on_hours ~ 'h' -%}
  {%- endif -%} {%- if on_minutes > 0 -%}
    {%- set on_time_str = on_time_str + ' ' + on_minutes ~ 'm' if on_time_str else on_minutes ~ 'm' -%}
  {%- endif -%} {%- if on_seconds > 0 and not on_time_str -%}
    {%- set on_time_str = on_seconds ~ ' secondes' -%}
  {%- endif -%} {%- if not on_time_str -%}
    {%- set on_time_str = '0m' -%}
  {%- endif -%}

  {{ on_time_str }} / Sur maximum: {%- set max_time_parts =
  state_attr('sensor.on_time_today_solar_optimizer_chauffe_eau',
  'max_on_time_hms').split(':') -%}

  {%- if max_time_parts | length == 3 -%}
    {%- set max_hours = max_time_parts[0] | int -%}
    {%- set max_minutes = max_time_parts[1] | int -%}
    {%- set max_seconds = max_time_parts[2] | int -%}
  {%- elif max_time_parts | length == 2 -%}
    {%- set max_hours = 0 -%}
    {%- set max_minutes = max_time_parts[0] | int -%}
    {%- set max_seconds = max_time_parts[1] | int -%}
  {%- else -%}
    {%- set max_hours = 0 -%}
    {%- set max_minutes = 0 -%}
    {%- set max_seconds = 0 -%}
  {%- endif -%}

  {%- set max_time_str = '' -%} {%- if max_hours > 0 -%}
    {%- set max_time_str = max_time_str + max_hours ~ 'h' -%}
  {%- endif -%} {%- if max_minutes > 0 -%}
    {%- set max_time_str = max_time_str + ' ' + max_minutes ~ 'm' if max_time_str else max_minutes ~ 'm' -%}
  {%- endif -%} {%- if max_seconds > 0 and not max_time_str -%}
    {%- set max_time_str = max_seconds ~ ' secondes' -%}
  {%- endif -%} {%- if not max_time_str -%}
    {%- set max_time_str = '0m' -%}
  {%- endif -%}

  {{ max_time_str }}
icon: mdi:water-boiler
badge_icon: >-
  {% if is_state_attr('sensor.on_time_today_solar_optimizer_chauffe_eau',
  'should_be_forced_offpeak', True) %}
    mdi:power-sleep
  {% elif is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_enabled',
  True) %}
    mdi:check
  {% else %}
    mdi:cancel
  {% endif %}
badge_color: >-
  {% if is_state_attr('sensor.on_time_today_solar_optimizer_chauffe_eau',
  'should_be_forced_offpeak', True) %}
    #003366
  {% elif is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_usable', True)
  and is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_enabled', True) %}
    green
  {% elif is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_enabled',
  False) %}
    red
  {% elif is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_waiting',
  True) %}
    orange
  {% elif is_state_attr('switch.solar_optimizer_chauffe_eau', 'is_usable',
  False) or state_attr('switch.solar_optimizer_chauffe_eau', 'is_usable') is
  none %}
    "#A0B0FF"
  {% else %}
    blue
  {% endif %}
entity: switch.solar_optimizer_chauffe_eau
icon_color: |-
  {% if is_state('switch.solar_optimizer_chauffe_eau', 'on') %}
    orange
  {% else %}
    lightgray
  {% endif %}
tap_action:
  action: toggle
hold_action:
  action: more-info
double_tap_action:
  action: toggle
grid_options:
  rows: 1
  columns: 16
multiline_secondary: true
card_mod:
  style: |
    .card__secondary {
      line-height: 1.2 !important;
      margin: 0 !important;
    }

Bonjour :slight_smile:
j’aimerai pouvoir m’en servir en mode heat également :slight_smile: je confirme que rien ne s’active :frowning:

par dessus. Via HACS tu forces l’installation de la beta3 et ça va remplacer la 2. Si tu n’avais pas la beta2 déroule bien la procédure de migration.

… et attention, c’est une béta. Je l’ai depuis 2 jours sans soucis mais ça reste une beta.

1 « J'aime »

La réponse est dans la doc. Si on peut faire cool on peut faire heat, on peut changer de preset, on peut changer de température, bref, on devrait pouvoir tout faire.

C’est censé marcher pareil. Pas de changement à ce niveau là.

Donne moi ta config stp.

Y a p’tete bien un soucis en effet, j’ai un log d’erreur:

2025-03-15 19:02:42.768 WARNING (MainThread) [py.warnings] /config/custom_components/solar_optimizer/switch.py:238: RuntimeWarning: coroutine 'ManagedDevice.activate' was never awaited
  device.activate()

Je corrige ça.

Merci ! j’osais rien dire mais je pensais bien que c’était pas « comme avant ! » :wink:

Essaye celle-là: Release 3.0.0.beta4 · jmcollin78/solar_optimizer · GitHub
J’ai fais un fix rapide.

EDIT: ca marche sur un switch.

C’est tout bon sur les switch je confirme. Bravo et merci pour la rapidité c’est top :ok_hand:

Si je peux me permettre, dans la doc et dans la config de l’intégration, précise aux users que c’est en minutes qu’il faut insérer les valeurs « temps min par jour » et « temps max par jour » ça peut paraitre tellement évident pour le dev ou pour un confirmé que justement les nombreux débutants vont pas forcément savoir quoi mettre.
Pareil pour les lignes templates d’usabilité et d’activation, il faudra à terme bien expliquer, moi je commence à me démerder avec ces notions mais c’est loin d’être facile :wink: Mais je confirme ce qui a déjà été dit, la config via l’user interface est déjà vraiment très bien, ça va largement aider les débutants.

C est déjà mieux qu une version alpha. Et des fois très proche de la RC :wink:

C’est fait merci pour le signalement.

1 « J'aime »