[Intégration]Urban Solar BV – Simulez une batterie virtuelle dans Home Assistant

Pas possible de créer des Template sensor dans l’UI donc a priori je suis obligé de les garder dans mon Yaml…

Si on peut créer des template sensors en interface graphique.

Bonne journée

2 « J'aime »

On peut créer des templates dans les entrées, il faudra toujours les écrire en code mais ils ne seront pas stockés dans le config.yaml

1 « J'aime »

Bonjour, je suis tout jeune client US en BV. Je me suis dit qu’il y avait forcément des intégrations HA malines… et la voici ! Merci ! :+1:t2:

J’ai un souci pour le paramètre Capteur de puissance consommée (kW).

  • Quelle doit être sa valeur si je tire sur le réseau : positive ou négative (positive j’imagine)

  • Quelle doit être sa valeur si je restitue au réseau : nulle ? négative ?

Bonjour,
Les deux capteurs de puissance consommées et produites, instant, à sélectionner

  • :zap: Puissance de Production solaire (en kW)
  • :house: Puissance Consommée totale (en kW)

doivent être positifs et en kW
C’est configurable via enphase ou alors il faut créer un template pour faire la conversion/inversion)

Bonne chance

1 « J'aime »

Suite au message de @mll sur github et les précédents de @Pechabricot, je préconiserai maintenant de créer le dashboard depuis les paramètres/tableau de bords en copiant le code suivant dans sa section yaml

views:
- title: Urban
  sections:
  - type: grid
    cards:
    - type: custom:energy-flow-card-plus
      entities:
        battery:
          entity:
            production: sensor.urban_batterie_virtuelle_entree_horaire
            consumption: sensor.urban_batterie_virtuelle_sortie_horaire
          state_of_charge: input_number.urban_batterie_virtuelle_stock
          state_of_charge_unit: kwh
          use_metadata: false
        grid:
          entity:
            consumption: sensor.urban_energie_importee_enedis
          use_metadata: false
        home:
          entity: sensor.urban_energie_consommee_totale
          subtract_individual: false
          use_metadata: false
          override_state: true
        solar:
          entity: sensor.urban_energie_solaire_produite
      clickable_entities: true
      display_zero_lines: true
      use_new_flow_rate_model: true
      energy_date_selection: false
      wh_decimals: 1
      kwh_decimals: 0
      min_flow_rate: 1
      max_flow_rate: 6
      max_expected_energy: 2000
      min_expected_energy: 10
      wh_kwh_threshold: 1000
      title: Energy Flow Card
    - type: custom:apexcharts-card
      graph_span: 3d
      span:
        end: minute
      header:
        show: true
        title: Batterie Virtuelle
        show_states: true
        colorize_states: true
      series:
      - entity: input_number.urban_batterie_virtuelle_stock
        yaxis_id: first
        name: Stock batterie
        type: line
        group_by:
          duration: 0.5h
          func: last
        stroke_width: 3
      - entity: input_number.urban_batterie_virtuelle_pointage
        yaxis_id: first
        name: Pointage manuel
        type: line
        stroke_width: 3
        color: "#995000"
        show:
          in_chart: false
      yaxis:
      - id: first
        decimals: 1
        apex_config:
          tickAmount: 4

    - type: custom:power-flow-card-plus
      entities:
        battery:
          entity:
            consumption: sensor.urban_puissance_batterie_virtuelle_out
            production: sensor.urban_puissance_batterie_virtuelle_in
          state_of_charge: input_number.urban_batterie_virtuelle_stock
          display_state: one_way_no_zero
          state_of_charge_unit: kwh
          show_state_of_charge: true
          use_metadata: true
          color_circle: true
        grid:
          entity: sensor.urban_puissance_import_enedis
          display_state: one_way
          secondary_info: {}
        solar:
          entity: sensor.urban_puissance_solaire_instant
          display_zero_state: true
          secondary_info: {}
        home:
          secondary_info: {}
          entity: sensor.urban_conso_totale_instant
          override_state: true
      clickable_entities: true
      display_zero_lines: true
      use_new_flow_rate_model: true
      w_decimals: 0
      kw_decimals: 1
      min_flow_rate: 0.75
      max_flow_rate: 6
      max_expected_power: 2000
      min_expected_power: 0.01
      watt_threshold: 1000
      transparency_zero_lines: 0
      sort_individual_devices: false
      title: Power Flow Card

    - type: custom:apexcharts-card
      graph_span: 3d
      span:
        end: minute
      header:
        show: true
        title: Bilan energie réseau
        show_states: true
        colorize_states: true
      apex_config:
        chart:
          type: line
      series:
      - entity: sensor.urban_energie_restituee_au_reseau
        yaxis_id: first
        type: line
        color: green
        group_by:
          duration: 0.5d
          func: diff
        name: Variation quotidienne
      yaxis:
      - id: first
        decimals: 0
        apex_config:
          tickAmount: 4
    - type: custom:apexcharts-card
      graph_span: 3day
      span:
        end: minute
      header:
        show: true
        title: Batterie Virtuelle - Flux Horaire
        show_states: true
        colorize_states: true
      apex_config:
        chart:
          type: area
        stroke:
          curve: smooth
      series:
      - entity: input_number.urban_energie_battery_in_hourly
        yaxis_id: first
        name: Entrée Batterie (IN)
        type: line
        color: "#00C853"
        stroke_width: 3
        group_by:
          duration: 1h
          func: avg
      - entity: input_number.urban_energie_battery_out_hourly
        name: Sortie Batterie (OUT)
        yaxis_id: first
        type: line
        color: "#D50000"
        stroke_width: 3
        group_by:
          duration: 1h
          func: avg
      - entity: sensor.urban_energie_restituee_au_reseau_hourly
        name: Bilan energie
        yaxis_id: second
        type: line
        color: yellow
        stroke_width: 1
        group_by:
          duration: 1h
          func: avg
      yaxis:
      - id: first
        decimals: 1
        apex_config:
          tickAmount: 4
      - id: second
        opposite: true
        decimals: 1
        apex_config:
          tickAmount: 4
    - type: custom:vertical-stack-in-card
      cards:
      - type: entities
        entities:
        - entity: sensor.urban_energie_restituee_au_reseau_hourly
          name: Variation horaire
        - entity: sensor.urban_batterie_virtuelle_entree_horaire
          secondary_info: none
          name: "Batt in pour dashboard energy "
        - entity: sensor.urban_batterie_virtuelle_sortie_horaire
          name: Batt out pour dashboard energy
        title: Index horaire et sensor horaire
        grid_options:
          columns: 12
          rows: 6
        state_color: true
      - type: custom:vertical-stack-in-card
        title: Batterie Virtuelle (kWh)
        cards:
        - type: custom:numberbox-card
          entity: input_number.urban_batterie_virtuelle_pointage
          name: "Pointage manuel "
          icon: mdi:target
          min: 0
          max: 100
          step: 0.1
          unit: kWh
          style: |
            ha-card {
              margin-bottom: 8px;
            }
          secondary_info: à date de facture
          border: true
        - type: custom:numberbox-card
          entity: input_number.urban_batterie_virtuelle_stock
          name: Stock calculé
          icon: mdi:battery
          min: -100
          max: 200
          step: 0.1
          unit: kWh
          border: false
    column_span: 3
  - type: grid
    cards:
    - type: heading
      heading_style: title
    column_span: 2
  cards: []
  type: sections
  max_columns: 3
  dense_section_placement: false

