Intégration Solar Optimizer - Optimisation de sa consommation Solaire

Merci, en effet, ça marche ! toutefois j’ai créé une entrée « input.number.wallbox_portal_max_charging_current » pour faire le test, car ça ne fonctionnait pas avec ma wallbox en direct qui est « number.wallbox_portal_max_charging_current » si je modifie la config de cette façon

  - name: "Recharge voiture"
    entity_id: "switch.wallbox_charger"
    # La puissance minimale de charge est 660 W (soit 1 Amp car convert_power_divide_factor=660 aussi)
    power_min: 660
    # La puissance minimale de charge est 3960 W (soit 5 Amp (= 3960/600) )
    power_max: 3960
    # le step de 660 soit 1 Amp après division par convert_power_divide_factor
    power_step: 660
    # Utilisable si le mode de charge est "Solaire" et la voiture est branchée sur le chargeur et elle est chargée à moins de 90 % (donc ca s'arrête tout seul à 90% )
    check_usable_template: "{{ is_state('input_boolean.solar_optimizer_test', 'on')}}"
    # 1 h de charge minimum
    duration_min: 60
    # 15 min de stop charge minimum
    duration_stop_min: 15
    # L'entité qui pilote l'ampérage de charge
    # power_entity_id: "input_number.wallbox_portal_max_charging_current"
    power_entity_id: "number.wallbox_portal_max_charging_current"
    # 5 min minimum entre 2 changements de puissance
    duration_power_min: 5
    # l'activation se fait par un appel de service
    action_mode: "service_call"
    activation_service: "switch/turn_on"
    deactivation_service: "switch/turn_off"
    # le changement de puissance se fait par un appel de service
    #change_power_service: "input_number/set_value"
    change_power_service: "number/set_value"
    # le facteur permettant de convertir la puissance consigne en Ampères (number.tesla_charging_amps prend des Ampères)
    convert_power_divide_factor: 660

j’ai l’erreur

Échec du rechargement de la configuration
Cannot quick reload all YAML configurations because the configuration is not valid: Invalid config for [solar_optimizer]: Entity number.wallbox_portal_max_charging_current belongs to domain number, expected ['input_number', 'sensor'] for dictionary value @ data['solar_optimizer']['devices'][1]['power_entity_id']. Got 'number.wallbox_portal_max_charging_current'. (See /config/configuration.yaml, line 13).

Je fais une erreur de syntaxe ? Je viens de Jeedom et franchement pas trop évident au début !
J’ai copié ma valeur avec un script de manière indirect , ça fonctionne en manuel mais j’ignore comment le faire à chaque changement de valeur et en plus, je ne trouve pas ça propre.

service: number.set_value
data:
  value: "{{states ('input_number.wallbox_portal_max_charging_current') }}"
target:
  entity_id: number.wallbox_portal_max_charging_current

Merci pour vos lumières

Ok, je vois le soucis. Dans power_entity_id, je n’accepte que des input_number ou des sensor. Je vais ajouter des number et ça devrait marcher. Je te dis quand c’est fait.

La release est là: Release FIX number domain is not accepted · jmcollin78/solar_optimizer · GitHub

MERCI! Ça fonctionne plus d’erreurs, maintenant je peux regarder pour mieux comprendre le fonctionnement en mode réel

1 « J'aime »

Intégration très intéressante que je pense tester prochainement.
En attendant, peux-tu me dire quelle intégration tu utilises pour tes graphes de bilans de consommations ?

C’est les graphes données par Enlighten (la plateforme derrière le système Enphase). Donc c’est pas une intégration Home Assistant à proprement parler.

Par contre, tu as nativement dans le dashboard Energie quasiment l’équivalent :

Bravo pour le boulot ! J’ai également un Atlantic Calypso qui dispose de cette fonction mais que je pilote via la passerelle Atlantic/overkiz du coup avec HA je cherchais à me passer du contact sec pour le piloter mais je ne vois pas d’entité qui permettrait cela. Qu’as-tu mis comme contact sec du coup ?

Pour mon Atlantic Calypso j’ai mis un SONOFF ZBMINI L2 (ZBMINI-L2 - SONOFF Official) branché sur les bornes du contact.

Je ferme le contact lorsque j’ai au moins 1000 w de puissance dispo. Ca marche bien depuis 6 mois environ.

A ma connaissance on ne peut pas le déclencher via l’intégration Overkiz (qui marche d’ailleurs assez mal en commande de l’Atlantic Calypso). On voit bien les datas mais impossible de le commander.

1 « J'aime »

Merci, je vais regarder cela.

Bonsoir,

Pour l’instant je n’ai pas encore de contrat mais je vais revendre à EDF OA, qu’avez-vous mis en sensor ou input_number qui donne la taxe applicable sur les kwh exportée ?

J’ai mis 10% mais je n’ai pas encore la valeur exacte car ça fait pas encore un an.

Salut, comme tu le sais @Jean-Marc_Collin je débute sur ton intégration. Je fais ma prise green up. Elle demande 3,7 kW donc j’ai fais ce code si tu peux me dire si c’est bon ou non :

devices:
  - name: "Prise de recharge"
    # Le switch qui commande la pompe du réservoir
    entity_id: "switch.sonoff_10013c3bd3_1"
    # la puissance de cette prise
    power_max: 3700
    # Toujours utilisable
    # check_usable_template: "{{ True }}"
    # 5 min d'activation minimum
    duration_min: 5
    # 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"

Par contre, j’ai un problème, l’intégration me marque « non chargé »

