IHM tactile Qt
L'interface locale du node (nodes/ui) est une application Qt6 / QML affichée sur
l'écran tactile. Elle est un simple client de l'API REST locale : aucune logique métier
n'y réside. Le launcher d'accueil est piloté par un modèle (ListModel) et les
écrans domotiques déclenchent directement les actions API du node via NodeClient.
Arborescence
nodes/ui/
├── CMakeLists.txt
├── qml/
│ ├── Main.qml
│ ├── HomeScreen.qml
│ ├── AppIcon.qml
│ ├── DashboardPage.qml
│ ├── DomoticsPage.qml
│ ├── ToggleSwitch.qml
│ ├── RelayCard.qml
│ ├── ValveCard.qml
│ ├── MeterCard.qml
│ ├── ConfigPage.qml
│ ├── TerminalPage.qml
│ └── PageHeader.qml
└── src/
├── main.cpp
├── node_client.{hpp,cpp}
├── node_settings.{hpp,cpp}
└── terminal_session.{hpp,cpp}
NodeClient
NodeClient (C++) est le pont entre QML et l'API locale :
- Interroge
GET /statustoutes les 1000 ms pour rafraîchir l'affichage. - Envoie les commandes de l'utilisateur en
POST(relais, vannes, ouverture temporisée). - Expose les données à QML via des propriétés/ signaux.
Composants QML
| Fichier | Rôle |
|---|---|
Main.qml | Fenêtre racine et navigation. |
HomeScreen.qml | Écran d'accueil avec grille dynamique d'apps (ListModel + Repeater). |
AppIcon.qml | Tuile d'application réutilisable (glyphes Canvas). |
DashboardPage.qml | Vue de supervision des équipements. |
DomoticsPage.qml | Interface domotique moderne (relais, vannes, compteurs). |
ToggleSwitch.qml | Interrupteur tactile réutilisable pour les cartes. |
RelayCard.qml | Carte de commande d'un relais. |
ValveCard.qml | Carte de commande d'une vanne (avec durée). |
MeterCard.qml | Affichage d'un compteur. |
ConfigPage.qml | Réglages du node. |
TerminalPage.qml | Console / diagnostic. |
PageHeader.qml | En-tête commun réutilisable. |
Affichage plein écran
L'IHM tourne sur le framebuffer Linux, sans serveur graphique :
QT_QPA_PLATFORM=linuxfb
Résolution cible : 800 × 480 (écran tactile 5"). Le binaire est installé en
/usr/bin/leukos-ui.
Dépendances
Qt6::Core, Qt6::Gui, Qt6::Qml, Qt6::Quick, Qt6::Network.