Sensors previously only tracked alarm thresholds (alert_min/alert_max). Missing the third piece of standard process control: the SETPOINT — what the heater/chiller controls toward and what dashboards compare against. Without it an operator can't tell whether 89°C is "on target" or "barely still in spec". Schema changes: **fusion.plating.bath.parameter** (shop-wide default) - New `target_value` field — the default setpoint for this parameter across the shop (e.g. 87°C for ENP bath). Parallel to existing target_min / target_max. **fp.tank.sensor** (per-sensor override) - New `target_value_override` — per-sensor override, zero = inherit from parameter. Matches the existing override pattern for alert thresholds so users can fine-tune per-tank without touching the shop-wide spec. - New `effective_target` / `effective_target_unit` computed — resolves override → parameter default, converts to company-preferred unit. - New `_get_setpoint()` helper for internal use. **fp.tank.reading** - New `deviation_from_target` — signed Δ from the sensor's effective setpoint, in the company's preferred unit. Positive = above, negative = below, zero if no setpoint defined. - New `deviation_band` (selection: on/near/far/out/none) — coarse band for fast visual scanning. `on` = within ±1° of target, `near` = ±3°, `far` = beyond, `out` = actually out of the alarm band. **Views** - Sensor form: split the alerting panel into two groups — "Target (setpoint)" on the left, "Alarm band" on the right. Makes the distinction between "where we want to be" and "where we'd panic" visually obvious. - Reading list: new Δ + band columns, with decoration classes (success/info/warning/danger) so the list reads at a glance. - Tank form Sensors tab: inline setpoint + unit column. Seeded: parameter "Bath Temperature (Hot Process)" now carries target_value=87°C as a realistic ENP shop default. Sensors inherit unless they set their own override. Design decisions kept simple: - Did NOT add a warning band (warn_min/warn_max). Two-tier model (setpoint + alarm band) is enough for the pilot. Can add soft warnings later as a separate commit if ops wants them. - Did NOT auto-control heaters. Setpoint is stored as metadata only; actual heater actuation via IoT is a future phase C project. Verified: setpoint 87°C stored → displays 188.60°F on the live pilot sensor (company pref = F). Each incoming reading correctly computes signed deviation; bands colour the reading list appropriately. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
# Part of the Fusion Plating product family.
|
|
|
|
{
|
|
'name': 'Fusion Plating — IoT Integration',
|
|
'version': '19.0.0.3.0',
|
|
'category': 'Manufacturing/Plating',
|
|
'summary': 'Wire physical tank sensors to Fusion Plating — live '
|
|
'temperature / chemistry readings with auto quality holds '
|
|
'on out-of-spec.',
|
|
'description': """
|
|
Fusion Plating — IoT Integration
|
|
================================
|
|
|
|
Bridges the generic `iot` module (IoT Box + device management) to
|
|
plating-specific models:
|
|
|
|
* ``fp.tank.sensor`` — maps an ``iot.device`` to a
|
|
``fusion.plating.tank`` (or a ``fusion.plating.bath``).
|
|
* ``fp.tank.reading`` — time-series log of every sensor reading.
|
|
* Auto-creates a ``fusion.plating.quality.hold`` when a reading
|
|
falls outside the tank/bath's target range (per
|
|
``fusion.plating.bath.parameter`` spec).
|
|
|
|
Supports both the Odoo-IoT proxy path (Pi running iot_drivers) AND
|
|
a direct HTTP ingest path (``/fp/iot/ingest``) for sensors that
|
|
skip the proxy and POST straight to Odoo with a shared secret.
|
|
|
|
Part of the Fusion Plating product family by Nexa Systems Inc.
|
|
""",
|
|
'author': 'Nexa Systems Inc.',
|
|
'website': 'https://www.nexasystems.ca',
|
|
'maintainer': 'Nexa Systems Inc.',
|
|
'support': 'support@nexasystems.ca',
|
|
'license': 'OPL-1',
|
|
'price': 0.00,
|
|
'currency': 'CAD',
|
|
'depends': [
|
|
'iot',
|
|
'fusion_plating',
|
|
'fusion_plating_quality',
|
|
],
|
|
'data': [
|
|
'security/ir.model.access.csv',
|
|
'data/ir_config_parameter_data.xml',
|
|
'views/fp_tank_sensor_views.xml',
|
|
'views/fp_tank_reading_views.xml',
|
|
'views/fusion_plating_tank_views.xml',
|
|
'views/fp_iot_menu.xml',
|
|
],
|
|
'installable': True,
|
|
'application': False,
|
|
'auto_install': False,
|
|
}
|