Ainsi plus besoin de renseigner les ressorurces hacs une a une dans le configuration.yaml
J’ai modifié le post #2 en conséquence

2 « J'aime »

Salut J’ai enfin réussi à faire du propre dans mon Config Yaml et à mettre en place cet intégration.
Mais j’ai l’impression qu’il y à un truc qui cloche !

”Les graph son vide se matin car j’ai fait la bascule à ce moment la”

merci

Oui il faut laisser vivre l’intégration quelques temps mais surtout renseigner le niveau approximatif de votre batterie virtuelle car sinon (comme sur votre premier screen) l’intégration considèrera que la BV est a 0 et donc que vous tirer exclusivement depuis ENEDIS.

1 « J'aime »

Merci pour le retour
Je vais tester ca

Bonjour,

Je suis en train de mettre en place l’intégration, pour le moment le graphe power flow card fonctionne mais pas le reste… Voici qq éléments sur la configuration en place, merci d’avance pour l’aide!

Fichier config:
Les fichiers template et sensors sont dans les répertoires respectifs.
La partie automation a été rajoutée dans le fichier automations.yaml
Les modifications de la batterie virtuelle (2500 puis 2400 ) ont été effectuées manuellement.




default_config:

frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
sensor: !include_dir_merge_list sensors/
template: !include_dir_merge_list template/

input_number: !include urban_input_numbers.yaml
sensor: !include urban_integrations.yaml
utility_meter: !include urban_utility_meters.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Bonjour j ai une petite interrogation concernant le capteur de puissance consommé mon installation solaire étant basé sur une base de 6 micros onduleurs deye (j’ajoute la production des 6 pour avoir le Capteur de puissance solaire (kW)) et un shelly mesurant la puissance consommée ou injectée sur le réseau

Si je met dans le Capteur de puissance consommée (kW) les données de mon shelly lorsque mon installation solaire produit plus que ma consommation la consommation tombe à zéro (le shelly voit seulement la puissance consome et injectecter )

esse que cela va poser un problème sur le calcul de la batterie virtuelle ou pas ?

merci d’avance

Bonjour, il vous faut créer un capteur de puissance totale consommee, soit chez vous la somme de puissance solaire produite + puissance consommée shelly. C est ce capteur qu’il faut renseigner dans l’intégration. C’est bizarre quand même que le shelly ne propose pas ce total de lui même…

