OEE tracking for Odoo Community: machine events (industrial IoT) received through a generic webhook, OEE calculated in real time per work center, with hourly history
Connected workshops, maintenance managers and performance managers
Overview
MRP N3 — IoT & Real-Time OEE (DYONYSOS)
Industrial performance tracking (OEE) from machine events, without embedding any OPC-UA or MQTT client in Odoo.
Important — what the app does, and what it does not do. A standard Odoo module has no persistent daemon process: it cannot keep an OPC-UA or MQTT connection open to a PLC. This application therefore does not claim to. It exposes a generic HTTP webhook, secured by a token specific to each work center, which receives machine events (start, stop, good part, scrapped part, breakdown). On the shop floor side, a bridge — a small Python script, a Node-RED flow, or an off-the-shelf OPC-UA/MQTT-to-HTTP gateway — relays PLC events to this webhook. This is a deliberate, documented choice (see the README), not a hidden compromise: it is the same principle DYONYSOS already applies in Bank Sync, Click to Call and Social Marketing.
Access token per work center: generated automatically, can be regenerated in one click.
Webhook `POST /mrp_iot/event/<jeton>`: generic JSON (event type, timestamp, free-form stop reason, quantity); 404 if the token is unknown, 400 if the payload is invalid, 200 otherwise. Each event is stored in full (audit) in the new model dyo.mrp.iot.event.
Real-time OEE per work center: Availability (actual run time / scheduled time over the observed period, based on start/stop/breakdown events), Performance (parts produced × theoretical cycle time / actual run time — cycle time configurable on the work center or on the product in progress), Quality (good / (good + scrapped)), OEE = product of the three factors.
History: hourly snapshot (dyo.mrp.iot.oee.snapshot, cron) in addition to the on-the-fly calculation for the "now" dashboard; chart of recent days by work center.
Optional automatic triggering (disabled by default, per work center): a “start” event starts the pending work order on that work center if it is unambiguous (or referenced unambiguously in the payload); a “stop” event closes it in the same way. In case of ambiguity: no action, a warning is logged.
Demo data: three work centers with a simulated event history for the current day.
Key points
- Generic webhook secured by token, one unique token per work center, regenerable in one click
- Five types of machine events: start, stop, good part, scrapped part, breakdown, with a free-text stop reason
- Every event stored with its raw JSON payload, for audit purposes
Specifications
| Price | €450 excl. VAT |
|---|---|
| License | OPL-1 |
| Odoo series | 19.0: published on the Odoo Apps Store |
| Version | 19.0.1.0.0 |
| Edition | Odoo Community / on-premise |
| Technical name | dyo_mrp_iot |
| Domain | Manufacturing and food trades |
Price excluding VAT as displayed on the Odoo Apps Store; purchase and installation are done on the Store or through your Omnifloo instance.