Skip to main content

home-tcl-dashboard

Un tableau de bord mural des prochains départs TCL (transports en commun de Lyon) pour les arrêts que vous utilisez, servi par un serveur à la maison et affiché en plein écran sur une tablette.

  • Accueil : jusqu'à 6 arrêts favoris, avec les comptes à rebours, en temps réel ou d'après l'horaire prévu, et un bandeau pour les alertes trafic sur vos lignes.
  • Détail d'un arrêt : les prochains départs et les arrêts suivants de la ligne.
  • Alertes : les alertes trafic sur vos lignes, ou sur tout le réseau.
  • Gérer mes arrêts : ajouter, réordonner et retirer des favoris, depuis n'importe quel appareil du réseau. Les favoris sont partagés : une seule liste pour toute la maison.
  • Parcourir : n'importe quelle ligne sur une carte, avec les départs de chacun de ses arrêts.

Le métro et le funiculaire n'ont pas de temps réel : leurs départs viennent de l'horaire GTFS. Les trams et les bus utilisent le temps réel.

Prérequis

  • pixi
  • Un compte gratuit data.grandlyon.com avec accès aux jeux de données TCL (le temps réel et les alertes demandent un identifiant).

Installation

pixi install
cp .env.example .env   # puis remplir GDL_USER et GDL_PWD
pixi run serve         # http://localhost:8000

Lancez le serveur depuis la racine du dépôt : il range ses données dans data/ (ignoré par git) :

Fichier Contenu
data/GTFS_TCL.ZIP l'horaire (~24 Mo), téléchargé une fois par jour
data/pictos/ les pictogrammes officiels des lignes, téléchargés une fois
data/favourites.json les arrêts favoris

Le premier démarrage télécharge l'horaire et les pictogrammes, il prend donc un moment. Si Grand Lyon est en panne ensuite, le serveur continue avec ce qu'il a déjà.

La tablette

La cible est une vieille tablette Android avec Firefox 68. Ouvrez http://<serveur>:8000, puis « Ajouter à l'écran d'accueil » pour avoir une application en plein écran. L'affichage s'adapte à toutes les tailles (conçu pour 1024x768, avec une mise en page portrait) et passe en thème nuit de 20h à 7h.

À cause de Firefox 68, le frontend (src/home_tcl_dashboard/static/) est en JavaScript simple, sans étape de compilation, et évite la syntaxe et les API récentes : pas de ?., ??, replaceChildren, :has(), ni de CSS min()/clamp().

Développement

pixi run test          # pytest
pixi run lint          # ruff check
pixi run format-check  # ruff format --check
pixi run typecheck     # mypy
pre-commit install     # lance ruff à chaque commit

Organisation de src/home_tcl_dashboard/ :

Module Rôle
app.py l'application FastAPI : démarrage, routes /api/* (une ligne chacune), fichiers statiques
dashboard.py la classe Dashboard : l'état (réseau, horaire, caches, favoris) et ce que montre chaque écran
grandlyon.py la classe GrandLyon : le client de data.grandlyon.com (WFS, temps réel, alertes, GTFS, pictogrammes)
network.py lignes, quais, tracés et leur lecture
gtfs.py départs prévus et ordre des arrêts, tirés du GTFS
realtime.py départs en temps réel
alerts.py alertes trafic
board.py les cartes et le bandeau de l'accueil
cache.py réutilise les réponses récentes de Grand Lyon, et les sert en cas de panne
favourites.py lecture, écriture et validation des favoris
static/ le frontend

Trois couches :

  • app.py ne parle que HTTP : il traduit les requêtes en appels au Dashboard, et ses exceptions (NotFound, InvalidFavourites) en erreurs 404 et 422.
  • Dashboard ne connaît pas HTTP. Il reçoit l'heure (now) et le client Grand Lyon en paramètres, ce qui permet de le tester sans serveur ni réseau, avec un faux client (tests/fakes.py).
  • Les autres modules sont des fonctions pures, que le Dashboard appelle.

Crédits

Metadata

Release files for home-tcl-dashboard 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for home-tcl-dashboard 0.2.4
File Size Uploaded Provenance Actions
home_tcl_dashboard-0.2.4.tar.gz 114.8 kB With provenance Details for home_tcl_dashboard-0.2.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for home-tcl-dashboard 0.2.4
File Interpreter ABI Platform Actions
home_tcl_dashboard-0.2.4-py3-none-any.whl Python 3 none any Details for home_tcl_dashboard-0.2.4-py3-none-any.whl

Total release size: 200.6 kB

Release files / home_tcl_dashboard-0.2.4.tar.gz

Download URL home_tcl_dashboard-0.2.4.tar.gz
Size 114.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4c78b3473c21f79ba488516c1bddac6d3dc652f9acab8780fd02b908c38e27d0
BLAKE2b-256 checksum
How to use checksums
cb9330dbf90cc5116e838e39c73638b6ce87e80fe4c171e33250b79d1d151b98
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / home_tcl_dashboard-0.2.4-py3-none-any.whl

Download URL home_tcl_dashboard-0.2.4-py3-none-any.whl
Size 85.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
122847c6a1ab968f98504e1fe4aa60a7536086937946b74af63d9b7d46d4558d
BLAKE2b-256 checksum
How to use checksums
beff986d1da27357c7d538b7fe37c75a59072c8abc3fae3dedecc76ea91bb829
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Security for home-tcl-dashboard 0.2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for home_tcl_dashboard-0.2.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page