Initial commit — Serveur Lucas SmartEye
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>
This commit is contained in:
222
shared/deployment/setup_shared.sh
Normal file
222
shared/deployment/setup_shared.sh
Normal file
@@ -0,0 +1,222 @@
|
||||
#!/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 "════════════════════════════════════════════════════════"
|
||||
Reference in New Issue
Block a user