EZO v1 Contracts
This document locks the v1 contract surface.
Type IDs
sensor.ezo.phsensor.ezo.orpsensor.ezo.ecsensor.ezo.dosensor.ezo.rtdsensor.ezo.hum
Shared safe functions (all families)
findset_ledsleep
Function IDs (per-type, contiguous from 1)
Every EZO family exposes the same three control functions, numbered {1..3} per the Anolis executable profile (§4):
1->find2->set_led3->sleep
Signal table
| Family | Type ID | Signal IDs | Notes |
|---|---|---|---|
| pH | sensor.ezo.ph | ph_value | scalar |
| ORP | sensor.ezo.orp | orp_millivolts | scalar |
| EC | sensor.ezo.ec | ec_conductivity_us_cm, ec_tds_ppm, ec_salinity_psu, ec_specific_gravity | fixed signal set; unavailable outputs return non-OK quality |
| DO | sensor.ezo.do | do_mg_l, do_saturation_pct | fixed signal set; unavailable outputs return non-OK quality |
| RTD | sensor.ezo.rtd | rtd_temperature_c | scalar |
| HUM | sensor.ezo.hum | hum_relative_humidity_pct, hum_temperature_c, hum_dew_point_c | fixed signal set; unavailable outputs return non-OK quality |
Quality policy
- Do not remove configured signal IDs from the contract surface at runtime.
- When an output is unavailable on-device, return the signal with non-OK quality and explanatory metadata.
- Use explicit timestamps for sampled values.
Notes
- HUM/EC/DO field-level mappings are fixed for v1; unavailable outputs are represented with non-OK quality and metadata, not by removing signals.
- Signal IDs are flat lower_snake_case (
^[a-z][a-z0-9_]*$), per the Anolis executable profile §4.
