# Installation du Jetson SmartEye ## Philosophie : le Jetson est une Box Le Jetson SmartEye se deploie comme une box internet (Free, Orange). L'installateur arrive chez le beneficiaire avec le boitier pre-configure, le branche sur le reseau local, et **tout se passe depuis son smartphone**. Aucun ecran, aucun clavier, aucun cable HDMI. ```mermaid graph LR subgraph Domicile["Domicile du beneficiaire"] BOX["Jetson SmartEye"] CAM1["Camera 1"] CAM2["Camera 2"] CAM3["Camera 3"] ROUTER["Box Internet"] BOX ---|Ethernet| ROUTER CAM1 ---|WiFi/Ethernet| ROUTER CAM2 ---|WiFi/Ethernet| ROUTER CAM3 ---|WiFi/Ethernet| ROUTER end subgraph Install["Smartphone installateur"] APP["LucasApp / Navigateur"] end ROUTER ---|WiFi| APP APP -.->|"http://smarteye.local:8080"| BOX ``` ## Materiel necessaire | Element | Detail | |---------|--------| | **Jetson Orin Nano** | Avec SmartEye pre-installe sur carte SD | | **Alimentation** | USB-C 5V/3A (fournie) | | **Cable Ethernet** | RJ45, branchement sur la box internet du client | | **Cameras IP** | CTronic ou compatible ONVIF, deja installees | | **Smartphone** | Android ou iOS, connecte au meme reseau WiFi | --- ## Etape 1 : Branchement physique 1. **Brancher le cable Ethernet** du Jetson a la box internet du client 2. **Brancher l'alimentation USB-C** du Jetson 3. **Attendre 60 secondes** — le Jetson demarre et se connecte au reseau local !!! info "LED de statut" Le Jetson n'a pas d'ecran mais dispose d'une LED verte : - **Clignotement lent** : demarrage en cours - **Fixe** : connecte au reseau, pret pour la configuration - **Clignotement rapide** : surveillance active, tout fonctionne --- ## Etape 2 : Decouverte sur le reseau local Le Jetson annonce automatiquement sa presence sur le reseau local via **mDNS (Avahi/Bonjour)**. Depuis le smartphone connecte au meme WiFi : ### Option A : Acces direct (recommande) Ouvrir un navigateur et aller a : ``` http://smarteye.local:8080 ``` !!! tip "Si smarteye.local ne repond pas" Certaines box internet bloquent le mDNS. Dans ce cas, utiliser l'option B. ### Option B : Scan reseau depuis LucasApp 1. Ouvrir **LucasApp** sur le smartphone 2. Aller dans **Parametres > Installer un SmartEye** 3. L'application scanne le reseau local (plage 192.168.x.x) 4. Le Jetson apparait dans la liste des appareils detectes 5. Appuyer dessus pour ouvrir l'interface de configuration ```mermaid sequenceDiagram participant Phone as Smartphone participant Jetson as Jetson SmartEye participant Router as Box Internet Phone->>Router: Scan reseau local (UDP broadcast) Router-->>Phone: Liste des appareils Phone->>Jetson: GET /api/identity (port 8080) Jetson-->>Phone: {"type": "smarteye", "version": "v30", "status": "setup"} Phone->>Phone: Affiche "SmartEye detecte" ``` ### Option C : QR Code sur le boitier Un QR code colle sur le Jetson contient son adresse MAC. LucasApp peut scanner ce QR code pour identifier le bon appareil sur le reseau. --- ## Etape 3 : Interface de configuration (WebUI) L'interface web du Jetson s'affiche sur le smartphone. L'installation se fait en **4 sous-etapes** guidees. ### 3.1 — Identification du site | Champ | Description | Exemple | |-------|-------------|---------| | **ID Client** | Identifiant du beneficiaire (fourni par Lucas) | `dupont_marie` | | **Token** | Jeton d'authentification (fourni par Lucas) | `b5ce5015` | | **Nom du site** | Nom lisible | `Residence Dupont` | !!! warning "Ou trouver l'ID et le Token ?" L'ID client et le token sont generes lors de la creation du dossier dans l'interface d'administration Lucas ([admin.php](https://lucas.unigest.fr/admin.php)). Voir le [Guide nouveau client](../guide/nouveau-client.md). ### 3.2 — Detection automatique des cameras (ONVIF) Le Jetson scanne le reseau local a la recherche de cameras compatibles ONVIF. ``` Scan en cours... Camera detectee : 192.168.1.143 (CTronic - Salon) Camera detectee : 192.168.1.148 (CTronic - Chambre) Camera detectee : 192.168.1.152 (CTronic - Cuisine) 3 cameras trouvees. ``` Pour chaque camera detectee : | Champ | Auto-detecte | Modifiable | |-------|:------------:|:----------:| | **Adresse IP** | Oui | Oui | | **Nom** (piece) | Non | Oui | | **Login RTSP** | Non | Oui | | **Mot de passe RTSP** | Non | Oui | | **Flux HD** (/11) | Oui | Oui | | **Flux SD** (/12) | Oui | Oui | | **Active** | Oui | Oui | !!! tip "Verifier le flux en direct" Appuyer sur **Tester** a cote de chaque camera pour afficher un apercu en direct sur le smartphone. Cela confirme que les identifiants RTSP sont corrects. ### 3.3 — Connexion au serveur Lucas Le Jetson doit etablir une connexion securisee (tunnel SSH) vers le serveur OVH. | Parametre | Valeur par defaut | Modifiable | |-----------|-------------------|:----------:| | **Serveur** | `57.128.74.87` | Oui | | **Utilisateur SSH** | `debian` | Oui | | **Domaine** | `lucas.unigest.fr` | Oui | | **Numero de site** | Auto (prochain disponible) | Oui | ```mermaid sequenceDiagram participant Jetson participant OVH as Serveur OVH Jetson->>OVH: Test connexion SSH OVH-->>Jetson: OK - Cle autorisee Jetson->>OVH: Ouverture tunnels RTSP (ports 8560-8565) Jetson->>OVH: Ouverture tunnel Audio (port 8566) Jetson->>OVH: POST api.php (test image) OVH-->>Jetson: 200 OK - Client reconnu Jetson-->>Jetson: Connexion validee ``` !!! note "Attribution automatique des ports" Le Jetson calcule automatiquement sa plage de ports selon la convention : ``` Site N → base_port = 8550 + (N-1) x 10 Ports attribues : base+0 a base+5 : RTSP cameras (max 6) base+6 : Audio WebSocket base+7 : WebUI locale base+8 a base+9 : Reserves ``` Exemple pour le site n°2 : ports 8560 a 8569. ### 3.4 — Test de bout en bout Le Jetson effectue un test complet de la chaine : ``` [1/5] Connexion cameras RTSP............ OK [2/5] Detection IA (YOLO)............... OK (personne detectee) [3/5] Tunnel SSH vers OVH............... OK [4/5] Envoi image test a api.php........ OK (Gemini: "RAS") [5/5] Notification push Firebase........ OK (recue sur LucasApp) === INSTALLATION TERMINEE === SmartEye est operationnel. La surveillance demarre automatiquement. ``` !!! success "Installation terminee" Une fois le test valide, le Jetson passe en mode **surveillance active**. Il demarre automatiquement a chaque mise sous tension, sans aucune intervention. --- ## Etape 4 : Verification depuis LucasApp Sur le smartphone de chaque aidant : 1. Ouvrir **LucasApp** 2. Verifier que le flux video en direct est accessible 3. Verifier que l'interphone fonctionne (audio bidirectionnel) 4. Effectuer un **test de chute simule** : - Se coucher au sol dans le champ d'une camera - Attendre ~30 secondes - Verifier la reception de la notification push - Verifier l'image et le message Gemini dans l'alerte --- ## Architecture reseau complete ```mermaid graph TB subgraph Domicile["Domicile du beneficiaire"] CAM1["Camera 1
192.168.1.143"] CAM2["Camera 2
192.168.1.148"] CAM3["Camera 3
192.168.1.152"] JETSON["Jetson SmartEye
192.168.1.xxx"] ROUTER["Box Internet
192.168.1.1"] CAM1 -->|RTSP local| JETSON CAM2 -->|RTSP local| JETSON CAM3 -->|RTSP local| JETSON JETSON ---|Ethernet| ROUTER end subgraph OVH["Serveur OVH (57.128.74.87)"] SSH["SSH Gateway"] RTSP_RELAY["Relay RTSP
ports 8560-8565"] AUDIO["Audio WebSocket
port 8566"] API["api.php"] GEMINI["Gemini 2.5 Flash"] FCM["Firebase Cloud Messaging"] end JETSON ==>|"SSH Tunnel (autossh)
Persistant, auto-reconnect"| SSH SSH --> RTSP_RELAY SSH --> AUDIO JETSON ==>|"POST image
si chute detectee"| API API --> GEMINI GEMINI --> FCM subgraph Aidants["Smartphones aidants"] APP1["LucasApp - Fille"] APP2["LucasApp - Fils"] end FCM ==>|Push notification| APP1 FCM ==>|Push notification| APP2 RTSP_RELAY -.->|"Flux video live"| APP1 AUDIO -.->|"Interphone"| APP1 ``` --- ## Fichier de configuration genere A la fin de l'installation, le Jetson cree automatiquement le fichier `smarteye_config.yaml` : ```yaml # Genere automatiquement par l'assistant d'installation # Ne pas modifier manuellement sauf si necessaire site: id: "dupont_marie" name: "Residence Dupont" client_token: "b5ce5015" server: api_url: "https://lucas.unigest.fr/api.php" ovh_ip: "57.128.74.87" ssh_user: "debian" ports: site_number: 2 base_port: 8560 cameras: - id: "Cam1" name: "Salon" ip: "192.168.1.143" username: "admin" password: "********" stream_hd: "/11" stream_sd: "/12" tunnel_port: 8560 enabled: true - id: "Cam2" name: "Chambre" ip: "192.168.1.148" username: "admin" password: "********" stream_hd: "/11" stream_sd: "/12" tunnel_port: 8561 enabled: true - id: "Cam3" name: "Cuisine" ip: "192.168.1.152" username: "admin" password: "********" stream_hd: "/11" stream_sd: "/12" tunnel_port: 8562 enabled: true audio: local_port: 8800 tunnel_port: 8566 detection: yolo: std_confidence: 0.15 pose_confidence: 0.25 alert_interval: 120 ``` --- ## Maintenance et acces distant Une fois installe, le Jetson est accessible a distance depuis le serveur OVH via le tunnel SSH inverse : ```bash # Depuis le serveur OVH, acceder au WebUI du Jetson # (tunnel inverse sur le port base+7) curl http://localhost:8567/api/status ``` ### Commandes utiles (pour le support technique) | Action | Commande | |--------|----------| | **Statut du Jetson** | `curl http://localhost:/api/status` | | **Redemarrer SmartEye** | `ssh -p jetson "sudo systemctl restart smarteye"` | | **Voir les logs** | `ssh -p jetson "journalctl -u smarteye -f"` | | **Mettre a jour** | `ssh -p jetson "cd /w && git pull && sudo systemctl restart smarteye"` | !!! warning "Resilience reseau" Le service `autossh` maintient les tunnels SSH en permanence. En cas de coupure internet : - Les tunnels se retablissent automatiquement a la reconnexion - SmartEye continue la detection localement meme sans internet - Les alertes en attente sont envoyees des que la connexion revient --- ## Resume du flux d'installation ```mermaid graph TD A["Branchement Ethernet + USB-C"] --> B["Demarrage automatique (60s)"] B --> C["Annonce mDNS sur le reseau local"] C --> D{"Smartphone detecte le Jetson"} D -->|"smarteye.local:8080"| E["WebUI de configuration"] D -->|"LucasApp scan"| E D -->|"QR Code"| E E --> F["Saisie ID client + Token"] F --> G["Scan ONVIF des cameras"] G --> H["Configuration des cameras"] H --> I["Connexion SSH vers OVH"] I --> J["Test de bout en bout"] J -->|"Tout OK"| K["Surveillance active"] J -->|"Echec"| L["Diagnostic et correction"] L --> J style A fill:#455a64,color:#fff style K fill:#00695c,color:#fff style L fill:#bf360c,color:#fff ```