Aller au contenu principal

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 /status toutes 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

FichierRôle
Main.qmlFenêtre racine et navigation.
HomeScreen.qmlÉcran d'accueil avec grille dynamique d'apps (ListModel + Repeater).
AppIcon.qmlTuile d'application réutilisable (glyphes Canvas).
DashboardPage.qmlVue de supervision des équipements.
DomoticsPage.qmlInterface domotique moderne (relais, vannes, compteurs).
ToggleSwitch.qmlInterrupteur tactile réutilisable pour les cartes.
RelayCard.qmlCarte de commande d'un relais.
ValveCard.qmlCarte de commande d'une vanne (avec durée).
MeterCard.qmlAffichage d'un compteur.
ConfigPage.qmlRéglages du node.
TerminalPage.qmlConsole / diagnostic.
PageHeader.qmlEn-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.