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.pyne parle que HTTP : il traduit les requêtes en appels auDashboard, et ses exceptions (NotFound,InvalidFavourites) en erreurs 404 et 422.Dashboardne 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
Dashboardappelle.
Crédits
- Données : SYTRAL Mobilités, via data.grandlyon.com.
- Cartes : Leaflet et les contributeurs d'OpenStreetMap.
- Police : Inter, licence SIL Open Font License
(
static/fonts/OFL.txt).
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.