Panneaux Solaire Enphase Envoy

salut Mathep,
J’ai fait comme tu as indiqué mais bien que tout soit fonctionnel, je n’ai aucun temps de production qui s’affiche, il reste à zéro. serai ce lié à history_stats?
Il me manque quelque chose je pense.
Merci d’avance.
(ça concerne ta petite carte indiquant la production on/off et le temps total où les panneaux ont produit dans la journée)

@didj34, peux-tu afficher ton code ?

Bien sur, le voici.
dans sensor j’ai mis:

# history demarrage panneaux solaire  
  - platform: history_stats
    name: temps de production aujourd'hui
    entity_id: binary_sensor.production_solaire
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"

et dans binary sensor:

# Determine quand les panneaux solaire commencent a produire
  - platform: template
    sensors:
      solar_run:
        friendly_name: "production_solaire"
        delay_off:
          minutes: 2
        value_template: >-
          {{ states('sensor.envoy_122012103733_current_energy_production')|float > 8 }}

Bonjour à tous je reviens sur le sujet car après 1 an je n’ai toujours pas réussi à avoir les export et import le reste fonctionne bien je pense que ça vient de ma config.yaml, j’ai beau lire ou relire et modifié rien y fait voici ma config:

sensor:
- platform: rflink
  automatic_add: true
  
# history demarrage panneaux solaire  
- platform: history_stats
  name: Solar ON today
  entity_id: binary_sensor.solar_run
  state: "on"
  type: time
  start: "{{ now().replace(hour=0, minute=0, second=0) }}"
  end: "{{ now() }}"

template:
- sensors:
# calcul power export      
- name: energy_exporting
  friendly_name: "Current Energy Exporting"
  value_template: "{{ [0, (states('sensor.envoy_122035055651_current_power_production') | int - states('sensor.envoy_122035055651_current_power_consumption') | int)] | max }}"
  unit_of_measurement: 'W'
  icon_template: 'mdi:flash'

# calcul power import      
- name: energy_importing
  friendly_name: "Current Energy Importing"
  value_template: "{{ [0, (states('sensor.envoy_122035055651_current_power_consumption') | int - states('sensor.envoy_122035055651_current_power_production') | int)] | max }}"
  unit_of_measurement: 'W'
  icon_template: 'mdi:flash'

# Création de l'énergie exportée sur le réseau en Wh
- platform: integration
  source: sensor.energy_exporting
  name: energy_exported_wh
  unit_prefix: k
  round: 2
  method: left
    
# Création de l'énergie importée du réseau en Wh
- platform: integration
  source: sensor.energy_importing
  name: energy_imported_wh
  unit_prefix: k
  round: 2
  method: left

# Utility Meters pour historisation       
utility_meter:
  daily_energy_import:
    source: sensor.energy_importing
    cycle: daily
  daily_energy_export:
    source: sensor.energy_exported_wh
    cycle: daily

Merci d’avance

Qu’est ce que tu as comme valeur du coup dans tes entités?
As-tu essayé avec les outils de développement/modèles pour confirmer que tes calculs marchent?


voilà ce que j’ai

j’ai regardé dans développement/modèles :

Type de résultat: string
# calcul power export      
    - name: energy_exporting
      friendly_name: "Current Energy Exporting"
      value_template: "22"
      unit_of_measurement: 'W'
      icon_template: 'mdi:flash'
Ce modèle écoute les événements de changement d'état suivants:

Entité: sensor.envoy_122035055651_current_power_consumption
Entité: sensor.envoy_122035055651_current_power_production

En fait je pensais plutôt de mettre ces formules là dans le testeur de modèles:

{{ [0, (states('sensor.envoy_122035055651_current_power_production') | int - states('sensor.envoy_122035055651_current_power_consumption') | int)] | max }}

Pour trouver ton problème faudrait déjà confirmer que ces entités ont des valeurs
Et si non, où ça commence à ne pas marcher…:

energy_exporting
energy_importing
energy_exported_wh
energy_imported_wh

je commence à comprendre comment fonctionne ton modèle
energy_exporting = 25 (chiffre bizarre)
energy_importing = 0 (bizarre aussi)
energy_exported_wh = je ne sais pas quoi mettre pour qu’il me donne un chiffre
energy_imported_wh = idem pour celui là

