Files
Alfredv2/alfred/README_INSTALLATION.md
T
2026-10-26 00:06:24 +01:00

7.1 KiB
Raw Blame History

Alfred — Vues dynamiques & Calendrier Home Assistant (V1)

Base : votre alfredapp.zip du 25 octobre 2026. Aucun avatar n’est ajouté. Les fonctions Vosk, Hermes, Wyoming Piper, caméra locale, contrôles audio et ComfyUI sont conservées.

Installation : patch (conseillé)

  1. Sauvegarder /opt/alfred/app. Le ZIP de mise à jour ne contient que les fichiers ajoutés/modifiés, sous app/.
  2. Décompresser Alfred_Calendrier_HA_V1_PATCH.zip sous /opt/alfred/ (pas sous /opt/alfred/app, sinon vous obtiendrez app/app).
  3. Activer votre environnement Python habituel et installer les dépendances si nécessaire :
sudo systemctl stop alfred
sudo cp -a /opt/alfred/app /opt/alfred/app.sauvegarde.$(date +%Y%m%d_%H%M%S)
sudo unzip -o /tmp/Alfred_Calendrier_HA_V1_PATCH.zip -d /opt/alfred
cd /opt/alfred/app
# Utiliser le pip du venv exécutant app.py :
/path/vers/venv/bin/python -m pip install requests websocket-client
/path/vers/venv/bin/python -m py_compile app.py services/ha_views.py services/alfred_intents.py services/alfred_views_controller.py

Le script de démarrage systemd existant n’est pas modifié.

Variables d’environnement à fournir à alfred.service

HA_URL=http://192.168.1.XXX:8123
HA_TOKEN=JETON_LONGUE_DUREE_HOME_ASSISTANT
ALFRED_TIMEZONE=Europe/Paris
# Limiter aux calendriers choisis (laisser absent pour lire tous les calendriers autorisés au jeton) :
# HA_CALENDARS=calendar.famille,calendar.alfred
# Permet de cibler un calendrier pour les créations vocales :
# HA_DEFAULT_CALENDAR=calendar.alfred
# Pour restreindre les caméras visibles (ex. uniquement les caméras extérieures) :
# HA_CAMERAS=camera.entree,camera.jardin
# L'écriture est OFF par sécurité ; l'activer après validation de la lecture :
ALFRED_ALLOW_CALENDAR_WRITES=true

Mettre ces valeurs dans l’environnement du service (par exemple un fichier EnvironmentFile= de systemd ou fichier .env effectivement chargé par /opt/alfred/app/app.py). Ne pas mettre le jeton dans le navigateur ni dans le ZIP. Si l’application utilise load_dotenv(), un fichier .env dans son répertoire de travail peut convenir, mais vérifiez systemctl cat alfred avant de choisir son emplacement.

Après modification des paramètres systemd : sudo systemctl daemon-reload. Puis sudo systemctl start alfred et sudo journalctl -u alfred -f.

L’utilisateur associé à HA_TOKEN doit avoir des droits lecture sur les calendriers voulus et des droits écriture sur ceux à modifier. Les calendriers Google ou externes en lecture seule ne permettront pas l’écriture. Certains calendriers n’acceptent pas la suppression.

Tests initiaux

  1. Ouvrir http://IP_ALFRED:54321/. Appuyer sur l'icône Agenda.
  2. Tester http://IP_ALFRED:54321/api/calendar/calendars puis http://IP_ALFRED:54321/api/calendar/events depuis une session réseau de confiance.
  3. Dire « Alfred, montre-moi mon planning sur sept jours » puis « Et demain ? ».
  4. Faire un événement de test via le bouton + Rendez-vous dans un calendrier HA disposant de l'option création.
  5. Depuis la grille, ouvrir cet événement, demander sa suppression, puis confirmer la boîte de dialogue ; vérifier l'événement dans HA.

Commandes prises en charge : « mon agenda aujourd'hui », « demain », « ce matin », « cet après-midi », « ce soir », « dans la journée », « le 8 novembre », « sur 3 jours », « sur 7 jours », « cette semaine », « la semaine prochaine », « ce mois », « ai-je des choses prévues demain ? », « ajoute un rendez-vous dentiste demain à 15 h dans le calendrier Famille », « supprime mon rendez-vous dentiste demain », « confirme » / « annule », « montre les températures », « affiche les caméras », « reviens à l'accueil ».

Écriture vocale et sécurité

  • Pour une création entièrement spécifiée (date, heure, calendrier, titre), Alfred propose l'événement et attend « confirme » avant d'enregistrer. Si des éléments manquent, il affiche un formulaire prérempli ; il ne devine pas le calendrier ou l'heure.
  • Pour une suppression, Alfred recherche l'événement par nom/période, exige un identifiant HA uid et une confirmation explicite. Si plusieurs événements correspondent, l'écran permet de choisir. Une confirmation vocale expire après 90 secondes ; elle n'est pas sauvegardée après redémarrage. Pour une série récurrente sans recurrence_id, la suppression peut affecter toute la série ; la boîte de dialogue l'indique.
  • ALFRED_ALLOW_CALENDAR_WRITES désactive la création/suppression par défaut ; l'activer seulement sur un réseau de confiance et un utilisateur Home Assistant aux droits restreints. Cette application ne fournit pas d'authentification utilisateur complète : ne pas exposer Flask à Internet ni à un réseau non fiable. Les événements contiennent des données personnelles.
  • La création utilise POST /api/services/calendar/create_event. La suppression utilise la commande HA WebSocket calendar/event/delete, pas un service REST inexistant.

Vue capteurs et caméras

  • Les températures sont les entités HA sensor ayant device_class: temperature, plus les températures courantes des entités climate. Le clic ouvre un graphique des dernières 24 h (si l'API d'historique HA fournit des points).
  • La vue Caméras Home Assistant affiche des instantanés sécurisés derrière Flask, rafraîchis toutes les 15 s et seulement quand la vue est ouverte. Ce n'est pas un flux vidéo WebRTC/RTSP. La petite prévisualisation de la webcam locale existante reste inchangée.
  • Le bouton Accueil ou la commande vocale rétablit la page d'accueil.

Remarques sur le contexte Hermes

Ce patch ne modifie pas hermes_client.py, identity.md, les sessions Hermes ou le MCP Home Assistant. Les commandes visuelles explicites sont détectées côté Flask ; les autres demandes continuent vers Hermes et ses MCP, pour éviter de réintroduire la limitation du contexte qui avait empêché la génération ComfyUI.

Limites connues

  • L'interprétation vocale des dates suit un jeu de règles françaises (aujourd'hui/demain/jour de la semaine/jour et mois). Une formulation très libre peut nécessiter le formulaire tactile ou Hermes ; le routeur ne doit pas improviser une écriture.
  • La couleur des événements suit la liste des calendriers ; elle n'est pas encore configurable.
  • Certains calendriers de HA ne transmettent pas uid ou sont en lecture seule : leurs événements restent consultables, mais ne peuvent pas être supprimés dans Alfred.
  • Les appels HA ne sont pas testables depuis ce fichier d'installation sans accès à votre serveur/token ; les validations automatiques portent sur la syntaxe, le routage vocal et des réponses HA simulées.
  • Les requêtes de lecture et de mutation sont faites directement de Flask vers Home Assistant, sans dupliquer les calendriers. C'est un adaptateur de source, réutilisable pour d'autres fournisseurs plus tard.

Restauration

Arrêter Alfred puis restaurer le dossier sauvegardé. Ne pas copier identity.md d'anciennes archives si vous l'aviez volontairement désactivé.