intégrer des caméras thermiques pour analyser l’évolution des œufs

il est tout à fait possible d’intégrer des caméras thermiques pour analyser l’évolution des œufs dans une couveuse avec une précision de quelques dizaines de degrés. Cela permet de surveiller les variations thermiques sur chaque œuf et d’optimiser l’incubation.

1️⃣ Matériel recommandé pour la capture thermique

Il existe plusieurs options pour ajouter une caméra thermique à une couveuse et l’intégrer à Odoo :

Caméra ThermiqueTechnologieRésolution thermiqueInterfacePrix estimé
FLIR Lepton 3.5Microbolomètre IR160x120 pxSPI/UART150-250€
Seek Thermal CompactThermique IR206x156 pxUSB-C250-400€
MLX90640 (Melexis)Matrice IR (32x24)32x24 pxI2C60-100€
HIKMicro Pocket2Thermique avancée256x192 pxWi-Fi, USB600-800€

🔹 Recommandation :

  • FLIR Lepton 3.5 ou MLX90640 sont de bonnes options pour une intégration DIY sur Raspberry Pi.
  • HIKMicro ou Seek Thermal Compact offrent une meilleure résolution mais nécessitent un traitement d’image avancé.

2️⃣ Installation d’une caméra thermique sur Raspberry Pi

Si vous utilisez un FLIR Lepton 3.5 ou MLX90640, voici comment les intégrer sur un Raspberry Pi connecté à Odoo :

📌 Matériel nécessaire

  • Raspberry Pi 4 (ou Pi 3B+)
  • Caméra thermique FLIR Lepton 3.5 avec module PureThermal ou MLX90640
  • Module SPI/I2C (suivant le capteur)

📌 Installation des bibliothèques

Pour FLIR Lepton 3.5 :

sudo apt update

sudo apt install python3-pip

pip3 install pylepton


Pour MLX90640 :

git clone https://github.com/pimoroni/mlx90640-library

cd mlx90640-library/python

pip3 install -r requirements.txt


3️⃣ Acquisition des images thermiques

🔹 Capturer des images avec FLIR Lepton

🔹 Capturer des images avec FLIR Lepton

import pylepton

import numpy as np

import cv2


def capture_image():

    with pylepton.Lepton() as lepton:

        image, _ = lepton.capture()

        image = np.uint8(image / 256)

        cv2.imwrite("thermal_image.jpg", image)


capture_image()


Ce script capture une image thermique et l’enregistre en .jpg.

🔹 Acquisition de température avec MLX90640

import board

import busio

import adafruit_mlx90640

import numpy as np


i2c = busio.I2C(board.SCL, board.SDA)

mlx = adafruit_mlx90640.MLX90640(i2c)

mlx.refresh_rate = adafruit_mlx90640.RefreshRate.REFRESH_2_HZ


frame = np.zeros((24, 32))  # Matrice de température

mlx.getFrame(frame)

print(frame)


Cela retourne une matrice de 32x24 valeurs de température en degrés Celsius.


4️⃣ Intégration avec Odoo

📌 Créer un modèle Odoo pour stocker les données thermiques


from odoo import models, fields, api


class ThermalImage(models.Model):

    _name = 'incubation.thermal'

    _description = 'Image thermique des œufs'


    name = fields.Char(string="Nom de la capture")

    image = fields.Binary(string="Image Thermique")

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


✔ Ce script capture une image thermique et l’envoie à Odoo.


5️⃣ Visualisation et Analyse dans Odoo

🔹 Créer une interface graphique pour visualiser les images

Ajouter un affichage dans Odoo Studio ou un fichier XML :

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

    <field name="name">incubation.thermal.form</field>

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

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

        <form string="Analyse thermique">

            <sheet>

                <group>

                    <field name="name"/>

                    <field name="timestamp"/>

                    <field name="image" widget="image"/>

                </group>

            </sheet>

        </form>

    </field>

</record>


Ce formulaire permet de visualiser directement les images thermiques dans Odoo.

🔹 Utiliser un algorithme de détection thermique

Si vous voulez détecter des anomalies thermiques (œufs non viables, température instable) :

import cv2

import numpy as np


def analyze_thermal_image(image_path):

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

    _, thresholded = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY)


    # Détecter les variations thermiques

    contours, _ = cv2.findContours(thresholded, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    for cnt in contours:

        x, y, w, h = cv2.boundingRect(cnt)

        cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)


    cv2.imwrite("thermal_analysis.jpg", image)


analyze_thermal_image("thermal_image.jpg")


Les zones trop chaudes ou trop froides seront mises en évidence pour une analyse avancée.

6️⃣ Conclusion

Intégration de caméras thermiques possible avec Odoo via Raspberry Pi.

Stockage et visualisation des images thermiques dans Odoo.

Analyse des anomalies thermiques pour optimiser l’incubation.

Utilisation d’algorithmes d’analyse d’image pour détecter les problèmes.