Skip to content

Credok12/Mulimadji

Repository files navigation

MULIMADJI

Vue d'ensemble

MULIMADJI est un système intelligent de surveillance agricole conçu pour détecter les maladies du maïs et surveiller les conditions environnementales à l'aide de capteurs IoT. Le système combine la détection de maladies basée sur l'apprentissage automatique avec la surveillance environnementale en temps réel pour aider les agriculteurs à optimiser la santé et le rendement des cultures.

Architecture du Système

Architecture Backend

  • Framework : Flask (Python 3.11) avec serveur WSGI gunicorn
  • Machine Learning : Modèle CNN basé sur PyTorch utilisant ResNet18 pour la classification des maladies du maïs
  • Prédiction Météo : Modèle Scikit-learn pour les prévisions météorologiques
  • Stockage de Données : Base de données PostgreSQL 16 avec modélisation complète + stockage en mémoire pour la compatibilité
  • API : Endpoints RESTful pour les données des capteurs, la détection de maladies et le contrôle des appareils

Architecture Frontend

  • Framework UI : Bootstrap 5 avec thème sombre
  • Visualisation : Chart.js pour la visualisation des données de capteurs en temps réel
  • Éléments Interactifs : Intégration de caméra pour la détection de maladies, mises à jour du tableau de bord en temps réel
  • Design Responsive : Approche mobile-first avec des mises en page adaptatives

Base de Données PostgreSQL 16 - Structure Complète

Schéma de Modélisation Détaillé

1. Table sensor_readings - Données Capteurs IoT

CREATE TABLE sensor_readings (
    id SERIAL PRIMARY KEY,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    
    -- Capteur DHT22
    temperature_dht FLOAT,
    humidity_dht FLOAT,
    
    -- Capteur BMP180  
    temperature_bmp FLOAT,
    pressure FLOAT,
    
    -- Capteur Lumière
    light_percent FLOAT,
    light_raw INTEGER,
    
    -- Capteur Sol
    soil_percent FLOAT,
    soil_raw INTEGER,
    
    -- Capteur pH
    ph_value FLOAT,
    
    -- Métadonnées
    device_id VARCHAR(50) DEFAULT 'ESP32_001',
    location VARCHAR(100) DEFAULT 'Field_A'
);
CREATE INDEX idx_sensor_timestamp ON sensor_readings(timestamp);

2. Table disease_detections - Analyses Maladies IA

CREATE TABLE disease_detections (
    id SERIAL PRIMARY KEY,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    
    -- Image et stockage
    image_filename VARCHAR(255) NOT NULL,
    image_path VARCHAR(500),
    image_size_bytes INTEGER,
    
    -- Résultats ML
    predicted_class VARCHAR(50) NOT NULL,
    confidence FLOAT NOT NULL,
    
    -- Informations médicales
    disease_name_fr VARCHAR(100),
    severity VARCHAR(20),
    treatment_recommendation TEXT,
    
    -- Métadonnées
    model_version VARCHAR(20) DEFAULT 'v1.0',
    processing_time_ms INTEGER,
    user_notes TEXT
);
CREATE INDEX idx_disease_timestamp ON disease_detections(timestamp);
CREATE INDEX idx_disease_class ON disease_detections(predicted_class);

3. Table weather_predictions - Prévisions Météo ML

CREATE TABLE weather_predictions (
    id SERIAL PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    prediction_time TIMESTAMP NOT NULL,
    
    -- Prédictions calculées
    predicted_temperature FLOAT,
    predicted_humidity FLOAT,
    predicted_pressure FLOAT,
    
    -- Données source
    source_temperature FLOAT,
    source_humidity FLOAT,
    source_pressure FLOAT,
    
    -- Qualité prédiction
    model_version VARCHAR(20) DEFAULT 'v1.0',
    confidence_score FLOAT,
    prediction_horizon_hours INTEGER DEFAULT 1
);
CREATE INDEX idx_weather_created ON weather_predictions(created_at);
CREATE INDEX idx_weather_prediction_time ON weather_predictions(prediction_time);

4. Table device_controls - Commandes IoT

