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 :
- Analyser les images thermiques et extraire les zones de température anormale.
- Détecter des tendances de surchauffe ou de sous-chauffe par apprentissage sur les cycles d’incubation.
- 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