Iberdrola Distribución (i-DE) - Energy Monitor (Custom Integration Released)

Buenas,

Eso es un problema con el acceso. Básicamente, un error 403 es un problema de permiso. Confirma que los datos de acceso en configuration.yaml están correctos.

¿Sería así?

{{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * (1 - states('input_number.bono_social') | float) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}

Sí, creo que está correcto

1 Like

Por lo que veo has puesto los importes en el campo “Tamaño del paso”. Eso lo deberías dejar como en el ejemplo que pongo arriba.

Los importes los tienes que poner después (lo mejor en el Developer Tools): pulsar en el texto del nombre del sensor y poner el importe en states:

Y hacerlo para cada uno…

Para el gas. De momento, que yo sepa, apenas hay contadores inteligentes montados en España (recuerdo que para consumo doméstico, hubo una consulta pública de la CNMC sobre el tema en julio-septiembre 2021, y creo que se espera que a partir de 2024 empiecen a instalar)

Buenas,

Pues de esto no me había dado cuenta, como sólo tengo un contrato, no sabía que cambiaba según la consulta en la web.

A ver si en futuras versiones se puede implementar la consulta por número de contrato.

Gracias por la nota :+1:

Hola;

Lo tengo en el sensor.yaml, lo he revisado varias veces y los datos están bien, son los que utilizo para acceder a la pagina web y aplicación móvil.

lo tengo así:

Iberdrola Distribucion IDE

Un duda adicional, la cuenta que tengo en la web de Iberdrola Distribución es con un Perfil Normal, de ver el consumo y nada mas, para usar la integración debería de tener el Perfil Avanzado???

image

Si, tiene que ser un perfil avanzado enviando una foto del dni

Lo he hecho por archivo input_number.yaml poniéndolo en initial y parece que funciona. Igual lo cambio a state. Gracias

Gracias, ya lo he solicitado.

He intentado ponerlo en el archivo input_number.yaml pero no me deja "state: ". Poniéndolo en initial me marca los valores en herramientas para desarrolladores pero en los cálculos me sigue marcando 0 en “home energy cost” y no sé porque alguna vez me marcaba el gasto por hora pero casi siempre no y por lo tanto no me calcula el coste, pero vamos, con eso me apaño.

  1. conecta el cabezal óptico a la raspberry pi
  2. instalar un cliente python en la raspberry pi Gurux.DLMS | Gurux for DLMS smart meters
  3. enviar los datos por wifi mediante, por ejemplo, MQTT

Cabeza Optica RJ OPUSB IEC Cable de 2M de longitud, medidores eléctricos de protocolo IEC1107, lectura, programación, sondas ópticas para ordenador portátil infrarrojo, Color negro|probe|probe cable - AliExpress

Ok. Gracias por la info.

Lo que me imaginaba, que para mi caso, con los contadores en el sótano del edificio no me vale.

Pero seguramente será muy buena idea para quién esté en un chalet. :wink:

Saludos

Hola a todos,

A ver si me podeis echar una mano… soy bastante nuevo en esto de Home Assistant y he intentado seguir las instrucciones de GitHub para aplicar esta integración pero no tengo narices… algo estaré haciendo mal seguro… pero no termino de entender el qué.

Os pongo los datos de mi sistema y si se necesita algún log por mi lado no dudeis en pedirmelo.

Home Assistant:
Corriendo en una MV dentro de mi NAS QNAP.
Version de HA: Home Assistant 2021.12.10
Version de I-DE Energy Monitor: v0.1.1

Siguiendo las instrucciones en GitHub tengo el siguiente fichero: /config/configuration.yaml


# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate
sensor:
  - platform: ide
    username: [email protected]
    password: password
# UTILITY METER #
utility_meter:
  # HOME ENERGY #
  home_energy_hourly:
    source: sensor.ide_meter_reading
    cycle: hourly

  home_energy_daily:
    source: sensor.ide_meter_reading
    cycle: daily

  home_energy_monthly:
    source: sensor.ide_meter_reading
    cycle: monthly

  home_energy_cost_hourly:
    source: sensor.home_energy_cost
    cycle: hourly

  home_energy_cost_daily:
    source: sensor.home_energy_cost
    cycle: daily

  home_energy_cost_monthly:
    source: sensor.home_energy_cost
    cycle: monthly
# ENERGY COST #
  sensors:
    home_energy_cost:
      friendly_name: "Home Energy Cost"
      unit_of_measurement: "€"
      value_template: >
        {% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %}
        {% endif %}
        {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}
#
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Con esta configuración me sale el siguiente error:

Invalid config for [utility_meter]: [home_energy_cost] is an invalid option for [utility_meter]. Check: utility_meter->utility_meter->sensors->home_energy_cost. (See /config/configuration.yaml, line 14). 

He estado leyendo algunos posts de este hilo pero no he visto nada relevante que me diera luz para continuar…

Quedo a la espera de vustros comentarios y gracias por adelantado.
Saludos

Hola,

El sensor home_energy_cost viene de un template, que tiene que ir dentro de sensor directamente.

En teoría te debería funcionar con las correcciones que te paso abajo.

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate
sensor:
  - platform: ide
    username: [email protected]
    password: password

# ENERGY COST #
  - platform: template
    sensors:
      home_energy_cost:
        friendly_name: "Home Energy Cost"
        unit_of_measurement: "€"
        value_template: >
          {% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %}
          {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %}
          {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %}
          {% endif %}
          {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}
#

# UTILITY METER #
utility_meter:
  # HOME ENERGY #
  home_energy_hourly:
    source: sensor.ide_meter_reading
    cycle: hourly

  home_energy_daily:
    source: sensor.ide_meter_reading
    cycle: daily

  home_energy_monthly:
    source: sensor.ide_meter_reading
    cycle: monthly

  home_energy_cost_hourly:
    source: sensor.home_energy_cost
    cycle: hourly

  home_energy_cost_daily:
    source: sensor.home_energy_cost
    cycle: daily

  home_energy_cost_monthly:
    source: sensor.home_energy_cost
    cycle: monthly

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Mi recomendación, de todas formas, es que la parte de sensor lo pases a un archivo sensor.yaml por separado y en configuration.yaml pongas esto:

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml

(removiendo el sensor que tienes antes)

Y el contenido de sensor.yaml sería esto:

- platform: ide
  username: [email protected]
  password: password

# ENERGY COST #
- platform: template
  sensors:
    home_energy_cost:
      friendly_name: "Home Energy Cost"
      unit_of_measurement: "€"
      value_template: >
        {% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %}
        {% endif %}
        {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}
#

Espero que te sirva de ayuda

Buenas a todos,

Por si os interesa, con la aportación inestimable de hectorespert, he sacado una versión beta de la integración en que el código de oligo se importa automáticamente a HA y no va integrado en el código.

Si lo queréis probar, en HACS, lo podéis instalar seleccionando la opción de “Redownload” y “Show beta versions”.

Si preferís descargar directamente, tenéis todo aquí: Release v0.2.0-alpha · ad-ha/ide_api · GitHub

Por otra parte, en base a algunos comentários e ideas que he tenido, podéis crear en Issues (Issues · ad-ha/ide_api · GitHub) las mejorías que os gustaría ver en la integración.

Saludos

1 Like

Muchas gracias por la ayuda @VaReTaS Aprovecho para darte la enhorabuena por el trabajo.

He seguido tu consejo de dejar los sensores en el fichero sensor.yaml y he dejado los ficheros de esta forma:

configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
#default_config:

# Text to speech
tts:
  - platform: google_translate
# UTILITY METER #
utility_meter:
  # HOME ENERGY #
  home_energy_hourly:
    source: sensor.ide_meter_reading
    cycle: hourly

  home_energy_daily:
    source: sensor.ide_meter_reading
    cycle: daily

  home_energy_monthly:
    source: sensor.ide_meter_reading
    cycle: monthly

  home_energy_cost_hourly:
    source: sensor.home_energy_cost
    cycle: hourly

  home_energy_cost_daily:
    source: sensor.home_energy_cost
    cycle: daily

  home_energy_cost_monthly:
    source: sensor.home_energy_cost
    cycle: monthly
#
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensor: !include sensor.yaml

sensor.yaml

# 
sensor:
  - platform: ide
    username: [email protected]
    password: password

# ENERGY COST #
  - platform: template
    sensors:
      home_energy_cost:
        friendly_name: "Home Energy Cost"
        unit_of_measurement: "€"
        value_template: >
          {% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %}
          {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %}
          {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %}
          {% endif %}
          {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}
#

Con esta configuración, cuando le doy a Validar la configuración, sólo me da este error que tampoco entiendo muy bien:

Invalid config for [sensor]: required key not provided @ data['platform']. Got None. (See /config/configuration.yaml, line 38). 

No lo entiendo bien porque la línea 38 del configuration.yaml es la que hace referencia al fichero scenes.yaml que por cierto está vacio… No sé.

@nickiman

Te falla porque en sensor.yaml tienes que poner solamente esto:

# 
- platform: ide
  username: [email protected]
  password: password

# ENERGY COST #
- platform: template
  sensors:
    home_energy_cost:
      friendly_name: "Home Energy Cost"
      unit_of_measurement: "€"
      value_template: >
        {% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %}
        {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %}
        {% endif %}
        {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}
#

El scenes.yaml estará vacío porque no tienes nada, pero eso no afecta para nada.

Jope que fallo, es verdad, mira que esta puesto en el GitHub y todo. :sweat_smile: Tanto copy paste…
Muchisimas gracias por todo.

@VaReTaS perdona, me había puesto a leer la parte de la configuración de los precios y demás… pero lo he dejado porque me he percatado que la entidad home_energy_hourly siempre me mide 0 y no tengo claro por qué puede ser. He esado echando un vistazo al log y me salían varios errores relacionados con esa entidad:

2022-02-04 16:58:50 WARNING (SyncWorker_1) [homeassistant.loader] We found a custom integration ide which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-02-04 16:58:50 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2022-02-04 16:59:06 WARNING (MainThread) [homeassistant.setup] Setup of hassio is taking over 10 seconds.
2022-02-04 16:59:21 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform ide is taking over 10 seconds.
2022-02-04 16:59:24 WARNING (MainThread) [homeassistant.helpers.entity] Entity sensor.ide_meter_reading (<class 'custom_components.ide.sensor.IDESensor'>) implements device_state_attributes. Please report it to the custom component author.
2022-02-04 16:59:32 WARNING (MainThread) [homeassistant.helpers.template] Template warning: 'float' got invalid input 'unknown' when rendering template '{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}' but no default was specified. Currently 'float' will return '0', however this template will fail to render in Home Assistant core 2022.1
2022-02-04 16:59:32 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template("{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}")
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 407, in async_render
render_result = _render_with_context(self.template, compiled, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1814, in _render_with_context
return template.render(**kwargs)
File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 1291, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 925, in handle_exception
raise rewrite_traceback_stack(source=source)
File "<template>", line 1, in top-level template code
jinja2.exceptions.UndefinedError: 'peaje' is undefined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 523, in async_render_to_info
render_info._result = self.async_render(variables, strict=strict, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 409, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: 'peaje' is undefined
2022-02-04 16:59:32 WARNING (MainThread) [homeassistant.helpers.template] Template warning: 'float' got invalid input 'unknown' when rendering template '{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}' but no default was specified. Currently 'float' will return '0', however this template will fail to render in Home Assistant core 2022.1
2022-02-04 16:59:32 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'peaje' is undefined') while processing template 'Template("{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}")' for attribute '_attr_native_value' in entity 'sensor.home_energy_cost'
2022-02-04 17:00:00 WARNING (MainThread) [homeassistant.helpers.template] Template warning: 'float' got invalid input 'unknown' when rendering template '{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}' but no default was specified. Currently 'float' will return '0', however this template will fail to render in Home Assistant core 2022.1
2022-02-04 17:00:10 WARNING (Recorder) [homeassistant.components.sensor.recorder] The normalized unit of sensor.home_energy_hourly (kWh) does not match the unit of already compiled statistics (None). Generation of long term statistics will be suppressed unless the unit changes back to None. Go to https://my.home-assistant.io/redirect/developer_statistics to fix this
2022-02-04 17:01:00 WARNING (MainThread) [homeassistant.helpers.template] Template warning: 'float' got invalid input 'unknown' when rendering template '{% if is_state_attr('sensor.pvpc', 'period', 'P1') %} {% set peaje=states('input_number.peaje_energia_p1') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P2') %} {% set peaje=states('input_number.peaje_energia_p2') | float %} {% elif is_state_attr('sensor.pvpc', 'period', 'P3') %} {% set peaje=states('input_number.peaje_energia_p3') | float %} {% endif %} {{ (( states('sensor.home_energy_hourly') | float * (peaje + states('sensor.pvpc') | float) ) * states('input_number.impuesto_energia') | float * states('input_number.iva_energia') | float) | round(3) }}' but no default was specified. Currently 'float' will return '0', however this template will fail to render in Home Assistant core 2022.1

En el apartado de energía ya veo las mediciones:

Y comparandolo con lo que muestra el medidor de I-DE lo veo bien… creo:
imagen

¿Por qué pueden ser esos errores que me salen en log? Saludos y gracias.

Hola @nickiman

Tienes la integración PVPC configurada? (Spain electricity hourly pricing (PVPC) - Home Assistant)

El cálculo de costes se hace con esa integración. Si no la tienes, no puede calcular (al no tener el sensor.pvpc ) y no devuelve resultados.

1 Like