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

Muchas grácias por el código.

la primera vez que lo instalé me iba bien pero de repente ha dejado de funcionar. Al arrancar Home-Assistant se carga el plugin pero la web de iberdrola lanza el error 500 y ya no hace nada mas, no aparece ni el sensor.ide ¿Os ha ocurrido algo parecido a alguno?

Hola a todos,
A mi también me esta pasando. Tras funcionar bien durante varios días, ahora hay veces que actualiza bien, y otras me da el mismo error que el indicado (error 500), o el siguiente:

File “/config/custom_components/ide/ide_api.py”, line 160, in measurement
“id”: json_response[“codSolicitudTGT”],
KeyError: ‘codSolicitudTGT’

También me ocurre al conectarme desde el navegador a i-de.es, a veces accede a la primera pero la mayoría veces tengo que refrescar la página varias veces hasta que consigo entrar.

Hace un año cree un script de python que lo ejecutaba en HA y que hacia peticiones de consumo actual a iberdrola con mucha frecuencia por lo que me bloquearon el acceso. Al pedir que me lo reactivasen me comentaron que si hacia muchas peticiones de consumo actual la plataforma tenía que acceder al contador, la conexión no es muy buena y la red se saturaba fácilmente por lo que muchas veces no daba lectura

Según veo el plugin accede al contador mediante la API y toma la lectura del contador. Si al iniciar Home-Assistant no se obtiene lectura no se carga el sensor ide_meter_reading, habrá que ver si sigue repitiendo las peticiones cada hora y si lo consigue aparece el sensor. Veo dos posibles apaños:

  1. Al arrancar si no consigue conectar con el ICP que cargue el último valor registrado, de esta forma cargará el sensor y más adelante ya obtendrá valores
  2. Repetir la petición hasta obtener la lectura o repetirlo unas 3 veces si no hay lectura para no correr el riesgo de que te bloqueen.

Buenas @C09038 y @jelo,

El problema, por lo que veo, es del servidor de i-DE. Un error 500 es un fallo de respuesta del servidor, que no devuelve respuesta a la solicitud de acceso. No es un baneo, es simplemente que el servidor no ha sido capaz de contestar de vuelta.

Respecto al KeyError: ‘codSolicitudTGT’ eso es también un problema de i-DE, al no tener una respuesta del contador y no devolver un número de solicitud.

En esto no se puede hacer mucho más.

Yo veo que hay momento puntuales, bien sea por sobrecarga de la red o cualquier otro motivo de acceso a los contadores, que i-DE no devuelve resultados de lecturas. Así que bastará con esperar hasta que el sensor sea capaz de actualizar.

  1. Al arrancar si no consigue conectar con el ICP que cargue el último valor registrado, de esta forma cargará el sensor y más adelante ya obtendrá valores
  2. Repetir la petición hasta obtener la lectura o repetirlo unas 3 veces si no hay lectura para no correr el riesgo de que te bloqueen.

Buenas,

Esto es una de las cosas que tengo pendientes para una próxima versión, pero necesito tiempo para poder verlo (y probarlo) con tranquilidad. En cuanto pueda me pongo con ello.

O si alguien sabe cómo hacerlo fácil, con un pull al repositorio y lo vamos viendo. :wink:

si hay cosas que no están en nuestras manos. Si saco tiempo me gustaría darle una vuelta a esto, si lo consigo (no se programar mucho) ya propondré el cambio

con el conector de cabeza óptica USB (de Aliexpress) puedes conectar el smartmeter directamente y leer los datos. El único problema es que necesitas saber la contraseña. Mucha gente utiliza Rasperry Pi para leer el smartmeter y enviar los datos a MQTT. Muchos distribuidores permiten la lectura sin contraseña pero otros no.

A qué conector de cabeza óptica te refieres?

Yo vivo en una urbanización, así que tendría que ser algo que enviara datos de forma inalambrica.

Saludos

1 Like

[Google Translate, English below] Hola a todos!

Muchas gracias por el desarrollo de este componente personalizado, he intentado instalarlo pero parece que no me funciona correctamente. Me pregunto si se debe al problema de la traducción o a otra cosa.

