{
    "key": "mlx90614",
    "kind": "sensor",
    "model": {
        "aliases": [
            "mlx90614"
        ]
    },
    "driver": {
        "runtime": {
            "init": {
                "args": {
                    "i2c": "board.I2C()"
                },
                "class": "adafruit_mlx90614.MLX90614"
            },
            "apt_packages": [],
            "pip_packages": [
                "adafruit-circuitpython-mlx90614"
            ],
            "python_module": "drivers.mlx90614"
        },
        "targets": [
            "raspberrypi"
        ],
        "verified": {
            "by": null,
            "os": null,
            "date": null,
            "board": null,
            "reviewed_by": null,
            "evidence_url": null
        },
        "interface": "i2c",
        "connection": {
            "pins": [
                {
                    "role": "sda",
                    "notes": null,
                    "required": true
                },
                {
                    "role": "scl",
                    "notes": null,
                    "required": true
                }
            ],
            "i2c_addresses": [
                "0x5A"
            ],
            "supply_voltage": "3.3V",
            "level_shift_required": null
        },
        "constraints": {
            "warmup_seconds": null,
            "read_timeout_seconds": 2,
            "min_read_interval_seconds": 1
        },
        "failure_modes": [
            "Requires I2C repeated start. The Raspberry Pi I2C driver does not issue it by default and the sensor returns errors until combined transfers are enabled.",
            "Measures whatever fills its field of view, which widens with distance. An object temperature reading is only meaningful when the target fills the cone.",
            "Ambient and object channels drift together with the sensor body temperature. Allow it to reach thermal equilibrium before trusting readings."
        ]
    },
    "source": "platform-seed",
    "status": "draft",
    "platform": {
        "name": "MLX90614 IR Non-contact Thermometer",
        "protocol": "i2c",
        "readings": [
            {
                "slug": "object-temperature",
                "unit": "degrees celsius",
                "label": "Object Temperature",
                "data_type": "float",
                "range_max": 380,
                "range_min": -70,
                "unit_symbol": "°C",
                "device_class": "temperature",
                "decimal_places": 2,
                "threshold_crit_low": null,
                "threshold_warn_low": null,
                "threshold_crit_high": 80,
                "threshold_warn_high": 60
            },
            {
                "slug": "ambient-temperature",
                "unit": "degrees celsius",
                "label": "Ambient Temperature",
                "data_type": "float",
                "range_max": 125,
                "range_min": -40,
                "unit_symbol": "°C",
                "device_class": "temperature",
                "decimal_places": 2,
                "threshold_crit_low": 0,
                "threshold_warn_low": 10,
                "threshold_crit_high": 50,
                "threshold_warn_high": 40
            }
        ],
        "description": "Infrared thermometer for non-contact surface temperature measurement over I2C. Factory calibrated.",
        "sensor_type": "radiation",
        "manufacturer": "Melexis",
        "model_number": "MLX90614",
        "datasheet_url": "https://www.melexis.com/en/documents/documentation/datasheets/datasheet-mlx90614",
        "read_interval_seconds": 10
    },
    "revision": 1
}