255 lines
7.4 KiB
Markdown
255 lines
7.4 KiB
Markdown
# Pilot Control - GNOME Shell Extension
|
|
|
|
Extension GNOME Shell pour contrôler Pilot V2 (agent MQTT pour Home Assistant) directement depuis votre environnement de bureau.
|
|
|
|
## Fonctionnalités
|
|
|
|
- **Contrôle du service systemd** : Démarrer, arrêter, redémarrer le service Pilot V2
|
|
- **Gestion de la télémétrie** : Activer/désactiver les métriques système individuellement
|
|
- **Configuration des commandes** : Gérer la liste des commandes MQTT autorisées
|
|
- **Édition simplifiée** : Modifier les paramètres sans éditer manuellement le YAML
|
|
- **Interface intuitive** : Icône dans le panel GNOME avec menu rapide et fenêtre de contrôle complète
|
|
|
|
## Prérequis
|
|
|
|
- GNOME Shell 45 ou supérieur
|
|
- Pilot V2 installé et configuré
|
|
- Service systemd `mqtt_pilot.service` (user service)
|
|
- GTK4 et libadwaita
|
|
|
|
## Structure des fichiers
|
|
|
|
```
|
|
gnome-pilot-extension/
|
|
├── metadata.json # Métadonnées de l'extension
|
|
├── extension.js # Point d'entrée principal
|
|
├── prefs.js # Fenêtre de préférences
|
|
├── yamlConfig.js # Module de lecture/écriture YAML
|
|
├── serviceManager.js # Gestion du service systemd
|
|
├── stylesheet.css # Styles CSS
|
|
├── ui/
|
|
│ ├── pilotWindow.js # Fenêtre principale
|
|
│ ├── metricEditDialog.js # Dialogue d'édition des métriques
|
|
│ └── commandEditDialog.js # Dialogue d'édition des commandes
|
|
└── README.md
|
|
```
|
|
|
|
## Installation
|
|
|
|
### Méthode 1 : Installation manuelle
|
|
|
|
1. **Copier l'extension dans le répertoire des extensions utilisateur** :
|
|
|
|
```bash
|
|
# Depuis le répertoire du projet Pilot
|
|
mkdir -p ~/.local/share/gnome-shell/extensions/pilot-control@gnome-shell-extensions
|
|
cp -r gnome-pilot-extension/* ~/.local/share/gnome-shell/extensions/pilot-control@gnome-shell-extensions/
|
|
```
|
|
|
|
2. **Redémarrer GNOME Shell** :
|
|
- Sur X11 : `Alt+F2`, taper `r`, puis `Entrée`
|
|
- Sur Wayland : Déconnexion/reconnexion
|
|
|
|
3. **Activer l'extension** :
|
|
|
|
```bash
|
|
gnome-extensions enable pilot-control@gnome-shell-extensions
|
|
```
|
|
|
|
Ou via l'application Extensions (GNOME Extensions).
|
|
|
|
### Méthode 2 : Script d'installation automatique
|
|
|
|
Créez un script d'installation :
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# install-extension.sh
|
|
|
|
EXTENSION_UUID="pilot-control@gnome-shell-extensions"
|
|
EXTENSION_DIR="$HOME/.local/share/gnome-shell/extensions/$EXTENSION_UUID"
|
|
|
|
echo "Installing Pilot Control extension..."
|
|
|
|
# Créer le répertoire
|
|
mkdir -p "$EXTENSION_DIR"
|
|
|
|
# Copier les fichiers
|
|
cp -r gnome-pilot-extension/* "$EXTENSION_DIR/"
|
|
|
|
# Vérifier l'installation
|
|
if [ -f "$EXTENSION_DIR/metadata.json" ]; then
|
|
echo "✓ Extension installed successfully"
|
|
echo " Location: $EXTENSION_DIR"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo "1. Restart GNOME Shell (Alt+F2, type 'r', Enter on X11)"
|
|
echo "2. Enable the extension:"
|
|
echo " gnome-extensions enable $EXTENSION_UUID"
|
|
else
|
|
echo "✗ Installation failed"
|
|
exit 1
|
|
fi
|
|
```
|
|
|
|
Rendre le script exécutable et l'exécuter :
|
|
|
|
```bash
|
|
chmod +x install-extension.sh
|
|
./install-extension.sh
|
|
```
|
|
|
|
## Utilisation
|
|
|
|
### Accès rapide depuis le panel
|
|
|
|
1. Cliquez sur l'icône d'ordinateur dans le panel GNOME (en haut à droite)
|
|
2. Le menu affiche :
|
|
- **Status du service** (Running/Stopped)
|
|
- **Actions rapides** : Start, Stop, Restart
|
|
- **Open Control Panel** : Ouvre la fenêtre complète
|
|
|
|
### Fenêtre de contrôle principale
|
|
|
|
La fenêtre principale est divisée en 3 sections :
|
|
|
|
#### 1. Service Control
|
|
|
|
- **Service Status** : Switch pour démarrer/arrêter le service
|
|
- **Auto-start Service** : Enable/disable au démarrage du système
|
|
- **Restart Service** : Redémarrer pour appliquer les changements
|
|
|
|
#### 2. Telemetry Metrics
|
|
|
|
- **Enable Telemetry** : Switch global pour toute la télémétrie
|
|
- Liste des métriques individuelles :
|
|
- Switch pour activer/désactiver chaque métrique
|
|
- Bouton "..." pour éditer les paramètres (nom, interval, etc.)
|
|
|
|
#### 3. Commands
|
|
|
|
- **Enable Commands** : Switch global pour les commandes MQTT
|
|
- **Allowed Commands** : Gérer la liste des commandes autorisées
|
|
- shutdown, reboot, sleep, hibernate, screen
|
|
|
|
### Édition des métriques
|
|
|
|
Cliquez sur le bouton "..." à côté d'une métrique pour modifier :
|
|
|
|
- **Enabled** : Activer/désactiver
|
|
- **Display Name** : Nom affiché dans Home Assistant
|
|
- **Unique ID** : Identifiant unique
|
|
- **Update Interval** : Intervalle de mise à jour (en secondes)
|
|
|
|
### Édition des commandes autorisées
|
|
|
|
Cliquez sur "Allowed Commands" pour :
|
|
|
|
- Sélectionner les commandes à autoriser via MQTT
|
|
- Voir la description de chaque commande
|
|
- Sauvegarder les modifications
|
|
|
|
## Sauvegarde et rechargement
|
|
|
|
- **Sauvegarde automatique** : Lors de chaque modification, une sauvegarde du config.yaml est créée (config.yaml.backup_TIMESTAMP)
|
|
- **Rechargement du service** : Après sauvegarde, le service est automatiquement redémarré pour appliquer les changements
|
|
- **Bouton Refresh** : Recharge la configuration depuis le fichier YAML
|
|
|
|
## Configuration
|
|
|
|
Par défaut, l'extension cherche le fichier de configuration dans :
|
|
|
|
1. `~/app/pilot/pilot-v2/config.yaml`
|
|
2. `~/.config/pilot/config.yaml`
|
|
3. `/etc/pilot/config.yaml`
|
|
4. `./pilot-v2/config.yaml`
|
|
|
|
Pour modifier le chemin, utilisez les préférences de l'extension.
|
|
|
|
## Dépannage
|
|
|
|
### L'extension ne se charge pas
|
|
|
|
```bash
|
|
# Vérifier les logs
|
|
journalctl -f -o cat /usr/bin/gnome-shell
|
|
|
|
# Vérifier que l'extension est bien installée
|
|
gnome-extensions list | grep pilot
|
|
|
|
# Vérifier les erreurs
|
|
gnome-extensions show pilot-control@gnome-shell-extensions
|
|
```
|
|
|
|
### Le service ne démarre pas
|
|
|
|
```bash
|
|
# Vérifier le status du service
|
|
systemctl --user status mqtt_pilot.service
|
|
|
|
# Vérifier les logs
|
|
journalctl --user -u mqtt_pilot.service -n 50
|
|
```
|
|
|
|
### Problèmes de permissions
|
|
|
|
Si les commandes systemctl ne fonctionnent pas, vérifiez que le service est bien un service utilisateur (user service) et non un service système.
|
|
|
|
### Fichier config.yaml non trouvé
|
|
|
|
Modifiez le chemin dans [yamlConfig.js:25-32](gnome-pilot-extension/yamlConfig.js#L25-L32) ou utilisez les préférences.
|
|
|
|
## Développement
|
|
|
|
### Tester les modifications
|
|
|
|
```bash
|
|
# Recharger l'extension après modifications
|
|
gnome-extensions disable pilot-control@gnome-shell-extensions
|
|
gnome-extensions enable pilot-control@gnome-shell-extensions
|
|
|
|
# Sur X11, recharger GNOME Shell
|
|
# Alt+F2, 'r', Entrée
|
|
```
|
|
|
|
### Consulter les logs
|
|
|
|
```bash
|
|
# Logs en temps réel
|
|
journalctl -f -o cat /usr/bin/gnome-shell | grep -i pilot
|
|
|
|
# Ou via Looking Glass (Alt+F2, 'lg')
|
|
```
|
|
|
|
### Structure du code
|
|
|
|
- **extension.js** : Crée le bouton panel et gère le cycle de vie
|
|
- **ui/pilotWindow.js** : Fenêtre principale avec 3 sections
|
|
- **yamlConfig.js** : Parser/writer YAML simple
|
|
- **serviceManager.js** : Wrapper systemctl
|
|
- **ui/*Dialog.js** : Dialogues d'édition
|
|
|
|
## Limitations connues (V1)
|
|
|
|
- Parser YAML simple (ne gère que la structure de config.yaml)
|
|
- Pas de validation avancée des entrées
|
|
- Pas de support pour les configurations complexes (listes imbriquées, etc.)
|
|
- Nécessite un redémarrage du service pour appliquer les changements
|
|
|
|
## Améliorations futures
|
|
|
|
- Support de plusieurs instances de Pilot
|
|
- Gestion des logs en temps réel
|
|
- Notifications pour les événements importants
|
|
- Support des thèmes sombres/clairs
|
|
- Validation avancée des entrées
|
|
- Backup/restore de configurations
|
|
|
|
## Licence
|
|
|
|
Même licence que le projet Pilot
|
|
|
|
## Auteur
|
|
|
|
Extension créée pour simplifier la gestion de Pilot V2 depuis GNOME Shell
|