API réception alertes chute (SmartEye/YOLO), analyse IA (Gemini 2.5 Flash), gestion alertes avec escalade (watchdog), notifications Firebase, dashboard web, documentation MkDocs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
222 lines
8.6 KiB
Bash
222 lines
8.6 KiB
Bash
#!/bin/bash
|
|
# ============================================================
|
|
# setup_shared.sh — À lancer depuis le serveur OVH (session Lucas)
|
|
# Initialise le dossier partagé pour les 3 agents
|
|
# ============================================================
|
|
|
|
SHARED="/var/www/shared/deployment"
|
|
|
|
echo "📁 Création de l'arborescence..."
|
|
mkdir -p "$SHARED"/{smarteye,lucas,lucasapp,synthesis}
|
|
|
|
# ============================================================
|
|
# BRIEF COMMUN
|
|
# ============================================================
|
|
cat > "$SHARED/BRIEF.md" << 'BRIEF_EOF'
|
|
# 🎯 Mission : Préparer le Déploiement Multi-Client
|
|
|
|
## Contexte
|
|
Le système SmartEye/Lucas/LucasApp fonctionne en mode pilote (Aléria).
|
|
TOUT est en dur : IPs caméras, ports tunnels, nom du senior, coordonnées GPS,
|
|
clés API, tokens Firebase, URLs RTSP, etc.
|
|
|
|
## Objectif
|
|
Rendre le système **déployable chez n'importe quel client** en externalisant
|
|
TOUTES les valeurs en dur dans des fichiers de configuration.
|
|
|
|
## Architecture
|
|
```
|
|
Caméras IP (réseau local client)
|
|
↓ RTSP
|
|
Jetson Orin Nano (SmartEye) — détection chutes
|
|
↓ SSH tunnels (autossh)
|
|
Serveur OVH 57.128.74.87 (Lucas) — backend, Gemini, Firebase
|
|
↓ FCM push
|
|
App mobile (LucasApp) — alertes, flux live, interphone
|
|
```
|
|
|
|
## Valeurs actuellement en dur
|
|
|
|
### SmartEye (Jetson)
|
|
- IPs caméras : 192.168.1.143, 192.168.1.148, 192.168.1.109
|
|
- Ports RTSP : 554, chemins /11 (HD) et /12 (SD)
|
|
- Serveur Lucas : 46.105.30.107 (ANCIEN — maintenant 57.128.74.87)
|
|
- Tunnels SSH : ports 8554/8555/8556 (RTSP) + 8800 (audio)
|
|
- User SSH : rachid (sur ancien serveur) ou debian (nouveau)
|
|
- Seuils détection : conf=0.15, pose=0.25, GS=45/30/20, ghost=30s, immobilité=12s
|
|
- Port web UI : 8080
|
|
|
|
### Lucas (OVH)
|
|
- senior_name : "Mamie Lucas"
|
|
- senior_photo_url : https://lucas.unigest.fr/photos/mamie.jpg
|
|
- Coordonnées GPS : 42.1028, 9.5147 (Aléria)
|
|
- URLs RTSP publiques : rtsp://46.105.30.107:8554/12, :8555/12, :8556/12
|
|
- Clé Gemini : en dur dans analyze.py
|
|
- Credentials Firebase : chemin fixe
|
|
- Tokens FCM : en dur ou semi-dur
|
|
- Config SMS OVH : clés en dur
|
|
- Numéro urgence : +33652631829
|
|
- Ports firewall : fixes
|
|
|
|
### LucasApp (Flutter)
|
|
- URL API : https://lucas.unigest.fr
|
|
- WebSocket audio : ws://46.105.30.107:8800
|
|
- Numéro urgence SAMU : 15
|
|
|
|
## Livrables attendus par agent
|
|
|
|
Chaque agent doit produire dans son dossier :
|
|
1. `plan.md` — Son plan d'action détaillé
|
|
2. `config_spec.*` — Le format de fichier config proposé (yaml/ini/dart)
|
|
3. `dependencies.md` — Ce dont il a besoin des 2 autres agents
|
|
4. `questions.md` — Questions ouvertes pour les autres
|
|
5. `status.txt` — "DONE" quand il a terminé son round
|
|
|
|
## Convention de ports par client
|
|
Chaque site client = plage de 10 ports sur OVH :
|
|
- Site 1 (pilote) : 8550-8559
|
|
- Site 2 : 8560-8569
|
|
- Site N : 8550 + N*10
|
|
|
|
## IMPORTANT
|
|
- Le user SSH sur le nouveau OVH est `debian` (pas `rachid`)
|
|
- L'IP OVH est maintenant `57.128.74.87`
|
|
- Domaine : lucas.unigest.fr
|
|
- Les caméras sont des CTronic avec RTSP + audio ONVIF
|
|
- Flux HD = /11, flux SD = /12
|
|
BRIEF_EOF
|
|
|
|
echo "✅ Brief créé : $SHARED/BRIEF.md"
|
|
|
|
# ============================================================
|
|
# INSTRUCTIONS SMARTEYE
|
|
# ============================================================
|
|
cat > "$SHARED/smarteye/INSTRUCTIONS.md" << 'EOF'
|
|
# 📷 Instructions — Agent SmartEye
|
|
|
|
## Ton rôle
|
|
Tu es responsable du code Python de détection embarqué sur le Jetson Orin Nano.
|
|
|
|
## Lis d'abord
|
|
- `/var/www/shared/deployment/BRIEF.md` — le brief commun
|
|
|
|
## Ce que tu dois faire
|
|
1. Identifier TOUTES les valeurs en dur dans le code SmartEye
|
|
2. Créer un format `smarteye_config.yaml` qui externalise tout
|
|
3. Modifier le code pour charger depuis ce YAML au démarrage
|
|
4. Adapter le service systemd autossh pour lire les ports depuis la config
|
|
5. Créer un script `setup_site.sh` interactif pour générer la config d'un nouveau site
|
|
6. Documenter les dépendances vers Lucas (endpoints, format des alertes)
|
|
|
|
## Écris tes résultats dans
|
|
- `/var/www/shared/deployment/smarteye/plan.md`
|
|
- `/var/www/shared/deployment/smarteye/config_spec.yaml` (exemple de config)
|
|
- `/var/www/shared/deployment/smarteye/dependencies.md`
|
|
- `/var/www/shared/deployment/smarteye/questions.md`
|
|
|
|
## Consulte les travaux des autres
|
|
- `/var/www/shared/deployment/lucas/` — ce que Lucas propose
|
|
- `/var/www/shared/deployment/lucasapp/` — ce que LucasApp propose
|
|
- `/var/www/shared/deployment/synthesis/` — les synthèses croisées
|
|
|
|
## Quand tu as fini
|
|
Écris "DONE" dans `/var/www/shared/deployment/smarteye/status.txt`
|
|
EOF
|
|
|
|
echo "✅ Instructions SmartEye créées"
|
|
|
|
# ============================================================
|
|
# INSTRUCTIONS LUCAS
|
|
# ============================================================
|
|
cat > "$SHARED/lucas/INSTRUCTIONS.md" << 'EOF'
|
|
# 🖥️ Instructions — Agent Lucas
|
|
|
|
## Ton rôle
|
|
Tu es responsable du backend serveur sur OVH (57.128.74.87).
|
|
|
|
## Lis d'abord
|
|
- `/var/www/shared/deployment/BRIEF.md` — le brief commun
|
|
|
|
## Ce que tu dois faire
|
|
1. Identifier TOUTES les valeurs en dur dans analyze.py, alert_ack.php, alert_watchdog.py
|
|
2. Créer un format `lucas_config.ini` qui externalise tout
|
|
3. Modifier les scripts Python/PHP pour charger depuis cette config
|
|
4. Gérer le MULTI-SITE : un seul serveur Lucas doit pouvoir servir N clients
|
|
5. Créer un script `add_site.py` pour initialiser un nouveau site (BDD + config + firewall)
|
|
6. Documenter le format exact du payload FCM (ce que LucasApp attend)
|
|
7. Documenter les endpoints HTTP (ce que SmartEye appelle)
|
|
|
|
## Écris tes résultats dans
|
|
- `/var/www/shared/deployment/lucas/plan.md`
|
|
- `/var/www/shared/deployment/lucas/config_spec.ini` (exemple de config)
|
|
- `/var/www/shared/deployment/lucas/dependencies.md`
|
|
- `/var/www/shared/deployment/lucas/questions.md`
|
|
- `/var/www/shared/deployment/lucas/api_contract.md` (endpoints + payloads)
|
|
|
|
## Consulte les travaux des autres
|
|
- `/var/www/shared/deployment/smarteye/` — ce que SmartEye propose
|
|
- `/var/www/shared/deployment/lucasapp/` — ce que LucasApp propose
|
|
- `/var/www/shared/deployment/synthesis/` — les synthèses croisées
|
|
|
|
## Quand tu as fini
|
|
Écris "DONE" dans `/var/www/shared/deployment/lucas/status.txt`
|
|
EOF
|
|
|
|
echo "✅ Instructions Lucas créées"
|
|
|
|
# ============================================================
|
|
# INSTRUCTIONS LUCASAPP
|
|
# ============================================================
|
|
cat > "$SHARED/lucasapp/INSTRUCTIONS.md" << 'EOF'
|
|
# 📱 Instructions — Agent LucasApp
|
|
|
|
## Ton rôle
|
|
Tu es responsable de l'application mobile Flutter (Android).
|
|
|
|
## Lis d'abord
|
|
- `/var/www/shared/deployment/BRIEF.md` — le brief commun
|
|
|
|
## Ce que tu dois faire
|
|
1. Identifier TOUTES les valeurs en dur dans le code Dart
|
|
2. Faire en sorte que l'app soit 100% pilotée par le payload FCM (zéro config statique liée à un site)
|
|
3. Vérifier que les URLs RTSP, WebSocket, endpoints API viennent tous du serveur
|
|
4. Proposer un `lib/config.dart` minimal (uniquement l'URL de base Lucas)
|
|
5. Documenter ce que l'app attend dans le payload FCM (champs requis)
|
|
6. S'assurer que l'app fonctionne pour n'importe quel client sans rebuild
|
|
|
|
## Écris tes résultats dans
|
|
- `/var/www/shared/deployment/lucasapp/plan.md`
|
|
- `/var/www/shared/deployment/lucasapp/config_spec.dart` (exemple)
|
|
- `/var/www/shared/deployment/lucasapp/dependencies.md`
|
|
- `/var/www/shared/deployment/lucasapp/questions.md`
|
|
- `/var/www/shared/deployment/lucasapp/fcm_payload_spec.md` (ce que le payload doit contenir)
|
|
|
|
## Consulte les travaux des autres
|
|
- `/var/www/shared/deployment/smarteye/` — ce que SmartEye propose
|
|
- `/var/www/shared/deployment/lucas/` — ce que Lucas propose
|
|
- `/var/www/shared/deployment/synthesis/` — les synthèses croisées
|
|
|
|
## Quand tu as fini
|
|
Écris "DONE" dans `/var/www/shared/deployment/lucasapp/status.txt`
|
|
EOF
|
|
|
|
echo "✅ Instructions LucasApp créées"
|
|
|
|
# ============================================================
|
|
# PERMISSIONS
|
|
# ============================================================
|
|
chmod -R 775 "$SHARED"
|
|
chown -R debian:debian "$SHARED" 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "════════════════════════════════════════════════════════"
|
|
echo "✅ Dossier partagé prêt : $SHARED"
|
|
echo "════════════════════════════════════════════════════════"
|
|
echo ""
|
|
ls -la "$SHARED"
|
|
echo ""
|
|
echo "Contenu :"
|
|
find "$SHARED" -type f | sort
|
|
echo ""
|
|
echo "🚀 Prochaine étape : coller les prompts dans chaque Claude Code"
|
|
echo "════════════════════════════════════════════════════════" |