Hay algunas cosas que me gustaría comprobar/necesitar ayuda:

  1. He instalado los ayudantes y en el github se refiere a obtener los detalles P1 y P2 de la factura, pero no estoy seguro de cuál es, ¿podría alguien ayudarme a dirigirme a la zona correcta de la factura?

  1. Puedo configurar las entidades en el cuadro de mandos del asistente doméstico, pero no dan ningún valor, salvo el consumo mensual que parece ser siempre de 24kWh (que no se refleja en el I-DE por lo que veo.

  2. Y creo que este es el verdadero problema, tengo como mucho 2 contratos con Iberdrola y por tanto tengo 2 contratos en I-DE, pero actualmente, por lo que veo, no hay forma de que el programa sepa cuál quiero mirar/usar. ¿Hay alguien que haya tenido este caso de uso antes?

Soy consciente de que es mucho pedir, pero agradeceré cualquier ayuda en la medida de lo posible.

Gracias!

English:

Hi All,

Thank you very much for developing this custom component, I’ve tried to install it but it does not seem to work properly for me. I wonder if it is due to the translation issue, or something else.

There are a few things I would like to check/need help with:

  1. I have installed the helpers and in the github it refers to get the P1 and P2 details from the invoice, but I’m not sure which one those are, could anyone help direct me to the right area on the invoice? Is it this one?: See screenshot in Spanish version above

  2. I can set up the entities in the home assistant dashboard, but they do not give any values, except for the monthly consumption which seems to always be 24kWh (which is not reflected in I-DE as far as I can tell.

  3. I think this is the actual problem, I have unlike most 2 contracts with Iberdrola and so have 2 contracts in I-DE, but there is currently, as far as I can tell no way for the program to know which one I want to look at/use. Is there anyone who has had this use-case before?

I realize this is a lot to ask but will appreciate any help where possible.

Thanks!

Hola @stwr

Este componente no es para leer los datos de la factura, solamente para hacer la lectura del contador y siempre y cuando tu distribuidora sea i-DE (independientemente de comercializadora, es decir, sin que importe si la factura es de Iberdrola, Endesa, Repsol, HolaLuz o la que sea…).

Para el tema de los ayudantes, tienes que tener instalado la integración PVPC (Spain electricity hourly pricing (PVPC) - Home Assistant) y sirve únicamente como una guía. Como la lectura del contador es con números enteros (y dependiente de que se obtenga respuesta del mismo), esto puede no cuadrar exactamente con lo que tú comercializadora te facture. Debe ser aproximado, pero no será exacto.

Para el último punto. De momento, el componente es mono-contrato, por llamarlo de alguna forma. Si tienes más de un contrato dado de alta en i-DE, obtendrá el principal. No tengo datos para ver el resultado de más de un contrato, así que no puedo desarrollar algo. Si, después de hacer login en i-DE accedes accedes a este enlace (https://www.i-de.es/consumidores/rest/escenarioNew/obtenerMedicionOnline/24) y pones aquí lo que devuelve la página, lo podré mirar.

Espero haber aclarado las cuestiones.

¡Muchas gracias VaReTaS, eso ayuda! Hice lo que me pidió, vea a continuación el resultado. Sería genial si pudiéramos implementar múltiples contratos. Feliz de ayudar a que esto suceda donde pueda. ¡Gracias!

{"valMagnitud":"7.32","valInterruptor":"1","valEstado":"09","valLecturaContador":"10157","codSolicitudTGT":"010529197100"}

Buenas,

Lo que devuelve es una lectura normal, del contrato principal.

Puedes probar con estos, porfa?

Atención a los datos personales que devuelve. Sólo necesito la estructura de la respuesta.

Gracias VaReTas;

Parece que los contratos regresan en una lista, ver más abajo:

Gracias!!

/rest/cto/listaCtos/

{
    "success":,
    "contratos":[
        {"direccion":"",
            "cups":"",
            "tipo":"",
            "tipUsoEnergiaCorto":"-",
            "tipUsoEnergiaLargo":"-",
            "estContrato":"",
            "codContrato":"",
            "esTelegestionado":,
            "presion":"",
            "fecUltActua":"",
            "esTelemedido":,
            "tipSisLectura":"",
            "estadoAlta":
            },
        {"direccion":"",
            "cups":"",
            "tipo":"",
            "tipUsoEnergiaCorto":"-",
            "tipUsoEnergiaLargo":"-",
            "estContrato":"",
            "codContrato":"",
            "esTelegestionado":,
            "presion":"",
            "fecUltActua":"",
            "esTelemedido"",
            "tipSisLectura":"",
            "estadoAlta":
            }
            ]}

/rest/detalleCto/detalle/

{
    "ape1Titular":"",
    "ape2Titular":"",
    "codCliente":"",
    "codContrato":,
    "codPoblacion":"",
    "codProvincia":"",
    "codPostal":"",
    "codSociedad":,
    "codTarifaIblda":"",
    "codTension":"",
    "cups":"",
    "direccion":"",
    "dni":"",
    "emailFactElec":"",
    "esAutoconsumidor":false,
    "esAutogenerador":false,
    "esPeajeDirecto":false,
    "fecAltaContrato":"",
    "fecBajaContrato":,
    "fecUltActua":"",
    "indEstadioPS":,
    "indFraElectrn":"",
    "nomGestorOficina":"",
    "nomPoblacion":"",
    "nomProvincia":"",
    "nomTitular":"",
    "numCtaBancaria":"",
    "numTelefono":"",
    "numTelefonoAdicional":"",
    "potDia":,
    "potMaxima":,
    "presion":"",
    "puntoSuministro":"",
    "tipAparato":"",
    "tipCualificacion":"",
    "tipEstadoContrato":"",
    "tipo":"",
    "tipPuntoMedida":,
    "tipSectorEne":"",
    "tipSisLectura":"",
    "tipSuministro":,
    "tipUsoEnerg":"",
    "listContador":[
        {"fecInstalEquipo":"",
        "propiedadEquipo":"",
        "tipAparato":"",
        "tipMarca":"",
        "numSerieEquipo":
        }],
        "esTelegestionado":,
        "esTelegestionadoFacturado":,
        "esTelemedido":,
        "cau":,
    }

Muchas gracias @VaReTaS por este addon, muy útil!

Una cosilla, para los que tenemos PVPC y tenemos instalados la integracion de PVPC, ¿tenemos que rellenar también todos los helpers?

Y otra cosilla, podrías añadir a esa formula otra variable, para el caso que se de que haya bono social, poder añadir ese descuento.

Muchas gracias por tu ayuda!

@stwr Gracias. Lo voy mirando cuando consiga tiempo para rehacer algo de la integración.

@amibumping
Los helpers son para complementar la información individual de cada contrato, ya que esa info no es general y cada consumidor tendrá su caso especifico. El PVPC sólo devuelve coste de energía, nada más.

Para el bono social, sería crear un helper con el porcentaje que aplique de reducción (o como se calcule, que no sé cómo funciona) y añadir en la fórmula a la parte que aplique, como si fuera el IVA, por ejemplo.

Imaginando que tienes un helper input_number.bono_social (en decimales de porcentaje - un 10% de bono sería 0.10) y que el bono se aplica a la totalidad del coste (de nuevo, no sé cómo se calcula…)

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

Espero que ayude

1 Like

Buenas, el bono social solo se aplica al consumo y a peajes, no entra el impuesto electrico e IVA en el descuento.

¿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) }}

