Skip to main content

Marchés smart home integration, free and open source

Marchés integration for Gladys Assistant

Food markets of Paris, Toulouse, Strasbourg: held today, open now, until when, next market day.

The food markets (open-air, covered, organic, producers) of Paris, Toulouse and Strasbourg in Gladys: is there a market today, is it open now, until when, and when is the next market day. Days and hours come from the open data of the cities. No account, no key.

The cities publish a weekly rhythm only: public holidays, cancellations and exceptional days are not published. Check before going, especially on a public holiday.

Unofficial integration, not affiliated with the cities nor with the market operators. Tested against the real answers of the three sources (2026-10-30), not yet on a real Gladys instance: feedback welcome.

What you get​

  • A device per market you add: market today, open now, end time today, next market, market days.
  • A widget "Markets today": today's markets around the house (10 at most, nearest first), green when open, orange in the last half-hour, blue before they start, grey once over.
  • Three scene triggers: a market opens, a market ends soon (30 minutes by default), and "market tomorrow" the evening before a market day (19:00 by default).
  • A scene action "Markets today near me": today's markets near the house in one sentence, with their hours, whether they are open and how far they are.

Requirements​

  • Gladys Assistant 5.3.0 or later.
  • Internet access from Gladys: the sources are public open data portals.
  • For the nearest markets, the widget and the scene sentence: the location of the house set in Gladys (Settings → Houses).

Installation​

  1. In Gladys, open Integrations → Install from GitHub.
  2. Paste https://github.com/guim31/gladys-marches and confirm.
  3. Gladys asks to share the location of the house: it is only used to find the nearest markets, and never leaves your Gladys.

Configuration​

Settings​

  • Cities: every food market of the cities ticked is offered (Paris 72, Toulouse 45, Strasbourg 19).
  • Nearest markets: also offer this many markets nearest to the house (3 by default, 0 to turn off), within the maximum distance (5 km as the crow flies by default). The same distance limits the widget and the scene sentence.
  • Ends soon (minutes): when the "Market ends soon" trigger fires (30 by default).
  • "Market tomorrow" hour: the hour of the evening before a market day when "Market tomorrow" fires (19 by default).
  • Language of names and messages: French by default. Feature names are fixed when a device is added; the texts follow the language at once.

Adding markets​

Save the configuration: the markets appear in the Discover tab of the integration. Add the ones you go to. A market added stays watched even if you untick its city.

Checking​

The Status button lists the cities read, the number of food markets, the markets offered, the last read and the errors.

Devices​

FeatureTypeValue
Market todaybinary1 when the market is held today
Open nowbinary1 open, 0 not; no value when the hours cannot be read
End time todaytext"13:30", "No market today", "13:30 (public holiday: check)"
Next markettext"today at 16:00", "tomorrow at 07:00", "Saturday at 07:30"
Market daystext"Wed 07:00–13:30 · Sat 07:00–14:30"

The values are computed every minute by the integration, without any request.

Dashboard widget​

Add the Markets today widget to a dashboard: one row per market held today around the house (10 at most, nearest first), with "open until 13:30 · 0.4 km", "ends in 20 min", "from 16:00" or "ended at 13:30". The markets added to Gladys farther away follow the near ones; without a located house, it shows the markets added to Gladys. The setting Show the distance hides the distance.

Scene triggers​

  • Market opens: variables market_name, ends_at.
  • Market ends soon: as many minutes before the end as set in the configuration; variables market_name, ends_at, minutes_left.
  • Market tomorrow: the evening before a market day, at the configured hour; variables market_name, starts_at, ends_at.

Each trigger can be limited to some markets; empty, any market added fires it. After a long pause (the computer asleep, Gladys stopped), no late trigger is fired.

Scene action​

Markets today near me returns sentence ("Markets today near you: Marché Victor Hugo (07:00–13:30, open, 0.3 km), …"), markets_count and open_count. Without a located house, the sentence lists the markets added to Gladys held today. Send it in a message or to a speaker, or continue only if markets_count is above 0.

Scene examples​

  • Saturday at 8:00, send "Markets today near me" to your phone.
  • "Market tomorrow" on Friday evening: a reminder to take the shopping bags.
  • "Market ends soon" while you are out: last chance for fresh bread.

Data and refresh​

CitySourceFood marketsLicence
Parisopendata.paris.fr, marches-decouverts72ODbL
Toulousedata.toulouse-metropole.fr, marches-couverts-et-de-plein-vent45Licence Ouverte
Strasbourgdata.strasbourg.eu, sites-marches-d-approvisionnement19Licence Ouverte
  • Each city is one request once a day (an hour later after a failure), only for the cities needed; all three when the house is located. Everything else is computed every minute from the days kept, in the time zone of Paris.
  • Only food markets are kept: flower, book, flea, stamp and craft markets are left out.
  • Public holidays are computed offline (Alsace-Moselle included) and only flagged: many markets keep their day, the sources do not say which.

Troubleshooting​

  • Nothing in the Discover tab: tick a city, or set the location of the house and keep "Nearest markets" above 0. The Status button says which.
  • The widget says there is no market: none of the markets within the maximum distance is held today; raise the distance if needed.
  • "Hours not readable": the source published hours this integration does not read (it never guesses): tell us on the forum.
  • A city is unavailable: the last days read are kept; it is tried again an hour later.
  • Logs: in the integration screen, or LOG_LEVEL=debug for every read.

Limitations​

  • Three cities only: Lyon, Bordeaux, Nantes, Rennes and the others publish no market days and hours as open data today. Tell us about another source.
  • The Toulouse dataset covers the city of Toulouse, not the whole metropolitan area; its markets have no id, so the name serves as one.
  • Paris covers its open-air markets; its covered markets are not in the dataset.
  • Developed without visiting the markets: feedback welcome.

Credits​

Data: Ville de Paris (ODbL), Mairie de Toulouse and Ville et Eurométropole de Strasbourg (Licence Ouverte). Built on the Gladys integration SDK.

Configuration settings​

These are the settings Marchés asks for in its configuration screen in Gladys.

SettingTypeRequiredDescription
How it workssectionNoTick your city, or let the integration offer the markets nearest to your house, then save: they appear in the Discover tab. Days and hours come from the open data of the cities: no account, no key. Public holidays and exceptional closures are not published: check before going.
Citiesmulti_selectNoEvery food market of the cities ticked is offered.
Nearest marketsnumberNoAlso offer this many markets nearest to the house (its location in Gladys), 0 to turn off.
Maximum distance (km)numberNoAs the crow flies, from the house: nearest markets, widget and scene sentence.
Ends soon (minutes)numberNoMinutes before the end of the "market ends soon" scene trigger.
"Market tomorrow" hournumberNoHour of the day before a market day when the "market tomorrow" trigger fires.
Language of names and messagesselectNoFeature names are fixed when a device is added.

How to install Marchés in Gladys​

  1. In Gladys, open Integrations: Marchés appears in the catalog, next to the native integrations, with a community badge.
  2. Click Install. Gladys pulls the Docker image (ghcr.io/guim31/gladys-marches:1.0.0), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration).
  3. Open the Configuration screen of the integration, fill in the settings, and save.
  4. You can also install it directly from its repository URL: https://github.com/guim31/gladys-marches.

Marchés requires Gladys >=5.3.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.

Not running Gladys yet? It is free and open source: follow the installation guide to get started.

About external integrations​

Marchés is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by guim31, not by the Gladys core team.

Subscribe to the Gladys Assistant newsletter

A few emails per month about new releases and project news. Sent by Pierre-Gilles Leymarie, founder of the project. Unsubscribe anytime 🙂