bemade-addons/unifi_integration/doc/model_actuels.md
2025-03-26 08:46:03 -04:00

235 lines
10 KiB
Markdown

# Modèles actuels du module d'intégration UniFi
Ce document décrit les modèles de données actuellement implémentés dans le module d'intégration UniFi pour Odoo.
## Structure générale
Les modèles du module sont organisés de manière hiérarchique, avec le modèle `udm.site` comme entité centrale. Tous les autres modèles sont liés à un site spécifique et sont supprimés automatiquement lorsque le site est supprimé (via le mécanisme `ondelete='cascade'`).
## Modèles principaux
### 1. udm.site
**Fichier :** `udm_site.py`
**Description :** Représente un site UniFi géré par un ou plusieurs contrôleurs UniFi.
**Champs principaux :**
- `name` (Char) : Nom du site
- `site_id` (Char) : Identifiant du site dans UniFi (généralement 'default')
- `description` (Text) : Description du site
- `host` (Char) : Adresse IP ou nom d'hôte du contrôleur
- `port` (Integer) : Port du contrôleur (par défaut 443)
- `username` (Char) : Nom d'utilisateur pour l'authentification
- `password` (Char) : Mot de passe pour l'authentification (stocké de manière sécurisée)
- `verify_ssl` (Boolean) : Indique si la vérification SSL doit être effectuée
- `last_sync` (Datetime) : Date et heure de la dernière synchronisation
- `sync_interval` (Integer) : Intervalle de synchronisation en minutes
**Relations :**
- `network_ids` (One2many) : Réseaux associés au site
- `device_ids` (One2many) : Appareils associés au site
- `user_ids` (One2many) : Utilisateurs associés au site
- `vlan_ids` (One2many) : VLANs associés au site
- `firewall_rule_ids` (One2many) : Règles de pare-feu associées au site
- `port_forward_ids` (One2many) : Règles de redirection de port associées au site
- `system_info_id` (One2many) : Informations système associées au site
**Fonctionnalités :**
- Authentification au contrôleur UniFi
- Récupération et synchronisation des données
- Gestion des sessions et des cookies
- Journalisation des activités et des erreurs
### 2. udm.device
**Fichier :** `udm_device.py`
**Description :** Représente un appareil réseau dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel l'appareil appartient
- `name` (Char) : Nom ou hostname de l'appareil
- `mac_address` (Char) : Adresse MAC de l'appareil
- `ip_address` (Char) : Adresse IP actuelle
- `device_type` (Selection) : Type d'appareil (point d'accès, switch, passerelle, etc.)
- `model` (Char) : Modèle de l'appareil
- `firmware` (Char) : Version du firmware
- `last_seen` (Datetime) : Dernière fois que l'appareil a été vu en ligne
- `uptime` (Integer) : Temps de fonctionnement en secondes
- `status` (Selection) : État de l'appareil (en ligne, hors ligne, provisionnement)
- `adopted` (Boolean) : Indique si l'appareil a été adopté par le contrôleur
### 3. udm.network
**Fichier :** `udm_network.py`
**Description :** Représente un réseau dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel le réseau appartient
- `name` (Char) : Nom du réseau
- `purpose` (Selection) : Objectif du réseau (entreprise, invité, IoT, autre)
- `subnet` (Char) : Sous-réseau au format CIDR
- `vlan_id_number` (Integer) : Identifiant VLAN
- `vlan_id` (Many2one) : Relation avec le modèle VLAN
- `dhcp_enabled` (Boolean) : Indique si DHCP est activé
- `dhcp_start` (Char) : Adresse de début de la plage DHCP
- `dhcp_stop` (Char) : Adresse de fin de la plage DHCP
- `dhcp_lease_time` (Integer) : Durée du bail DHCP en secondes
- `domain_name` (Char) : Nom de domaine pour le réseau
- `dns_servers` (Char) : Serveurs DNS (séparés par des virgules)
- `enabled` (Boolean) : Indique si le réseau est activé
### 4. udm.user
**Fichier :** `udm_user.py`
**Description :** Représente un utilisateur dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel l'utilisateur appartient
- `name` (Char) : Nom complet de l'utilisateur
- `email` (Char) : Adresse email de l'utilisateur
- `mac_address` (Char) : Adresse MAC de l'appareil
- `ip_address` (Char) : Adresse IP actuelle
- `network_id` (Many2one) : Réseau auquel l'utilisateur est connecté
- `device_id` (Many2one) : Appareil associé à l'utilisateur
- `role` (Selection) : Rôle de l'utilisateur (admin, opérateur, visualiseur)
- `blocked` (Boolean) : Indique si l'utilisateur est bloqué
- `last_seen` (Datetime) : Dernière fois que l'utilisateur a été vu en ligne
- `upload_usage` (Float) : Utilisation de la bande passante en upload
- `download_usage` (Float) : Utilisation de la bande passante en download
- `total_usage` (Float) : Utilisation totale de la bande passante
### 5. udm.vlan
**Fichier :** `udm_vlan.py`
**Description :** Représente un VLAN dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel le VLAN appartient
- `name` (Char) : Nom du VLAN
- `vlan_id` (Integer) : Identifiant du VLAN
- `description` (Text) : Description du VLAN
- `enabled` (Boolean) : Indique si le VLAN est activé
- `network_ids` (One2many) : Réseaux associés à ce VLAN
### 6. udm.firewall.rule
**Fichier :** `udm_firewall.py`
**Description :** Représente une règle de pare-feu dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel la règle appartient
- `name` (Char) : Nom de la règle
- `description` (Text) : Description détaillée de l'objectif de la règle
- `enabled` (Boolean) : Indique si la règle est active
- `sequence` (Integer) : Ordre dans lequel les règles sont évaluées
- `action` (Selection) : Action à effectuer (accepter, rejeter, abandonner)
- `protocol` (Selection) : Protocole concerné (TCP, UDP, ICMP, tous)
- `source_type` (Selection) : Type de source (adresse, réseau, groupe)
- `source_address` (Char) : Adresse source
- `source_port` (Char) : Port source
- `destination_type` (Selection) : Type de destination (adresse, réseau, groupe)
- `destination_address` (Char) : Adresse de destination
- `destination_port` (Char) : Port de destination
- `direction` (Selection) : Direction du trafic (entrant, sortant, les deux)
- `logging` (Boolean) : Indique si la journalisation est activée pour cette règle
## Modèles de configuration
### 7. udm.port_forward
**Fichier :** `udm_port_forward.py`
**Description :** Représente une règle de redirection de port dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel la règle appartient
- `name` (Char) : Nom de la règle
- `enabled` (Boolean) : Indique si la règle est active
- `source_port` (Integer) : Port source
- `destination_port` (Integer) : Port de destination
- `forward_ip` (Char) : Adresse IP de destination
- `protocol` (Selection) : Protocole (TCP, UDP, TCP et UDP)
- `log` (Boolean) : Indique si la journalisation est activée
### 8. udm.system_info
**Fichier :** `udm_system_info.py`
**Description :** Représente les informations système du contrôleur UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel les informations appartiennent
- `version` (Char) : Version du logiciel
- `hardware_model` (Char) : Modèle matériel
- `hostname` (Char) : Nom d'hôte du système
- `uptime` (Integer) : Temps de fonctionnement en secondes
- `cpu_usage` (Float) : Utilisation du CPU en pourcentage
- `memory_usage` (Float) : Utilisation de la mémoire en pourcentage
- `disk_usage` (Float) : Utilisation du disque en pourcentage
- `temperature` (Float) : Température du système
### 9. udm.dns et udm.dns_config
**Fichiers :** `udm_dns.py` et `udm_dns_config.py`
**Description :** Représentent les configurations DNS dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel la configuration appartient
- `hostname` (Char) : Nom d'hôte
- `ip_address` (Char) : Adresse IP associée
- `description` (Text) : Description de l'entrée DNS
- `enabled` (Boolean) : Indique si l'entrée est active
### 10. udm.routing et udm.routing_config
**Fichiers :** `udm_routing.py` et `udm_routing_config.py`
**Description :** Représentent les configurations de routage dans le système UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel la configuration appartient
- `name` (Char) : Nom de la route
- `destination` (Char) : Destination de la route
- `gateway` (Char) : Passerelle
- `interface` (Char) : Interface réseau
- `enabled` (Boolean) : Indique si la route est active
## Modèles de tableau de bord
### 11. udm.dashboard_metric, udm.dashboard_stat, udm.dashboard_data_point
**Fichiers :** `udm_dashboard_metric.py`, `udm_dashboard_stat.py`, `udm_dashboard_data_point.py`
**Description :** Représentent les métriques et statistiques pour le tableau de bord.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel les données appartiennent
- `name` (Char) : Nom de la métrique
- `value` (Float) : Valeur de la métrique
- `unit` (Char) : Unité de mesure
- `timestamp` (Datetime) : Horodatage de la mesure
- `category` (Selection) : Catégorie de la métrique (réseau, système, sécurité)
## Modèle de configuration du site
### 12. udm.site_configuration
**Fichier :** `udm_site_configuration.py`
**Description :** Représente la configuration d'un site UniFi.
**Champs principaux :**
- `site_id` (Many2one) : Site auquel la configuration appartient
- `config_type` (Selection) : Type de configuration
- `config_data` (Text) : Données de configuration au format JSON
- `version` (Char) : Version de la configuration
- `timestamp` (Datetime) : Horodatage de la configuration
## Relations entre les modèles
Le modèle `udm.site` est au centre de l'architecture et toutes les autres entités lui sont liées. Les relations principales sont :
1. **Site → Réseaux** : Un site peut avoir plusieurs réseaux
2. **Site → Appareils** : Un site peut avoir plusieurs appareils
3. **Site → Utilisateurs** : Un site peut avoir plusieurs utilisateurs
4. **Site → VLANs** : Un site peut avoir plusieurs VLANs
5. **Réseau → VLAN** : Un réseau peut être associé à un VLAN
6. **Utilisateur → Réseau** : Un utilisateur peut être connecté à un réseau
7. **Utilisateur → Appareil** : Un utilisateur peut être associé à un appareil
Cette architecture permet une gestion complète et cohérente des environnements UniFi dans Odoo, avec une séparation claire des différentes composantes du système.