7.1 KiB
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é)
- Sauvegarder /opt/alfred/app. Le ZIP de mise à jour ne contient que les fichiers ajoutés/modifiés, sous
app/. - Décompresser
Alfred_Calendrier_HA_V1_PATCH.zipsous /opt/alfred/ (pas sous/opt/alfred/app, sinon vous obtiendrezapp/app). - 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
- Ouvrir
http://IP_ALFRED:54321/. Appuyer sur l'icône Agenda. - Tester
http://IP_ALFRED:54321/api/calendar/calendarspuishttp://IP_ALFRED:54321/api/calendar/eventsdepuis une session réseau de confiance. - Dire « Alfred, montre-moi mon planning sur sept jours » puis « Et demain ? ».
- Faire un événement de test via le bouton + Rendez-vous dans un calendrier HA disposant de l'option création.
- 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
uidet 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 sansrecurrence_id, la suppression peut affecter toute la série ; la boîte de dialogue l'indique. ALFRED_ALLOW_CALENDAR_WRITESdé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 WebSocketcalendar/event/delete, pas un service REST inexistant.
Vue capteurs et caméras
- Les températures sont les entités HA
sensorayantdevice_class: temperature, plus les températures courantes des entitésclimate. 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
uidou 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é.