Ca m’a l’air très bien. J’augmenterai le 5 min car si tu coupes / allumes la prise toutes les 5 minutes ton chargeur ne va pas aimer. Met plutot 1 h ou 2 h. Quand on lance une charge c’est pour un certain temps.

La mienne qui fait pareil (en plus compliqué) :

algorithm:
  initial_temp: 1000
  min_temp: 0.1
  cooling_factor: 0.95
  max_iteration_number: 1000
devices:
...
  - name: "Prise recharge voiture garage"
    entity_id: "switch.prise_garage_voiture"
    power_max: 1775
    check_usable_template: "{{ is_state('binary_sensor.titine_connection_status', 'on') and states('sensor.titine_remaining_battery_percent') | float(100) < 95 }}"
    # 2 heures
    duration_min: 120
    duration_stop_min: 15
    action_mode: "service_call"
    activation_service: "switch/turn_on"
    deactivation_service: "switch/turn_off"
...

Le check_usable_template permet de filtrer les cas ou on allume la prise. J’allume pas si la voiture n’est pas connectée et si elle est déjà au moins à 95%.

Tu as le log complet ?
donne moi le configuration.yaml et le fichier de conf pour Solar Optimizer stp (cache les infos secretes surtout)

Ça doit venir de là, j’ai mis dans configuration.yaml :

solar_optimizer: !include solar_optimizer.yaml

Et dans solar_optimizer.yaml :

algorithm:
  initial_temp: 1000
  min_temp: 0.1
  cooling_factor: 0.95
  max_iteration_number: 1000
devices:
  - name: "Prise de recharge"
    # Le switch qui commande la pompe du réservoir
    entity_id: "switch.sonoff"
    # la puissance de cette prise
    power_max: 3700
    # Toujours utilisable
    # check_usable_template: "{{ True }}"
    # 5 min d'activation minimum
    duration_min: 5
    # 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"

J’ai enlevé entity id car la prise est sur on. Je dois ressortir la voiture pour démonter le coffret électrique et regarder pourquoi il ne s’éteint plus du tout

Logger: homeassistant.setup
Source: setup.py:288
First occurred: 17:08:56 (1 occurrences)
Last logged: 17:08:56

Error during setup of component solar_optimizer
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 288, in _async_setup_component
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/solar_optimizer/__init__.py", line 97, in async_setup
    hass.data[DOMAIN]["coordinator"] = coordinator = SolarOptimizerCoordinator(
                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/solar_optimizer/coordinator.py", line 64, in __init__
    raise err
  File "/config/custom_components/solar_optimizer/coordinator.py", line 56, in __init__
    for _, device in enumerate(config.get("devices")):
                               ^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'get'

Ne me demande pas pourquoi mais après une bonne dizaine de redémarrage et de reconfiguration, sa fonctionne. Je me remets sur le code. Comment faire pour que quoi qu’il arrive, il s’enclenche entre 22h30 et 6h30 ?
Par contre, le prix d’achat électrique, on ne peut pas mettre hc et hp. J’ai donc mis hp c’est lui qui m’intéresse la journée.

J’ai regardé et il y a un également un second exemple de recharge. Moi j’ai juste 1 prise green up qui consomme 3,7 kW lorsque la voiture est branché

Est-ce que ce code est cohérent (il me manque la façon d’ajouter les heures) :

  - name: "Recharge voiture"
    entity_id: "switch.sonoff_10013c3bd3_2"
    # La puissance minimale de charge est 660 W (soit 1 Amp car convert_power_divide_factor=660 aussi)
    power_min: 3700
    # La puissance minimale de charge est 3960 W (soit 5 Amp (= 3960/600) )
    power_max: 6000
    # le step de 660 soit 1 Amp après division par convert_power_divide_factor
    check_usable_template: "{{ is_state('input_boolean.solar_optimizer_test', 'on')}}"
    # 10 min de charge minimum
    duration_min: 10
    # 15 min de stop charge minimum
    duration_stop_min: 5
    action_mode: "service_call"
    activation_service: "switch/turn_on"
    deactivation_service: "switch/turn_off"
    # le changement de puissance se fait par un appel de service
    ```

Alors il doit y avoir un mal-entendu, l’idée de cette intégration n’est pas de déclencher à heure fixe mais lorsque la production solaire est suffisante. Pour déclencher à heure fixe, un Scheduler ou une automatisation feront l’affaire.

Moi j’ai un input_number qui change en fonction des hc / hp. Mais c’est pas très important, l’écart de prix hp/hc joue très peu sur l’optimisation.

Tu n’as pas besoin de power_min. C’est pour faire varier la puissance de charge en fonction de la puissance produite. Regarde dans le readme a la section For variable power equipment. A priori tu ne peux pas faire varier la puissance de charge ou alors il manque plein de paramètres si tu veux faire ça.

Salut, non moi c’est bien une puissance fixe. Pour le faire j’ai besoin de 3700 w. Du coup il faut que je lui mette power_min pour que dès que j’ai 3700w minimum il enclenche la prise ?

T’as pas besoin de power_min si tu as une puissance fixe. Il n’est utilisé que dans le cas de puissance variable. Relis la doc au besoin.

En gros tu vas dire à Solar Optimizer, cette prise là, quand elle est ‹ on › elle consomme au max 3700w (donc power_max) et il va l’allumer si tu as 3700 w de disponible (produit - consommé)

Ok je comprends mieux le power max merci beaucoup.
Se sera très utile en été.
Je reviendrai pour mon futur chauffe eau :sweat_smile:
Merci