CREATE TABLE device_controls (
    id SERIAL PRIMARY KEY,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    
    -- Contrôle LED RGB
    led_color VARCHAR(20),
    led_pattern VARCHAR(20),
    led_manual_mode BOOLEAN DEFAULT FALSE,
    
    -- Contrôle Servo (Arrosage)
    servo_angle INTEGER,
    servo_manual_mode BOOLEAN DEFAULT FALSE,
    watering_active BOOLEAN DEFAULT FALSE,
    
    -- Contexte décisionnel
    trigger_reason VARCHAR(100),
    alert_level VARCHAR(20),
    
    -- Conditions environnementales
    condition_temperature FLOAT,
    condition_humidity FLOAT,
    condition_soil_moisture FLOAT
);
CREATE INDEX idx_control_timestamp ON device_controls(timestamp);
CREATE INDEX idx_control_trigger ON device_controls(trigger_reason);

5. Table system_logs - Journalisation Système

CREATE TABLE system_logs (
    id SERIAL PRIMARY KEY,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    
    -- Classification
    level VARCHAR(10) NOT NULL CHECK (level IN ('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL')),
    category VARCHAR(30) NOT NULL CHECK (category IN ('SENSOR', 'DISEASE', 'WEATHER', 'DEVICE', 'SYSTEM')),
    
    -- Contenu
    message TEXT NOT NULL,
    details TEXT,
    
    -- Traçabilité
    component VARCHAR(50),
    user_ip VARCHAR(45),
    session_id VARCHAR(100)
);
CREATE INDEX idx_logs_timestamp ON system_logs(timestamp);
CREATE INDEX idx_logs_level ON system_logs(level);
CREATE INDEX idx_logs_category ON system_logs(category);

6. Table correlation_analyses - Analyses Avancées

CREATE TABLE correlation_analyses (
    id SERIAL PRIMARY KEY,
    analysis_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    
    -- Période d'analyse
    start_date TIMESTAMP NOT NULL,
    end_date TIMESTAMP NOT NULL,
    
    -- Corrélations calculées
    temp_humidity_correlation FLOAT,
    soil_weather_correlation FLOAT,
    disease_environment_correlation FLOAT,
    
    -- Intelligence automatique
    dominant_factor VARCHAR(50),
    risk_level VARCHAR(20),
    recommendations TEXT,
    
    -- Métadonnées statistiques
    sample_size INTEGER,
    confidence_level FLOAT DEFAULT 0.95
);
CREATE INDEX idx_correlation_date ON correlation_analyses(analysis_date);

Relations et Contraintes

Clés Étrangères Conceptuelles :

  • device_controls.timestampsensor_readings.timestamp (corrélation temporelle)
  • weather_predictions.created_atsensor_readings.timestamp (données source)
  • correlation_analyses.start_date/end_datesensor_readings.timestamp (période analysée)

Contraintes de Domaine :

  • Températures : -50°C à +100°C
  • Humidité : 0% à 100%
  • Angles servo : 0° à 180°
  • Confiance ML : 0.0 à 1.0
  • pH : 0 à 14

Optimisations Performances

Index Composites :

CREATE INDEX idx_sensor_device_time ON sensor_readings(device_id, timestamp DESC);
CREATE INDEX idx_disease_class_time ON disease_detections(predicted_class, timestamp DESC);
CREATE INDEX idx_control_trigger_time ON device_controls(trigger_reason, timestamp DESC);

Partitionnement Temporel (Future):

  • Tables partitionnées par mois pour sensor_readings
  • Archivage automatique après 2 ans
  • Compression des données anciennes

Sauvegardes et Intégrité

Stratégie de Sauvegarde :

  • Sauvegarde continue via PostgreSQL WAL
  • Snapshot quotidien complet
  • Réplication en temps réel (production)
  • Vérification d'intégrité hebdomadaire

Politiques de Rétention :

  • sensor_readings : 2 ans (analyse saisonnière)
  • disease_detections : 1 an (amélioration modèles)
  • weather_predictions : 1 an (validation précision)
  • device_controls : 6 mois (audit commandes)
  • system_logs : 6 mois (débogage)
  • correlation_analyses : Permanent (intelligence historique)