Pour tes calculs… si ça te dit « 25 » comme c’est des watts ça voudrait dire qu’à ce moment là tu exportait 25W…
Et l’import il est à 0… ce serait logique vu ce que tu as mis en valeur :slight_smile:
[0, (states('sensor.envoy_...] | Max
Ca te renvoie le max entre 0 et le calcul d’après… si exporting à une valeur, importing sera à 0… vu que les 2 calculs sont l’inverse l’un de l’autre…

Pour les autres, par exemple:
{{ states(« sensor.energy_exported_wh ») }}

Moi je mettrais toutes les entités que tu as dans cette histoire et tous les calculs… juste pour voir ce que ça vaut.

Merci AlexHass, je suis un peu bête mais que veux-tu dire dans mettre toutes les entités que j’ai dans cette histoire et tout les calculs ?
Tu parles de toutes mes entités enphase ? car j’en ai 8
et 2 autres avec daily import et export

Pas de soucis, pas de question bête :wink:

Ce que je voulais dire dans les outils de développement, pour t’assurer qu’il y a bien des valeurs qui sont trouvée et pour vérifier que tes calculs sont bon tu peux y mettre toutes tes entités utilisées que ce soit celles de Enphase ou celles que tu as définies à la main.

Comme tu veux calculer les quantités importées et exportée chaque jour, et que là ça te met 0 pour les 2, ça veut dire qu’à un moment quelque chose est faux, mal configuré ou oublié.
Donc a un moment entre ta conso + ta prod de en phase jusqu’au moment de calculer le daily_energy_import & export… quelqeu chose ne se passe pas bien…

donc par exemple là ça veut dire qu’il y a un souci

Bonjour MATHEP,
Tout d’abord je te remercie pour cet échange et ce partage !

J’ai essayé de suivre au mieux tes indications qui sont très clair.
Cependant, j’arrive au bout et je tombe sur cela :

Invalid config for [sensor]: required key not provided @ data[‹ platform ›]. Got None. (See /config/configuration.yaml, line 21).
Invalid config for [sensor.template]: [delay_off] is an invalid option for [sensor.template]. Check: sensor.template->sensors->solar_run->delay_off. (See ?, line ?).

La premiere ligne d’erreur est visiblement liée à la ligne 28 :# Creation energie journaliere importée en Wh

La deuxième ne me parle pas !

ET pour daily_energy_import je ne devrait pas avoir configurer une ligne de code quelque part ?

Raspbery Pi

  • platform: systemmonitor
    resources:
    • type: disk_use_percent
      arg: /home
    • type: memory_use_percent
    • type: swap_use_percent
    • type: processor_use
    • type: last_boot

calcul power export

  • platform: template
    sensors:
    energy_exporting:
    friendly_name: « Current Energy Exporting »
    value_template: « {{ [0, (states(‹ sensor.envoy_122214050220_current_power_production ›) | int - states(‹ sensor.envoy_122214050220_current_power_consumption ›) | int)] | max }} »
    unit_of_measurement: ‹ W ›
    icon_template: ‹ mdi:flash ›

calcul power import

  • platform: template
    sensors:
    energy_importing:
    friendly_name: « Current Energy Importing »
    value_template: « {{ [0, (states(‹ sensor.envoy_122214050220_current_power_consumption ›) | int - states(‹ sensor.envoy_122214050220_current_power_production ›) | int)] | max }} »
    unit_of_measurement: ‹ W ›
    icon_template: ‹ mdi:flash ›

Creation energie journaliere importée en Wh

  • utility_meter:
    daily_energy_import:
    source: sensor.energy_imported_wh
    cycle: daily

Création du taux d’Independance Energetique

  • platform: template
    sensors:
    taux_independance_energetique:
    friendly_name: ‹ taux Independance Energetique ›
    value_template: >
    {{ ((1 - ((states(‹ sensor.daily_energy_import ›)|float *1000 / states(‹ sensor.envoy_122214050220_today_s_energy_consumption ›)|float)))*100)| round(1) }}
    unit_of_measurement: ‹ % ›

Determine quand les panneaux solaire commencent a produire

  • platform: template
    sensors:
    solar_run:
    friendly_name: « Solar Run »
    delay_off: minutes 2
    value_template: >-
    {{ states(‹ sensor.envoy_122214050220_current_power_production ›)|float > 8 }}

history demarage panneaux solaire

  • platform: history_stats
    name: Solar ON today
    entity_id: binary_sensor.solar_run
    state: « on »
    type: time
    start: « {{ now().replace(hour=0, minute=0, second=0) }} »
    end: « {{ now() }} »

    EnPhase Data

  • platform: enphase_envoy
    name: pv
    ip_address: 192.168.xxx.xxx
    username: envoy
    monitored_conditions:

    • production
    • daily_production
    • seven_days_production
    • seven_days_consumption
    • lifetime_production
    • lifetime_consumption
    • consumption
    • daily_consumption
    • inverters

Salut,

Avant toutes choses si tu partages du yaml, utilise l’option « texte préformaté » : </>
Comme l’indentation est importante c’est plus simple!

Par exemple:

Mon exemple

recorder:
purge_keep_days: 7
include:
entities:
- sensor.alarm_status

devient

# Mon exemple
recorder:
  purge_keep_days: 7
  include:
    entities:
      - sensor.alarm_status

C’est quand même plus lisible, non? :slight_smile:

Ensuite pour tes erreurs.

Cette erreur, c’est difficile à dire sans la lisibilité correcte avec les indentations. Mais c’est un soucis de formatage surement.

Celle-ci est explicite, delay_off n’est pas une option possible pour un sensor template.
Tu l’as dans ton sensor « solar_run » avec « delay_off: minutes 2 » … je ne comprends pas ce que tu veux faire avec ça.

## Raspbery Pi
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /home
      - type: memory_use_percent
      - type: swap_use_percent
      - type: processor_use
      - type: last_boot

# calcul power export
  - platform: template
    sensors:      
      energy_exporting:
        friendly_name: "Current Energy Exporting"
        value_template: "{{ [0, (states('sensor.envoy_122214050220_current_power_production') | int - states('sensor.envoy_122214050220_current_power_consumption') | int)] | max }}"
        unit_of_measurement: 'W'
        icon_template: 'mdi:flash'

# calcul power import 
  - platform: template
    sensors:     
      energy_importing:
        friendly_name: "Current Energy Importing"
        value_template: "{{ [0, (states('sensor.envoy_122214050220_current_power_consumption') | int - states('sensor.envoy_122214050220_current_power_production') | int)] | max }}"
        unit_of_measurement: 'W'
        icon_template: 'mdi:flash'

# Creation energie journaliere importée en Wh
  - utility_meter:
      daily_energy_import:
      source: sensor.energy_imported_wh
      cycle: daily

# Création du taux d’Independance Energetique
  - platform: template
    sensors:
      taux_independance_energetique:
        friendly_name: 'taux Independance Energetique'
        value_template: > 
          {{ ((1 - ((states('sensor.daily_energy_import')|float *1000 / states('sensor.envoy_122214050220_today_s_energy_consumption')|float)))*100)| round(1) }}
        unit_of_measurement: '%'

# Determine quand les panneaux solaire commencent a produire
  - platform: template
    sensors:
      solar_run:
        friendly_name: "Solar Run"
        delay_off: minutes 2
        value_template: >-
          {{ states('sensor.envoy_122214050220_current_power_production')|float > 8 }}
          
# history demarage panneaux solaire  
  - platform: history_stats
    name: Solar ON today
    entity_id: binary_sensor.solar_run
    state: "on"
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0) }}"
    end: "{{ now() }}"
    
