Ajout d’un modèle d’intelligence artificielle (IA) pour analyser en temps réel les températures et générer des alertes automatiques

🚀 Ajout d’un modèle d’intelligence artificielle (IA) pour analyser en temps réel les températures et générer des alertes automatiques

Pour améliorer la surveillance des œufs en incubation, nous allons intégrer un modèle d’IA basé sur du Machine Learning (ML). L’objectif est d’analyser en temps réel les variations thermiques, de détecter les anomalies, et de générer des alertes dans Odoo en cas de température critique.

1️⃣ Définition du Modèle d’IA

Notre modèle va :

  1. Analyser les images thermiques et extraire les zones de température anormale.
  2. Détecter des tendances de surchauffe ou de sous-chauffe par apprentissage sur les cycles d’incubation.
  3. Envoyer des alertes dans Odoo si des écarts critiques sont détectés.

Nous utiliserons :

  • OpenCV pour le traitement des images thermiques.
  • TensorFlow / PyTorch pour entraîner un modèle sur des images d'œufs incubés.
  • Odoo API pour stocker les prédictions et générer des alertes.

2️⃣ Installation des Bibliothèques

Sur votre Raspberry Pi / Serveur Odoo, installez les dépendances :

sudo apt update

sudo apt install python3-pip

pip3 install numpy opencv-python tensorflow paho-mqtt requests



3️⃣ Acquisition et Prétraitement des Données

Nous capturons des images avec la caméra thermique FLIR Lepton 3.5 ou MLX90640, puis nous extrayons les températures.

📌 Lecture et traitement d'une image thermique

import cv2

import numpy as np


def preprocess_thermal_image(image_path):

    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

    resized = cv2.resize(image, (64, 64))  # Normalisation

    normalized = resized / 255.0

    return np.expand_dims(normalized, axis=0)  # Ajout d'une dimension pour l'IA


image_data = preprocess_thermal_image("thermal_image.jpg")


4️⃣ Entraînement d’un Modèle IA

Nous utilisons TensorFlow pour entraîner un modèle sur des images d’œufs incubés.

📌 Création d’un modèle CNN (réseau de neurones convolutif)

import tensorflow as tf

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense


# Définition du modèle

model = Sequential([

    Conv2D(32, (3,3), activation='relu', input_shape=(64, 64, 1)),

    MaxPooling2D((2,2)),

    Conv2D(64, (3,3), activation='relu'),

    MaxPooling2D((2,2)),

    Flatten(),

    Dense(128, activation='relu'),

    Dense(2, activation='softmax')  # 2 classes : "Normal" / "Anomalie"

])


# Compilation

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])


# Entraînement sur un dataset d'images thermiques

# (Images catégorisées en "Température normale" et "Température critique")

# model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))


# Sauvegarde du modèle entraîné

model.save("thermal_model.h5")


5️⃣ Détection Automatique d’Anomalies

Nous chargeons le modèle entraîné et l’utilisons pour prédire des anomalies thermiques en temps réel.

📌 Prédiction sur une image thermique

def predict_temperature_anomaly(image_path, model_path="thermal_model.h5"):

    model = tf.keras.models.load_model(model_path)

    image_data = preprocess_thermal_image(image_path)

    

    prediction = model.predict(image_data)

    anomaly_score = prediction[0][1]  # Score de probabilité d’anomalie


    return anomaly_score > 0.7  # Seuil de détection


is_anomalous = predict_temperature_anomaly("thermal_image.jpg")

print("⚠ Anomalie détectée !" if is_anomalous else "✅ Température normale.")


6️⃣ Envoi des alertes dans Odoo

Si une anomalie thermique est détectée, nous enregistrons l’alerte dans Odoo et envoyons une notification.

📌 Connexion à l’API d’Odoo et création d’une alerte

import requests


ODOO_URL = "http://localhost:8069"

DB = "odoodb"

USERNAME = "admin"

PASSWORD = "admin"


def send_alert_to_odoo(image_path):

    if predict_temperature_anomaly(image_path):

        data = {

            "jsonrpc": "2.0",

            "method": "call",

            "params": {

                "model": "incubation.alert",

                "method": "create",

                "args": [{"name": "Alerte thermique", "description": "Température critique détectée !"}]

            },

            "id": 1

        }

        response = requests.post(f"{ODOO_URL}/web/dataset/call_kw", json=data, auth=(USERNAME, PASSWORD))

        print("🚨 Alerte envoyée à Odoo !")


send_alert_to_odoo("thermal_image.jpg")


7️⃣ Visualisation et Notifications dans Odoo

Nous ajoutons une interface d’alerte pour voir les anomalies directement dans Odoo.

📌 Créer un modèle Odoo pour stocker les alertes

from odoo import models, fields, api


class ThermalAlert(models.Model):

    _name = 'incubation.alert'

    _description = 'Alertes Thermiques'


    name = fields.Char(string="Nom de l’alerte")

    description = fields.Text(string="Description")

    timestamp = fields.Datetime(string="Date et heure", default=fields.Datetime.now)


📌 Vue XML pour l'affichage des alertes dans Odoo

<record id="view_incubation_alert_tree" model="ir.ui.view">

    <field name="name">incubation.alert.tree</field>

    <field name="model">incubation.alert</field>

    <field name="arch" type="xml">

        <tree string="Alertes Thermiques">

            <field name="name"/>

            <field name="description"/>

            <field name="timestamp"/>

        </tree>

    </field>

</record>



8️⃣ Conclusion et Perspectives

Analyse thermique en temps réel avec IA et caméra thermique

Détection automatique des anomalies de température

Envoi d’alertes automatiques dans Odoo

Stockage et visualisation des données dans Odoo BI