Composants Clés

1. Système de Détection de Maladies

  • Modèle : CNN basé sur ResNet18 pour classifier les maladies du maïs
  • Classes supportées : 4 types (Blight, Common Rust, Gray Leaf Spot, Healthy)
  • Fonctionnalités : Capture d'image en temps réel et traitement
  • Recommandations : Suggestions de traitement pour les maladies détectées
  • Stockage : Toutes les détections sauvegardées en base avec métadonnées complètes

2. Surveillance Environnementale

  • Capteur DHT22 : température et humidité
  • Capteur BMP180 : pression atmosphérique et température
  • Capteur de lumière : surveillance photosynthétique
  • Capteur de sol : humidité et pH
  • Visualisation : Graphiques en temps réel avec Chart.js
  • Historique : Toutes les lectures sauvegardées avec pagination et filtres

3. Contrôle des Appareils IoT

  • Système LED : Indication automatique de l'état de santé du maïs avec codes couleur
  • Système d'arrosage : Servo-moteur contrôlé pour arrosage automatique
  • Gestion à distance : Capacités de gestion des appareils à distance
  • Historique : Traçabilité complète de toutes les commandes

4. Prédiction Météorologique

  • Modèle ML : Prévisions météorologiques locales
  • Intégration : Utilise les données des capteurs environnementaux pour améliorer la précision
  • Stockage : Historique complet des prédictions avec scores de confiance

Flux de Données

  1. Collecte de Données : Les capteurs IoT collectent les données environnementales
  2. Traitement : Les données brutes sont traitées et stockées en base PostgreSQL + mémoire
  3. Mises à jour Temps Réel : Le tableau de bord reçoit des mises à jour toutes les 5 secondes via AJAX
  4. Détection de Maladies : Les utilisateurs capturent des images via l'interface web, traitées par le modèle CNN
  5. Contrôle Automatique : Le système ajuste automatiquement les indicateurs LED et l'arrosage
  6. Prédiction Météo : Les données historiques alimentent le modèle de prédiction météorologique
  7. Historique : Interface complète pour consulter, filtrer et exporter toutes les données

Interface Utilisateur

Dashboard Principal (/)

  • Cartes de Valeurs Actuelles : Affichage en temps réel des lectures de capteurs
  • Graphiques Interactifs : Visualisation des tendances avec Chart.js
  • Contrôles IoT : Boutons pour contrôler LED et servo-moteur
  • État du Maïs : Indicateurs de santé avec recommandations

Détection de Maladies (/disease_detection)

  • Capture d'Image : Interface de téléchargement d'images
  • Résultats ML : Affichage des prédictions avec confiance
  • Recommandations : Conseils de traitement automatiques

Historique (/history)

  • Onglets Organisés :
    • Données Capteurs (avec filtres et export CSV)
    • Détections de Maladies (avec cartes visuelles)
    • Prédictions Météo (tableau chronologique)
    • Contrôles IoT (historique des commandes)
  • Pagination : Navigation efficace dans les grandes quantités de données
  • Filtres Avancés : Recherche par date, type, dispositif
  • Export : Téléchargement CSV des données capteurs

Installation et Déploiement

Prérequis

  • Python 3.11+
  • PostgreSQL 16
  • Environnement Render avec variables d'environnement configurées

Installer les dépendances

pip install -r requirements.txt

Configuration de la Base de Données

  1. Création automatique : Les tables sont créées automatiquement au démarrage
  2. Variables d'environnement : DATABASE_URL, PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE
  3. Modélisation : 6 tables principales avec relations et index optimisés

Démarrage

# Via gunicorn (production)
gunicorn --bind 0.0.0.0:10000 --reuse-port --reload main:app

# Via Python (développement)
python app.py

Workflow Render

name: Start application
command: gunicorn --bind 0.0.0.0:10000 --reuse-port --reload main:app

API Endpoints

Capteurs

  • POST /update_sensor - Recevoir données des capteurs ESP32
  • GET /api/latest - Dernière lecture avec prédiction météo
  • GET /api/history - Historique des lectures (mémoire)
  • GET /api/stats - Statistiques de base

