Skip to content

v1.9.0 - Eau de Marseille Métropole (SEMM) support

Choose a tag to compare

@EnO33 EnO33 released this 26 Apr 07:11

New: Eau de Marseille Métropole (SEMM) support

The integration now supports both water utilities of the Marseille area, which share the same back-end stack but have separate portals:

  • Société des Eaux de Marseille (SEM) — Marseille intra-muros, served by espaceclients.eauxdemarseille.fr.
  • Eau de Marseille Métropole (SEMM) — Métropole Aix-Marseille-Provence, served by espaceclients.eaudemarseille-metropole.fr.

A 'Water utility' dropdown is now the first field of the configuration form. Each provider uses its own portal URL, host and embedded application credentials (the latter were extracted from the public JS bundle of each portal).

Backwards compatibility

Existing entries created before 1.9.0 do not carry a provider field; they default to SEM, which is what they were configured for. No user action required for existing setups.

Internal changes

  • Provider StrEnum + PortalEndpoints dataclass + PROVIDERS map in const.py.
  • PortalAuth now takes a Provider in init and uses the matching endpoints, headers and app credentials.
  • _redirects.resolve() now takes an allowed_host argument; the cross-origin protection adapts to the active provider.
  • Config-flow unique_id is now f"{provider}_{contract_id}" so the same contract number can theoretically be configured against both portals.

Quality

All 23 API tests still pass. ruff + mypy strict + Pi smoke test against the SEM account all green.

Known coverage

A third utility identified by Mattmar — VIVAIGO (covering Berre, Salon, Lambesc, Eyguières, etc.) — also rides on the same stack but has its own portal that we have not yet enumerated. Support for VIVAIGO will land in a follow-up release once we have a confirmed portal URL and the matching application credentials.