# EnPhase Data
  - platform: enphase_envoy
    name: La lune
    ip_address: 192.168.xxx.6xx
    username: envoy
    monitored_conditions:
      - production
      - daily_production
      - seven_days_production
      - seven_days_consumption
      - lifetime_production
      - lifetime_consumption
      - consumption
      - daily_consumption
      - inverters

Pour le sensor 2 minutes c’est un binary_sensor

Ce type de sensor est installé dans un fichier sensors.yaml ?

Merci

Alors j’ai trouvé les deux facteurs qui posaient problème

un sensor binarie
un utility_meter

Je les ai placé dans /config/configuration.yaml

Ca va mieux !

Je pense que le :

        delay_off: minutes 2`

S’écrit plutôt comme ça:

        delay_off: 
          minutes: 2

Pour les histoires de fichiers en fait la façon dont c’est organisé c’est basé sur le domaine,
« sensor » et « binary_sensor » sont 2 domaines distincts.

Donc quand tu ajoutes un fichier comme ça:

sensor: !include sensor.yaml

ça sous entend que tout ce qui se trouve dans ce fichier c’est du type sensor. Et tu ne peux pas y mettre d’autres types.

Si dans ton fichier config tu avais bcp de binary_sensor alors tu pourrais faire la même chose et créer un fichier de binary sensors.

Explication parfaitement clair !

Merci

Alors j’arrive à tout faire fonctionner. C’est très réussi. Cependant, y a t il un moyen pour sauvegarder les données et les relire ?
Merci