Me he dado cuenta de que el contrato principal es el último que se consultó en la web de i-de.es. Si se cunsulta otro contrato y no se vuelve al contrato que se quiera tener de principal devolverá la lectura de este por lo que las estadísticas pueden cambiar mucho.

Ya que es para España no escribo en inglés.
Gran integración crack! Ya la estoy usando pero no me calcula los gastos. No sé qué he hecho mal. En los input_number mirando en herramientas para desarrolladores debería poner el número que ponemos? Me marcan todos 0. No sé si es así como los tengo que hacer. Envío capturas para que me eches una mano… el impuesto de energía y el IVA los he puesto con los datos que dejas y respecto a los datos de la factura, yo tengo naturgy, me salen los datos de potencia p1 (0,095062) y p2 (0,01493) pero los tramos p1 (0,246),p2 (0,217) y p3 (0,17) no, los he buscado por internet.
He pegado todas la fórmulas que has dejado en el reading de la integración y está exactamente igual. Y también tengo el sensor de pvpc.
También con el tema de energía de Home Assistant, me gustaría saber si hay alguna forma para que calcule el precio con pvpc, si pongo tu sensor, después no se puede repetir y ponerlo para que calcule el tramo de precios ya que da error.

Si alguno sabéis una integración de este tipo para el gas natural sería la bomba



Hola a Todos,

Estoy intentando configurar esta integracion, pero no me carga, tengo el siguiente error en el registro, alguien tiene alguna ide de lo que puede suceder?
He hecho la integracion recomendada en el readme.

Logger: homeassistant.components.sensor
Source: custom_components/ide/ide_api.py:150
Integration: Sensor (documentation, issues)
First occurred: 11:23:09 (1 occurrences)
Last logged: 11:23:09

ide: Error on device update!
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/entity_platform.py”, line 431, in _async_add_entity
await entity.async_device_update(warning=False)
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 684, in async_device_update
await task
File “/usr/local/lib/python3.9/concurrent/futures/thread.py”, line 52, in run
result = self.fn(*self.args, **self.kwargs)
File “/config/custom_components/ide/sensor.py”, line 149, in update
meter = ides.idemeterreading()
File “/config/custom_components/ide/ide_api.py”, line 169, in idemeterreading
return self.measurement()[“meter”]
File “/config/custom_components/ide/ide_api.py”, line 150, in measurement
raise ResponseException(
custom_components.ide.ide_api.ResponseException: Response error, code: 403