et oui, sans ce total l’integration sera très fausse :wink:

ok je vais voir pour essayer de crée ce capteur mais ce n’ai pas simple car les micro onduleur me renvoi un etat indisponible la nuit ce qui me met en erreur la nuit

Il faut creer une entrée sensor template soit par l’UI soit par le configuration.yaml

template:
  - sensor:
      - name: "Puissance Totale"
        unit_of_measurement: "kW"
        state: >
          {% set pv = states('sensor.pv_power') | float(0) %}
          {% set shelly = states('sensor.shelly_power') | float(0) %}
          {{ pv + shelly }}

Explications opérationnelles :

  • sensor.pv_power est votre capteur solaire (remplacez par le nom réel).

    sensor.shelly_power est la puissance consommée.(remplacez par le nom réel).

    | float(0) convertit les valeurs en nombre et remplace automatiquement unavailable, unknown, none, etc. par 0.

    Le calcul ne peut donc jamais échouer, quelle que soit l’heure ou l’état du matériel.

merci pour ton retour j’ai personnalisez le code avec les donnez de mes capteurs mais j’ai surement fait une erreur voila mon code modifier Loads default set of integrations. Do not remove.

# Loads default set of integrations. Do not remove.
default_config:

#Urban solar
input_number: !include urban_input_numbers.yaml
sensor urban : !include urban_integrations.yaml
template: !include urban_sensors.yaml
utility_meter: !include urban_utility_meters.yaml
# Automatisations globales 
automation: !include automations.yaml 
# Automatisations spécifiques à UrbanSolar 
automation urban: !include urban_automations.yaml

template:

sensor:

name: « Puissance Solaire + Consommation »
unit_of_measurement: « kW »
state: >
{% set pv = states(‹ sensor.production_solaire_total_instantanne ›) | float(0) %}
{% set shelly = states(‹ sensor.shellypro3em_9454c5b9e950_total_active_power ›) | float(0) %}
{{ pv + shelly }}      
    • du coup ca me renvoi une erreur  
      
duplicated mapping key (15:1)

 12 | 
 13 | 
 14 |    
 15 | template:
------^
 16 |   - sensor:

merci par avance

Bonjour, je suis aussi en train de galérer un peu mais je touche au but :crossed_fingers:
Je galère sur le “capteur de puissance consommée” que l’on doit mettre dans l’intégration. C’est bien la somme de la production solaire + ce qui est mesuré en sortie du disjoncteur principal que se soit positif ou négatif ? Sachant qu’après le disjoncteur principale cela peut être positif (si je tire sur le réseau) ou négatif (si j’injecte dans le réseau) est-ce que ça pose problème ? Ou il ne faut prendre en compte que les valeurs positives quand on tire sur el réseau Enedis ?
J’ai 1 Shelly 3em en monophasé avec 1 pince sur la prod solaire et une en sortie du disjoncteur Enedis
Et aussi, comment on ajoute le stock actuel de la batterie virtuelle ?
PS: J’ai mis en place il y a qques heures donc il faut peut-être attendre pour que + d’infos remontent sur les graphs :wink:

La puissance solaire est soit consommée soit injectée, soit les deux en même temps. Mon intégration sait se débrouiller avec avec ces 3 “états” a partir du moment ou on lui indique

  • la puissance instantanée qui vient des panneaux
  • la puissance totale consommée par votre maison (sous entendu enedis + solaire, ou somme de tous les équipements)

la premiere est facile d’accès car donnée par l’installation solaire
la seconde dépends de comment vous avez placé votre/vos pinces de mesure et de ce qu’elle renvoit

Les shelly semblent déjà faire une sorte de bilan entre l’energie injectée (négative) et prélevée (positive), en fait ça n’est juste pas la mesure qui nous intéresse

En revanche par une manipulation des données comme indiqué 3 postes au dessus vous pouvez créer un sensor qui calcule cette puissance totale consommée, c’est facile et je vous conseille de le faire depuis l’UI (pas comme @lyon780 qui l’a fait depuis sa configuration.yaml - c’est plus commpliqué a cause du formalisme)

1 « J'aime »

Bonjour,
Aucune idée suite à ce post?
Merci

???
Vail, que se passe t’il si vous ne déplacez pas les fichiers de config ?

par defaut les fichier de config sont dans le dossier /homeassistant
/homeassistant/urban_sensors.yaml
/homeassistant/urban_integrations.yaml
/homeassistant/urban_input_numbers.yaml
…etc

On peut penser que les déplacer puisse casser certaines fonctionnalités … :face_with_bags_under_eyes:

merci de tester a minima avec les emplacements par défaut, quitte a désactiver temporairement les autres intégrations si vous luttez contre des conflits…

Et (re)suivre la procédure d’installation pas a pas que je viens de mettre à jour il y’a quelques semaines