Développement d’un module Odoo personnalisé pour la gestion d’une couveuse automatique

Si vous souhaitez intégrer des couveuses automatiques avec Odoo, il est possible de développer un module personnalisé qui communique avec les équipements via IoT (Internet of Things) et des capteurs connectés. Voici comment procéder :

1️⃣ Définir les besoins du module

ExigenceDescription
Connexion aux couveusesIntégration avec des incubateurs automatiques via Wi-Fi, Bluetooth, ou un port série (Modbus, MQTT, etc.).
Suivi en temps réelSurveillance des paramètres (température, humidité, taux de CO₂, ventilation, retournement des œufs).
Automatisation des alertesNotifications en cas d’anomalie (température trop basse/élevée, panne du moteur, etc.).
Gestion des cycles d’incubationSuivi du développement des œufs jour après jour, avec indicateurs de viabilité.
Analyse des taux d’éclosionCollecte des données pour améliorer les conditions d’incubation.
Interface utilisateurDashboard pour consulter les performances et gérer les cycles d’incubation.

2️⃣ Développement du module Odoo

📌 Étapes principales :

  1. Créer un module Odoo personnalisé
    • Se rendre dans le répertoire addons d'Odoo et créer un module nommé incubation_management.
    • Générer l’arborescence :
  2. incubation_management/
  3. ├── __init__.py
  4. ├── __manifest__.py
  5. ├── models/
  6. │   ├── incubation.py
  7. ├── views/
  8. │   ├── incubation_view.xml
  9. ├── security/
  10. │   ├── ir.model.access.csv

Définir le modèle de base pour les incubateurs (models/incubation.py

from odoo import models, fields, api


class Incubator(models.Model):

    _name = 'incubation.management'

    _description = 'Gestion de l’incubation des œufs'


    name = fields.Char(string="Nom de la couveuse", required=True)

    temperature = fields.Float(string="Température (°C)")

    humidity = fields.Float(string="Humidité (%)")

    co2_level = fields.Float(string="Niveau CO₂ (ppm)")

    rotation_count = fields.Integer(string="Nombre de retournements")

    status = fields.Selection([

        ('idle', 'En attente'),

        ('running', 'En cours'),

        ('error', 'Erreur'),

    ], default='idle', string="Statut")


Créer une interface de gestion dans Odoo (views/incubation_view.xml)

<odoo>

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

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

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

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

            <form string="Gestion de l’incubation">

                <sheet>

                    <group>

                        <field name="name"/>

                        <field name="temperature"/>

                        <field name="humidity"/>

                        <field name="co2_level"/>

                        <field name="rotation_count"/>

                        <field name="status"/>

                    </group>

                </sheet>

            </form>

        </field>

    </record>


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

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

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

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

            <tree string="Liste des couveuses">

                <field name="name"/>

                <field name="temperature"/>

                <field name="humidity"/>

                <field name="status"/>

            </tree>

        </field>

    </record>

</odoo>


Intégrer l’IoT avec Odoo (lecture des capteurs de la couveuse)

  • Si votre couveuse dispose d’une API ou d’une connexion série, vous pouvez utiliser Odoo IoT Box pour récupérer les données.
  • Exemple d’intégration avec MQTT pour recevoir les valeurs des capteurs en direct :

import paho.mqtt.client as mqtt


class Incubator(models.Model):

    _inherit = 'incubation.management'


    @api.model

    def update_sensor_data(self, topic, message):

        """ Met à jour les données de la couveuse avec les valeurs des capteurs """

        if topic == "incubator/temperature":

            self.temperature = float(message)

        elif topic == "incubator/humidity":

            self.humidity = float(message)

        elif topic == "incubator/co2":

            self.co2_level = float(message)


Automatisation des alertes (via Odoo Notification ou e-mail)

  • Exemple de notification en cas de problème de température :

@api.model

def check_temperature_alerts(self):

    """ Envoi d’une alerte si la température dépasse un seuil critique """

    for incubator in self.search([]):

        if incubator.temperature > 38 or incubator.temperature < 36:

            message = f"Alerte : Température anormale ({incubator.temperature}°C) dans {incubator.name}."

            self.env['mail.message'].create({

                'body': message,

                'message_type': 'notification',

                'res_id': incubator.id,

                'model': 'incubation.management',

            })


3️⃣ Déploiement du module

  1. Placer le module dans le dossier addons/ d’Odoo.
  2. Redémarrer le serveur Odoo :
  3. odoo-bin -c odoo.conf -u incubation_management
  4. Activer le module dans Odoo via AppsModules Personnalisés.

4️⃣ Conclusion

✔️ Ce module permet de gérer et automatiser l’incubation des œufs en intégrant des capteurs IoT.

✔️ Il peut être personnalisé pour ajouter des fonctionnalités avancées (graphique d’évolution des températures, intégration avec des caméras pour la surveillance des poussins, etc.).

✔️ Pour une intégration avancée, vous pouvez connecter Odoo IoT Box ou utiliser des API de couveuses intelligentes.