Détection de Maladies

  • GET /disease_detection - Page de détection
  • POST /predict_disease - API de prédiction avec upload d'image

Contrôle IoT

  • GET /get_led_command - Commande LED actuelle pour ESP32
  • POST /set_led - Définir couleur LED ou mode auto
  • GET /get_servo_command - Commande servo actuelle
  • POST /set_servo - Contrôler angle servo ou mode auto

État du Maïs

  • GET /corn_status - État détaillé de cultivation avec recommandations

Historique (Base de données)

  • GET /api/history/sensors - Historique capteurs avec pagination et filtres
  • GET /api/history/diseases - Historique détections de maladies
  • GET /api/history/predictions - Historique prédictions météo
  • GET /api/history/controls - Historique contrôles dispositifs

Système de Surveillance de la Santé du Maïs

Codes Couleur LED

  • VERT : Conditions optimales (toutes les valeurs dans les plages idéales)
  • JAUNE : Avertissement (1 paramètre légèrement hors plage)
  • CYAN : Problème température/humidité combiné
  • BLEU : Arrosage nécessaire (humidité sol < 50%)
  • MAGENTA : pH problématique (< 5.5 ou > 7.5)
  • ROUGE : Critique (1+ paramètres critiques ou 2+ avertissements)
  • BLANC : Données manquantes

Plages Optimales

  • Température : 18-24°C
  • Humidité Air : 50-70%
  • Humidité Sol : 60-80%
  • pH : 5.8-7.0
  • Lumière : >50%

Système d'Arrosage Automatique

  • Arrosage Urgent : Sol < 40% (servo 90°)
  • Arrosage Léger : Température > 26°C et sol < 50% (servo 45°)
  • Repos : Conditions normales (servo 0°)

Modèles d'Apprentissage Automatique

Détection de Maladies

  • Architecture : ResNet18 personnalisé avec 4 classes de sortie
  • Classes : Blight, Common_Rust, Gray_Leaf_Spot, Healthy
  • Préprocessing : Redimensionnement 256x256, normalisation ImageNet
  • Fichier : model_maladies.pth

Prédiction Météorologique

  • Type : Modèle de régression (Scikit-learn)
  • Entrées : Température, humidité, pression actuelles
  • Sorties : Prédictions pour les 6 prochaines heures
  • Fichier : meteo_model.joblib

Sécurité et Robustesse

Validation des Données

  • Images : Validation format, taille max 10MB, types autorisés
  • Capteurs : Vérification plages de valeurs, gestion erreurs
  • Base de données : Transactions avec rollback automatique

Gestion d'Erreurs

  • Fallback : Stockage mémoire si base de données indisponible
  • Logging : Système de logs complet avec niveaux
  • Retry Logic : Reconnexion automatique base de données

Performance

  • Pagination : Gestion efficace des grandes quantités de données
  • Index : Optimisation des requêtes avec index sur timestamps
  • Caching : Stockage hybride mémoire + base de données

Évolutions Futures

Fonctionnalités Prévues

  1. Alertes : Notifications push/email pour conditions critiques
  2. Rapports : Génération automatique de rapports agricoles
  3. Machine Learning : Amélioration continue des modèles avec nouvelles données
  4. API Mobile : Application mobile pour agriculteurs
  5. Intégration : Connexion avec d'autres systèmes agricoles

Scalabilité

  • Multi-fermes : Support de plusieurs exploitations
  • Cloud : Migration vers infrastructure cloud
  • IoT : Support de capteurs additionnels
  • IA : Modèles prédictifs plus sophistiqués

Support et Maintenance

Logs et Monitoring

  • Système de logs : 5 niveaux (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  • Base de données : Table system_logs pour traçabilité
  • Performance : Métriques de temps de traitement

Backup et Récupération

  • PostgreSQL : Sauvegarde automatique des données
  • Modèles ML : Versioning des modèles d'apprentissage
  • Configuration : Sauvegarde des paramètres système

Contact : Pour toute question technique ou support, contactez nous

Version : 2.1 (Juin 2025)

Licence : Système propriétaire pour applications agricoles IoT

About

Smart Farm plateform

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors