Integración externa - «Precios de combustible»

Me encantaría, pero no estoy nada « maduro » para entenderlo todo. ¡Ya estoy intentando entender cómo funciona GitHub…!

Hace un tiempo me pasaba lo mismo :sweat_smile:
Y poco a poco, viendo los vídeos de Pierre Gilles, lo voy consiguiendo :winking_face_with_tongue:

@prohand
¿Es posible eliminar/ocultar las estaciones que no tienen un combustible en particular?
Estoy en E85 y me aparecen estaciones sin E85 con esto -:

• Système U - xxx (0.8 km) — E85 (Superethanol): -
• 5 ALLEE DE L’ECONOMIE - xxx (0.8 km) — E85 (Superethanol): 0.824 EUR/L
• TotalEnergies Access - xxx (6.7 km) — E85 (Superethanol): 0.839 EUR/L
• TotalEnergies - xxx (7.9 km) — E85 (Superethanol): 0.839 EUR/L
• Auchan - xxx (8.2 km) — E85 (Superethanol): 0.839 EUR/L
• Système U - xxx (8.5 km) — E85 (Superethanol): -
• TotalEnergies - xxx (8.9 km) — E85 (Superethanol): -
• Carrefour - xxx (9.0 km) — E85 (Superethanol): -
… +12

EDIT: Me equivoqué, no aparecen en Descubrimiento, así que perfecto :wink:

Hola @prohand,

Gracias por esta integración :heart_hands:

Sin embargo, tengo una observación: al menos 4 estaciones están disponibles cerca de mi casa, pero cuando hago una prueba en la integración, ninguna aparece (aunque no vivo en medio de la nada…):

[2026-08-10T07:39:25.435Z] [INFO] Iniciando la integración de precios de combustible...
[2026-08-10T07:39:26.839Z] [INFO] [gladys-sdk] conectado a Gladys (http://172.30.0.1:8082)
[2026-08-10T07:39:27.143Z] [INFO] 0 dispositivo(s) de estación rastreado(s)
[2026-08-10T07:39:27.146Z] [WARN] No se ha configurado ningún código postal aún: no hay nada que descubrir
[2026-08-10T07:39:27.149Z] [INFO] [refresh] Los precios se actualizarán cada 3600s
[2026-08-10T07:41:07.825Z] [INFO] onConfigUpdated -> nueva configuración recibida
[2026-08-10T07:41:07.827Z] [INFO] [refresh] Los precios se actualizarán cada 3600s
[2026-08-10T07:41:08.278Z] [WARN] [provider-fr] No se encontró ninguna estación en el código postal 67750: no se puede ampliar la búsqueda alrededor de él
[2026-08-10T07:41:08.338Z] [INFO] [devices] Descubrimiento: 0 estación(es) alrededor de 67750, 1 dispositivo(s) publicado(s) para Diésel, SP95, SP98, E10 (SP95-E10)
[2026-08-10T07:41:10.772Z] [WARN] [provider-fr] No se encontró ninguna estación en el código postal 67750: no se puede ampliar la búsqueda alrededor de él

Por si acaso, la integración se reinició, pero sin mejora…

¿Alguna idea?

Gracias de antemano,

¡Que tengas un buen día!

Jean

Gracias por reportar el problema.

La nueva versión 1.0.3 que acaba de salir debe corregir tu problema
De hecho, aproveché para corregir un error que también encontraba y aquí está el comentario de Claude sobre la corrección :

XXXXX — ninguna estación, sin importar el radio

El centro del círculo de búsqueda era la posición promedio de las estaciones con este código postal. « NOM VILLE » no tiene ninguna en el flujo nacional → sin centro → src/countries/france.js:125 saltaba puramente y simplemente el paso « radio ». Ampliar el radio no podía cambiar nada: no había un círculo para ampliar.

Cuando el flujo no sabe ubicar el código postal, ahora se geocodifica a través de la Base Adresse Nationale (src/countries/franceGeocode.js, oficial, sin clave). Mejor esfuerzo y en caché, en el espíritu de franceNames.js : un geocodificador inalcanzable cuesta las estaciones alrededor del código postal, nunca las que están dentro.

XXXXX — solo algunas estaciones (NOM STATION)

La consulta por radio estaba limitada a 300 registros, y la API responde a within_distance en el orden del conjunto de datos — es decir, por id de estación, es decir, por código postal. Un círculo truncado no pierde las estaciones más lejanas, pierde los códigos postales más altos : alrededor de Lyon, XXXXX y XXXXX caen después de 69000/69100. Y aumentar el radio empeoraba el problema, añadiendo competidores a la misma respuesta truncada.

La búsqueda ahora recorre círculos concéntricos a partir de 5 km, duplicando hasta el radio configurado, y se detiene en el primer círculo completo que contiene al menos limit estaciones — este círculo contiene entonces necesariamente las más cercanas. En la ciudad es también más barato que antes: una consulta de un pequeño círculo en lugar de tres páginas de un gran círculo.

Hola,

He marcado dos carburantes SP95 y SP98, pero solo tengo un dispositivo SP98 y un solo precio.

No es grave en sí, ya que en Total es lo mismo por el momento, excepto que les falta 98 y muestran correctamente ‹ sin valor reciente ›, lógico. Supongo que si tuviera SP95 tendría un valor de dispositivo.

¿Me puedes enviar tu código postal por mensaje privado para que lo reproduzca? :slightly_smiling_face:

93160

Total Energía en la avenida Médéric, donde suelo ir…

Gracias :wink:

Aquí está la respuesta de Claude: (Al mismo tiempo, corregí un problema reportado directamente en Github)

Issue #10 — etiqueta « Cloud »

  • La etiqueta Local/Cloud proviene del campo manifiesto transports (verificado en el front de Gladys: IntegrationCategory.jsx → integration.cloud ← manifest.transports).
  • Se agregó "transports": ["cloud"] en gladys-assistant-integration.json.
  • local no declarado a propósito: mostraría el interruptor « Preferir conexión local (LAN) », sin objeto aquí.
  • Manifiesto validado contra el esquema del indexador de la tienda → valid: true. Prueba agregada en test/manifest.test.js.

SP95 invisible en TotalEnergies

No es un error de código, son los datos. Verificado en directo en los datos abiertos:

  • 4835 estaciones publican un precio SP98 y ningún precio SP95.
  • Prueba del proveedor en 92100/París: todas las TotalEnergies tienen sp95=null, sp98/e10 completos.
  • Las TotalEnergies han reemplazado el SP95 por el E10 (SP95-E10). Como un par (estación, combustible) sin precio nunca se publica, no se ofrece ningún dispositivo SP95.

Lo que he cambiado para que no parezca un error:

  • Vista previa « Previsualizar estaciones cercanas »: SP95: no vendido en lugar de un simple -, en FR y EN (con el espacio antes de los dos puntos en francés).
  • Si ninguna estación encontrada vende un combustible marcado: una línea lo anuncia y propone E10 como sustituto del SP95.
  • Nota añadida en la descripción del campo « Tipo de combustible » y en docs/fr.md / docs/en.md (sección Solución de problemas).

Disponible en la versión 1.0.5

Vale, he instalado la versión 1.0.5;

voy a esperar a que la situación cambie, porque lo que está en mi lista de estaciones ha evolucionado y las tres estarían vacías…

De hecho, tienes que seleccionar SP95-E10 en la parte de configuración además de SP95, porque Total solo vende SP95-E10

OK, pero esta noche he añadido gasóleo, aquí está la copia de la vista previa…

3 estación(es) alrededor de 93160:
• TotalEnergies - Noisy-le-Grand (0.4 km) — Gasóleo: no vendido, SP98: no vendido, E10 (SP95-E10): no vendido
• TotalEnergies - Noisy-le-Grand (1.2 km) — Gasóleo: 2.250 EUR/L, SP98: no vendido, E10 (SP95-E10): no vendido
• TotalEnergies - Noisy-le-Grand (1.6 km) — Gasóleo: 2.250 EUR/L, SP98: no vendido, E10 (SP95-E10): no vendido

Ninguna de estas estaciones vende SP98.
Ninguna de estas estaciones vende E10 (SP95-E10).

De hecho, si estaba vacío, el mensaje de ‹ sin valor reciente › para el SP98 era correcto, ya que pasé ayer por la tarde y el precio era 9.999 (vacío). Es cierto que entre tanto he reinstalado …

Por otro lado, cuando hay dos Total:

Carburantes

TotalEnergies - Noisy-le-Grand - SP98 (Texto) 20/09/2026 a las 00:01
TotalEnergies - Noisy-le-Grand - Diésel (Moneda) 2.25 €
TotalEnergies - Noisy-le-Grand - Diésel (Moneda) 2.25 €

No hay nada que las distinga a primera vista. A menos que vayas a los parámetros técnicos de los dispositivos.

Se corrigió en la versión 1.0.6 :

Qué hace

  • El nombre sigue siendo corto mientras sea único: Esso - Noisy-le-Grand - Gasóleo.
  • Si dos estaciones tienen la misma enseña y el mismo municipio, la calle se inserta:
    • TotalEnergies - 33 Av. Médéric - Noisy-le-Grand - Gasóleo
    • TotalEnergies - 104/106 AV MEDERIC - Noisy-le-Grand - Gasóleo
  • Si incluso la calle es idéntica (área de autopista, 2 sentidos), se añade el ID nacional al final.
  • La calle se abrevia (Avenida → Av., Boulevard → Bd, Ruta → Rte…) y se corta a 28 caracteres.

Límite a conocer
Los 2 dispositivos ya creados conservan su nombre actual (Gladys nunca reescribe un nombre elegido/existente). Dos opciones:

  1. renombrarlos manualmente en Dispositivos (lo más sencillo, mantiene el historial);
  2. eliminarlos y añadirlos de nuevo desde Descubrimiento → nuevo nombre detallado, pero se pierde el historial de precios.

Acabo de implementar la versión 1.0.6.

Renombrado manualmente: Sí, está hecho, muy bien.

Nueva vista previa:

3 estación(es) alrededor de 93160:
• TotalEnergies - Rue du Centre Centre Reg… - Noisy-le-Grand (0.4 km) — Gasóleo: 2.250 EUR/L, SP98: 1.990 EUR/L, E10 (SP95-E10): 1.990 EUR/L
• TotalEnergies - 33 Av. Médéric - Noisy-le-Grand (1.2 km) — Gasóleo: 2.250 EUR/L, SP98: no disponible, E10 (SP95-E10): no disponible
• TotalEnergies - 104/106 AV MEDERIC - Noisy-le-Grand (1.6 km) — Gasóleo: no disponible, SP98: no disponible, E10 (SP95-E10): no disponible

Añade las que quieras desde la pestaña Descubrimiento.

Yo tengo dos TotalEnergies en la misma calle, es bueno para las pruebas.

La estación Mont d’est tiene SP98.

Esto significaría que un dispositivo solo puede ser constituido si el combustible está disponible, por lo que en el período actual es necesario escanear regularmente para obtener la totalidad de los dispositivos.

Sigo vigilando…

Se ha corregido en 1.0.7 :slight_smile: :

El problema

  • El flujo no publica precios en dos casos: la estación no vende ese combustible, o está en falta. La integración leía los dos como « no vendido ».
  • Verificado en sus estaciones: 93160001 y 93160009 (Noisy-le-Grand) están en falta temporal de gasóleo/SP98/E10 — no « no vendido ».

Lo que cambia

  • Lectura de las faltas del flujo: columnas sp98_rupture_type/_debut (v2) y tabla rupture anidada (modelo antiguo). temporaire (o tipo vacío) → en falta; definitive → no vendido; un precio publicado siempre prevalece.
  • Nuevo src/availability.js: 3 estados por combustible (available / out_of_stock / not_sold).
  • Descubrimiento: una estación en falta ahora se propone (el precio vuelve con el camión), ya no es necesario volver a pasar por Descubrimiento.
  • Dispositivo: la funcionalidad de texto muestra « En falta desde el 18/09/2026 a las 08:09 », el último precio conocido sigue en la curva.
  • Botón « Buscar estaciones »: « SP98: en falta » en lugar de « SP98: no vendido », y la nota « ninguna estación vende… » se convierte en una nota de falta cuando es el caso.
  • Docs FR/EN + CLAUDE.md actualizados.

Versión 1.0.7 :

3 estación(es) alrededor de 93160 :
• TotalEnergies - Rue du Centre Centre Reg… - Noisy-le-Grand (0.4 km) — Gasóleo : 2.250 EUR/L, SP98 : sin existencias, E10 (SP95-E10) : sin existencias
• TotalEnergies - 33 Av. Médéric - Noisy-le-Grand (1.2 km) — Gasóleo : sin existencias, SP98 : sin existencias, E10 (SP95-E10) : sin existencias
• TotalEnergies - 104/106 AV MEDERIC - Noisy-le-Grand (1.6 km) — Gasóleo : sin existencias, SP98 : sin existencias, E10 (SP95-E10) : no se vende

El SP98 está agotado en todas estas estaciones : los surtidores están disponibles, el precio volverá con el combustible.
El E10 (SP95-E10) está agotado en todas estas estaciones : los surtidores están disponibles, el precio volverá con el combustible.

Añada las que desee desde la pestaña Descubrimiento.

Mucho más legible… genial.

Sin embargo, E10 (SP95-E10) no se vende en el 104/106 avenue Médéric me sorprende. Iré a echar un vistazo.

Voy a seguir así

Sí, avísame si encuentras un error :wink:

Gracias

Buenas noches @prohand y gracias por esta integración muy útil en este momento.

He visto que hay que especificar una pieza para cada producto por estación. ¿Está previsto recuperar la información en un panel de control?

No entiendo lo que quieres decir con « una sala por producto por estación »

La V2 llega con los widgets, pero parece que hay un error que acabo de publicar en el foro:

La versión 2.0.5 está disponible con los widgets, disparadores y acciones :slight_smile: