Files
traceability/public/data/traceability_export.csv
2026-02-01 16:38:08 +01:00

294 KiB
Raw Permalink Blame History

1IDTypeStatusTitleDescriptionParent_IDRelations
238TaskIn progressreview sensor list [ammonia]**Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485). <br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor (type)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Manufacturer (origin)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Est. price (USD)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Comm. protocol / outputs</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">NH₃ range (ppm)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Accuracy / precision</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Operating voltage</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Availability</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Datasheet</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Product link</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">PCB-solderable?</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DOL 53 Ammonia Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">DOL-sensors (Denmark)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$1,389</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (010V or 420mA)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±1.5ppm or ±10%</p></td><td class="op-uc-table--cell"><p class="op-uc-p">24VDC (1530VDC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Available worldwide via distributors</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Spec]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Manufacturer</p></td><td class="op-uc-table--cell"><p class="op-uc-p">No (probe)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DOL 51 (Air-clean)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">DOL-sensors (Denmark)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$4,182</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (010V or 420mA)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">050</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±1.5ppm or ±10%</p></td><td class="op-uc-table--cell"><p class="op-uc-p">24VDC (2226VDC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High-humidity tolerant (0100% RH)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Spec]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Manufacturer</p></td><td class="op-uc-table--cell"><p class="op-uc-p">No (probe)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Fancom NH₃ Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Fancom (Netherlands)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (est. ~$1,000)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (010V)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±1.5ppm or ±10%</p></td><td class="op-uc-table--cell"><p class="op-uc-p">24VDC (1530VDC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Widely used in EU farms</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Factsheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Manufacturer</p></td><td class="op-uc-table--cell"><p class="op-uc-p">No (probe)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Aranet NH₃ Kit (0100ppm)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Aranet (Lithuania)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$1,770</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Wireless (LoRaWAN, via Aranet transmitter)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">(accuracy not given)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">24VDC supply</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial IoT sensor kit (includes DOL-53)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Manual]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Manufacturer / Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">No (kit)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGX-4NH3-100</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Amphenol SGX (UK)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$85</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical (current output)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±0.5ppm (500 ppb)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"> (no external supply)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sold by electronics distributors (e.g. Newark)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Datasheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Alphasense NH3-B1</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Alphasense (UK)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$242</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical (nA output, requires amplifier)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">2060nA/ppm sensitivity (≈0.3ppm resolution)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"> (uses internal bias ~200mV)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Available via distributors (e.g. WinSensors)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Specs]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Membrapor NH3/MR-100</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Membrapor (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (~$100)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical (110nA/ppm)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">&lt;0.5ppm resolution</p></td><td class="op-uc-table--cell"><p class="op-uc-p"> (passive)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Niche sensor; available through specialty suppliers</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Datasheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Figaro TGS826</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Figaro (Japan)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$5060</p></td><td class="op-uc-table--cell"><p class="op-uc-p">MOS (resistive; needs external circuit)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~30300</p></td><td class="op-uc-table--cell"><p class="op-uc-p">(no specd ppm accuracy; rough resistive)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Heater 5V (833mW)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Widely available sensor element</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Datasheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Winsen MQ-137</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Winsen (China)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$64</p></td><td class="op-uc-table--cell"><p class="op-uc-p">MOS (analog voltage output)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~101000 (module 5500)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">(low-precision, requires calibration)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">5VDC (heater)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Off-the-shelf/electronics hobbyist modules</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[SparkFun PDF]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SparkFun</p></td><td class="op-uc-table--cell"><p class="op-uc-p">No (sensor pins)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>L-com SRAQ-G216 (MQ-137)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">L-com (USA)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$210 (£172)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog + digital TTL outputs</p></td><td class="op-uc-table--cell"><p class="op-uc-p">5500</p></td><td class="op-uc-table--cell"><p class="op-uc-p">(sensitivity adjustable; no specd accuracy)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">5VDC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Commercial module for NH₃</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Datasheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGX MiCS-6814</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">SGX Sensortech (Netherlands)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$20 (module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog resistances for CO/NO₂/NH₃</p></td><td class="op-uc-table--cell"><p class="op-uc-p">1300</p></td><td class="op-uc-table--cell"><p class="op-uc-p">(see graph; low ppm sensitivity)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">5VDC (heater)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-gas MEMS module, available from electronics suppliers</p></td><td class="op-uc-table--cell"><p class="op-uc-p">[Datasheet]</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes</p></td></tr></tbody></table></figure><br> <br> ## ✅ **Industrial-Grade &amp; Reliable NH₃ Sensors** These sensors are designed for **continuous monitoring in harsh environments**, offer repeatability/accuracy, longer life, robust housings, and are used in ventilation control, poultry/livestock farms, safety systems, or industrial automation. <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Industrial Grade?</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why (Summary)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DOL 53 Ammonia Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Designed specifically for livestock/farm monitoring, long life, replaceable head, 36 month service life, IP65 protection and analog 420 mA/010 V outputs for PLC/automation systems. (<a class="op-uc-link" href="https://pro.aranet.com/uploads/2022/03/en-604270-dol-53-ammonia-sensor-tug-20210111-1-1.pdf?utm_source=chatgpt.com">pro.aranet.com</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DOL 51 Ammonia Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Similar to DOL 53 but for post-air-cleaning environments; built for high humidity and continuous use.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Fancom NH₃ Sensor Probe</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Plug-and-play ammonia probe designed for climate control in agricultural settings (poultry houses).</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Aranet NH₃ Sensor Kit</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Includes DOL sensor with industrial transmitter (IP65) and integration options; intended for livestock gas monitoring. (<a class="op-uc-link" href="https://pro.aranet.com/products/aranet-nh3-sensor-kit/?utm_source=chatgpt.com">pro.aranet.com</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>NexaSens Ammonia Gas Sensor (industrial module)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Rugged design, 420 mA &amp; RS-485 outputs, robust humidity/temperature range, made for industrial NH₃ applications. (<a class="op-uc-link" href="https://nexasens.com/product/ammonia-gas-sensor/?utm_source=chatgpt.com">SENSORS &amp; ROBOTICS</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensorix NH₃ Series (1005000 ppm)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">✔️ Industrial</p></td><td class="op-uc-table--cell"><p class="op-uc-p">German electrochemical sensors with class-leading stability and selectivity, ideal for industrial air monitoring. (<a class="op-uc-link" href="https://sensorix.com/oem-sensors/nh3/?utm_source=chatgpt.com">sensorix.com</a>)</p></td></tr></tbody></table></figure> **Why these are industrial grade:** ✔ Designed for continuous operation ✔ Can handle humidity/temperature variations seen in barns ✔ Outputs compatible with PLC/automation (4-20 mA, RS-485) ✔ Often comply with safety standards for industrial gas detection ✔ Typically longer lifetime and defined calibration cycles ## ⚠️ **Semi-Industrial / Intermediate Reliability** These can be used in monitoring systems _if properly calibrated and used with protective housings &amp; signal conditioning_, but they are **not as robust as true industrial products** and may require more frequent calibration or additional circuitry. <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Industrial Grade?</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Notes</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGX-4NH3-100</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">⚠️ Semi-industrial / sensor element</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical with industrial footprint, but requires own housing &amp; signal circuitry. Typically used in industrial detectors, not as standalone outdoor probes. (<a class="op-uc-link" href="https://nl.rs-online.com/web/p/environmental-sensor-ics/2541598?utm_source=chatgpt.com">RS Components</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Alphasense NH3-B1</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">⚠️ Semi-industrial / OEM</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High-quality electrochemical sensor elements from established industrial supplier, but needs proper packaging &amp; conditioning hardware. (<a class="op-uc-link" href="https://www.alphasense.com/products/view-by-target-gas/ammonia-sensors-nh3?utm_source=chatgpt.com">alphasense.com</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Membrapor NH3 (EC)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">⚠️ Semi-industrial / OEM</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical cell that must be integrated into a system; stable but needs proper circuit and housing. (<a class="op-uc-link" href="https://gasdetect.com/ammonia-3-series-gas-sensor/?utm_source=chatgpt.com">gasdetect.com</a>)</p></td></tr></tbody></table></figure> **Reasoning:** These are **sensor elements** from industrial suppliers, but they lack ruggedized packaging and integrated outputs. They are often used inside industrial analyzers or detectors rather than directly mounted in the environment. ## ❌ **Non-Industrial / Hobby / Low-Reliability Sensors** These are better suited for prototyping, hobby projects, or short-term monitoring — **not continuous industrial farming environments** without additional conditioning and enclosure. <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Industrial Grade?</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why Not</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Figaro TGS826 (MOS type)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Not industrial grade</p></td><td class="op-uc-table--cell"><p class="op-uc-p">This is a consumer/hobby sensor element with no integrated calibration or industrial output. It can be used for prototypes or simple monitoring but lacks accuracy specs and robustness. (<a class="op-uc-link" href="https://www.figarosensor.com/product/sensor/application/industrial-safety/?utm_source=chatgpt.com">figarosensor.com</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Winsen MQ-137 / SRAQ-G216</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Not industrial grade</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cheap semiconductor NH₃ sensors (e.g., MQ-series) poor precision, strong cross-sensitivity, and large drift; unsuitable for industrial climate control without heavy calibration. (<a class="op-uc-link" href="https://sg.rs-online.com/web/p/gas-detectors/1346592?utm_source=chatgpt.com">sg.rs-online.com</a>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGX MiCS-6814 (multi-gas)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Not industrial grade</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-gas hobby module; not dedicated NH₃ detector and not accurate/reliable enough for industrial safety or precise control. (<a class="op-uc-link" href="https://www.reddit.com/r/diyelectronics/comments/dkm4ny?utm_source=chatgpt.com">Reddit</a>)</p></td></tr></tbody></table></figure> **Typical issues with hobby sensors:** ⚠ Low accuracy and repeatability ⚠ Strong cross-sensitivity to other gases ⚠ Large drift and frequent calibration needed ⚠ Not robust against humidity or temperature changes ## 🧠 Summary ### **Industrial-Grade (Best for Poultry Farms &amp; Ventilation Control)** ✅ DOL 53, DOL 51 (DOL-Sensors) ✅ Fancom NH₃ Probes ✅ Aranet NH₃ Kit ✅ NexaSens industrial NH₃ modules ✅ Sensorix NH₃ series → These are **reliable, robust, and designed for long-term continuous operation**, with proper mounting and integration. ### **Semi-Industrial / OEM Sensor Elements** ⚠ SGX-4NH3-100 ⚠ Alphasense NH3 series ⚠ Membrapor NH3 → Good as sensor elements in a custom detector/board with housing and industrial electronics. ### **Not Industrial / Hobby Only** ❌ Figaro TGS826 ❌ Winsen MQ-137 / L-com modules ❌ SGX MiCS-6814 <br> Important upfront note (engineering reality): * **Ammonia ≠ VOC** * NH₃ _does_ require at least **one electrochemical “truth” sensor** if you want reliable control. * Cheap NH₃ sensors are **trend-only**, not absolute truth. * Your requested budgets are **tight but workable** with the right expectations. # 3\. Ammonia Gas (NH₃) ## 3.1 Selection Criteria Ammonia sensors are used for **animal welfare, ventilation control, and early warning**, not laboratory-grade measurement. Key criteria: * One **electrochemical reference sensor** for absolute ppm anchoring * One **low-cost PCB-compatible sensor** for spatial trend detection * Known drift characteristics and predictable aging * Tolerance to humidity (critical in poultry houses) * Clear separation of **truth vs trend** roles ## 3.2 Recommended NH₃ Sensors ### Criteria <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><br data-cke-filler="true"></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Reference Sensor</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Distributed PCB Sensor (×5+)</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor Name</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Alphasense NH3-B1</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Figaro TGS826</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Manufacturer</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Alphasense (UK)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Figaro Engineering (Japan)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor Technology</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Electrochemical</p></td><td class="op-uc-table--cell"><p class="op-uc-p">MOS (Metal Oxide Semiconductor)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Measurement Output</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Absolute NH₃ (ppm)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Relative NH₃ concentration</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Role in System</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Source of truth / calibration anchor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributed trend sensing</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Typical Price</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$140190</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$2535</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Best Use</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Control reference, alarms, calibration</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Spatial variation &amp; early buildup</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Communication</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog current (nA → ppm)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog resistance</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Integration Form</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensor cell (OEM)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">PCB-mount sensor</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>PCB Compatibility</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Needs analog front-end</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Direct PCB soldering</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Humidity Tolerance</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (designed for industrial use)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Poormoderate (needs compensation)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://www.alphasense.com/products/nh3-b1/">https://www.alphasense.com/products/nh3-b1/</a></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://www.figarosensor.com/product/entry/tgs826.html">https://www.figarosensor.com/product/entry/tgs826.html</a></p></td></tr></tbody></table></figure> ### Why these two? #### ✅ **Alphasense NH3-B1 — “Source of Truth”** * True **electrochemical NH₃ sensor** * Used inside many **industrial gas detectors** * Much more stable than MOS * Predictable drift curve * Your budget ($100200) fits **exactly** here ⚠️ Tradeoffs: * Needs **analog front-end** (TIA + ADC) * Limited lifespan (typically 23 years) * Not PCB-drop-in by itself #### ✅ **Figaro TGS826 — PCB-Compatible &amp; Cheap** * Easily soldered to PCB * Widely available * Cheap enough to deploy many units * Very good for **relative ammonia buildup detection** ⚠️ Limitations (important): * Not ppm-accurate * Strong temperature &amp; humidity sensitivity * Drift over time * Must be **normalized against reference sensor** ## 3.3 Architecture Notes (NH₃) ### Critical Design Principles * **NH₃ ppm values must come from electrochemical sensors** * MOS sensors **cannot be trusted alone** for ammonia safety * Use the system like this: ```text [Alphasense NH3-B1] ↓ Absolute ppm reference ↓ Normalization & correction ↓ [TGS826 × N nodes] ``` ### Recommended Usage Pattern * 1 × **NH3-B1** per house (or per zone) * 510 × **TGS826** distributed near: * Litter level * Exhaust fans * Dead air zones ### Firmware Strategy * Temperature &amp; humidity compensation **mandatory** * Apply: * Long-term drift tracking * Relative deviation detection * Trigger ventilation based on: * Reference ppm * Distributed deviation spikes ## 3.4 Why NOT Other Options (Quick Justification) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Reason Rejected</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">DOL 53 / Fancom</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Excellent, but <strong>far above budget</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">MQ-137</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Too unstable, hobby-grade</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">MiCS-6814</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-gas, poor NH₃ specificity</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Aranet NH₃</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial, but <strong>far too expensive</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">SGX-4NH3-100</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Good sensor, but usually &gt;$80 and harder to source</p></td></tr></tbody></table></figure> ## 3.5 Final Recommendation (Clear &amp; Actionable) ### ✅ Use this pair: * **Reference NH₃ sensor:** **Alphasense NH3-B1** * **PCB / distributed sensor:** **Figaro TGS826** <br> <br>
340TaskIn progressreview sensor list [CO2]**Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485). <br> Results to discuss <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Sensor (CO₂)</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Manufacturer (Origin)</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Price [USD]</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Interface/Protocol</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Availability</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Range (ppm)</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Accuracy/Precision</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Datasheet / Link</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Product Link</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Voltage (V)</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$40</p></td><td class="op-uc-table--cell"><p class="op-uc-p">UART, I²C, PWM</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (commercial module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">40010000</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(30ppm + 3% of reading)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Sensirion SCD30 Datasheet</i></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Newark/Newark element14 SCD30</p></td><td class="op-uc-table--cell"><p class="op-uc-p">3.35.5</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD40</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$18</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (newer module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">4002000</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(50ppm + 5% of reading)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Sensirion SCD4x Datasheet</i> (SCD40 variant)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Digi-Key SCD40</p></td><td class="op-uc-table--cell"><p class="op-uc-p">2.45.5</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>MH-Z19B</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Zhengzhou Winsen (China)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$25</p></td><td class="op-uc-table--cell"><p class="op-uc-p">UART (TTL)/PWM</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (common hobbyist)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">4002000 (5000 opt.)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(50ppm + 5% of reading)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Winsen MH-Z19B Datasheet</i></p></td><td class="op-uc-table--cell"><p class="op-uc-p">eBay/Xspar (MHZ19B)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">4.55.5</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>CCS811 (eCO₂)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">ams (Austria)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$20</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (widely used)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">4008192 (equivalent)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>(eCO₂ estimate VOC-based)</i></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Adafruit CCS811 info</i></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Adafruit CCS811 (VOC/eCO₂)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">3.3 (breakout reg.)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Renke RS-CO₂ </strong><i><strong>-</strong></i><strong>-2-EX</strong> (05000ppm)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Renke (China)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$40</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (05V/010V/420mA) or RS-485</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (industrial)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">05000</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(50ppm + 3% of FS)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Renke RS-CO₂</i> product page</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Renke RS-CO₂-*-2-EX</p></td><td class="op-uc-table--cell"><p class="op-uc-p">1030</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Senseair K30 (FR)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Senseair (Sweden)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$50</p></td><td class="op-uc-table--cell"><p class="op-uc-p">UART (Modbus or TTL) + 05V/010V analog</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (OEM module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">05000</p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(30ppm + 3% of reading)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><i>Senseair K30 FR Datasheet</i></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Digi-Key K30 (5kppm)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">4.514</p></td></tr></tbody></table></figure><br> Extended table 😀&nbsp; <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">#</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor (type)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Manufacturer (origin)</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">Est. price (USD)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Comm. protocol / outputs</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">CO₂ range</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Accuracy / precision</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">Operating voltage</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Availability</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Datasheet</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Product link</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">PCB-solderable?</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">1</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD30</strong> (module: NDIR + T/H)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$35$55</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C, UART, PWM</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>40010,000 ppm</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>±(30 ppm + 3% of reading)</strong></p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>3.35.5 V</strong> (module) — can be powered by 5 V; use regulator for 12/24V</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> SCD30 datasheet (Sensirion PDF). (<a class="op-uc-link" href="https://sensirion.com/media/documents/4EAF6AF8/61652C3C/Sensirion_CO2_Sensors_SCD30_Datasheet.pdf?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Digi-Key SCD30 product page. (<a class="op-uc-link" href="https://www.digikey.com/en/products/detail/sensirion-ag/SCD30/8445334?utm_source=chatgpt.com">DigiKey</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">No — module (through-hole / small module).</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">2</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD4x (SCD40 / SCD41)</strong> (miniature/photoacoustic NDIR)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>SMD chip cost ~$8$25</strong> (breakout/module ~$20$50)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>typical 4002,000 ppm (application target)</strong> — SCD4x family supports broader ranges</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>High: comparable to SCD30, photoacoustic NDIR</strong> (datasheet shows tight spec)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>SMD part — 1.85.5V depending on variant / recommended per datasheet</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate → High (growing adoption)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> SCD4x datasheet (Sensirion PDF). (<a class="op-uc-link" href="https://sensirion.com/media/documents/48C4B7FB/64C134E7/Sensirion_SCD4x_Datasheet.pdf?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Digi-Key / Sensirion product pages (SCD4x family). (<a class="op-uc-link" href="https://sensirion.com/media/documents/E0F04247/631EF271/CD_DS_SCD40_SCD41_Datasheet_D1.pdf?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD (meant for PCB assembly).</strong> Good for direct PCB integration.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">3</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>MH-Z19B</strong> (NDIR module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Winsen / Zhengzhou (China)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$20$35</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">UART (TTL), PWM; some clones expose analog</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>4002,000 ppm (configurable to 5k/10k on some firmwares)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>~±(50 ppm + 5%)</strong> (typical per datasheet)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>4.55.5 V</strong> (module) — needs regulator from 12/24V</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high (hobby &amp; commercial sellers)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> MH-Z19B PDF (Winsen). (<a class="op-uc-link" href="https://www.winsen-sensor.com/d/files/MH-Z19B.pdf?utm_source=chatgpt.com">Winsen Sensor</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> widely sold (Amazon, eBay, AliExpress); example vendor listings shown by distributors. (<a class="op-uc-link" href="https://www.winsen-sensor.com/d/files/infrared-gas-sensor/mh-z19b-co2-ver1_0.pdf?utm_source=chatgpt.com">Winsen Sensor</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">No — module (not SMD-friendly).</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">4</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>CCS811 (eCO₂ + TVOC)</strong> (MOx VOC → eCO₂ estimate)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ams/CCS (Austria) / widely sold on breakouts</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$10$30</strong> (breakout)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">eCO₂ <strong>4008,192 ppm</strong> (equivalent CO₂ estimate)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>TVOC/eCO₂ are estimates — accuracy moderate;</strong> datasheet: algorithmic conversion; not an NDIR</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>Chip: ~1.8V; breakout boards provide 3.3V/reg</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (many breakouts, libraries)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> CCS811 datasheet (ams/Sparkfun PDF). (<a class="op-uc-link" href="https://cdn.sparkfun.com/assets/learn_tutorials/1/4/3/CCS811_Datasheet-DS000459.pdf?utm_source=chatgpt.com">cdn.sparkfun.com</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Adafruit / SparkFun CCS811 breakout pages. (<a class="op-uc-link" href="https://cdn-learn.adafruit.com/downloads/pdf/adafruit-ccs811-air-quality-sensor.pdf?utm_source=chatgpt.com">Adafruit Learning System</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>Chip-level:</strong> YES — CCS811 available as IC (QFN) but many use breakout. If using chip directly, follow ams integration guidelines.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">5</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP30</strong> (MOx TVOC / eCO₂ IC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>chip ~$6$15; breakout ~$12$30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">eCO₂ (equivalent) — used as CO₂eq indicator (40060k ppm reported on some breakout docs)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>~±15% (TVOC/eCO₂ algorithmic)</strong> (datasheet)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>1.621.98 V (chip)</strong> — breakout required for convenient 3.3/5V use</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Good (but SGP30 lifecycle status varies — check current stock)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> SGP30 datasheet (Sensirion). (<a class="op-uc-link" href="https://sensirion.com/file/datasheet_sgp30?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Adafruit / Mouser / Digi-Key SGP30 product pages. (<a class="op-uc-link" href="https://www.digikey.com/en/products/detail/sensirion-ag/SGP30-2-5K/7400966?utm_source=chatgpt.com">DigiKey</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD IC (DFN 6) meant for PCB assembly.</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">6</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Renke RS-CO₂ (industrial transmitter)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Renke (China)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$30$50</strong> (depends model)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (05V / 010V / 420 mA) or RS-485 (Modbus)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>05,000 ppm</strong> (typical model)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>~±(4050 ppm + 3% FS)</strong> (manufacturer spec)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>1030 V DC</strong> (fits your 12/24V requirement)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (industrial / OEM channels)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product page / specs:</strong> Renke RS-CO2 product page. (<a class="op-uc-link" href="https://www.renkeer.com/product/co2-sensor/?utm_source=chatgpt.com">renkeer.com</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Renke official product page (quote / distributor). (<a class="op-uc-link" href="https://www.renkeer.com/product/co2-sensor/?utm_source=chatgpt.com">renkeer.com</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">No — industrial transmitter (probe).</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">7</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Senseair K30 (K30 FR variant)</strong> (OEM NDIR module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Senseair (Sweden)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$40$60</strong> (varies)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">UART (TTL)/analog (05V) / Modbus options on variants</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>05,000 ppm</strong> (K30 FR common variant)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>±(30 ppm + 3%)</strong> (typical spec)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>4.514 V</strong> (suitable via 12 V)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (OEM distributors)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet:</strong> CO2Meter / Senseair K30 FR datasheet PDF. (<a class="op-uc-link" href="https://co2meters.com/Documentation/Datasheets/DS-K30-FR.pdf?utm_source=chatgpt.com">co2meters.com</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Senseair product page / CO2Meter distribution pages. (<a class="op-uc-link" href="https://senseair.com/product/k30-fr/?utm_source=chatgpt.com">senseair.com</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">No — module (OEM)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">8</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Seeed SenseCAP SOLO CO₂ 5000 (NDIR transmitter)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Seeed Studio (China)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$79</strong> (slightly above your upper limit; included for reference)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">RS-485 (Modbus-RTU), SDI-12</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>4005,000 ppm</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>±(50 ppm + 5% MV)</strong> (manufacturer)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>Power: 516 V</strong> (can be used with 12/24 V via regulator)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (Seeed distribution)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet / User guide:</strong> SenseCAP SOLO CO2 5000 datasheet/user guide (Seeed). (<a class="op-uc-link" href="https://files.seeedstudio.com/products/317990687/res/SenseCAP_SOLO_CO2_5000-Datasheet.pdf?utm_source=chatgpt.com">files.seeedstudio.com</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Product / buy:</strong> Seeed product page. (<a class="op-uc-link" href="https://files.seeedstudio.com/products/317990687/res/SenseCAP_SOLO_CO2_5000-Datasheet.pdf?utm_source=chatgpt.com">files.seeedstudio.com</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">No — enclosed transmitter</p></td></tr></tbody></table></figure><br> <br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Role</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selected Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Reference (Source of Truth)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Proven industrial-grade NDIR, stable long-term accuracy</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Distributed / Cheap PCB Sensors (×5)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD40 (SCD4x family)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">True CO₂, SMD, low cost, designed for PCB integration</p></td></tr></tbody></table></figure><br> ## ✅ Recommended Architecture (Summary) * **1 × Industrial / Reference CO₂ sensor** → Used as **Source of Truth**, calibration anchor, alarms, long-term reliability * **5 × Low-cost PCB-integrated CO₂ sensors** → Used for **spatial distribution**, trend detection, redundancy, and ventilation optimization → Periodically **cross-checked / auto-calibrated** against the reference sensor # ✅ Final Recommended Sensors <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Role</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selected Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Reference (Source of Truth)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Proven industrial-grade NDIR, stable long-term accuracy</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Distributed / Cheap PCB Sensors (×5)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD40 (SCD4x family)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">True CO₂, SMD, low cost, designed for PCB integration</p></td></tr></tbody></table></figure> # 📊 Selection Table (Final Only the 2 Chosen Sensors) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Criteria</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Reference Sensor</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Distributed PCB Sensor</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor name</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SCD40 (SCD4x)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Manufacturer</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor technology</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>NDIR (true CO₂)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Photoacoustic NDIR (true CO₂)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Role in system</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Source of truth / calibration anchor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Distributed sensing (×5 units)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Price (USD)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$3550</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$1830 (chip)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>CO₂ range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">400 10,000 ppm</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Optimized for indoor/agriculture (4002,000+ ppm)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Accuracy</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">±(30 ppm + 3%)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very good for size class (close to SCD30)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Long-term stability</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Excellent (industrial-grade)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Good (depends on calibration strategy)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>PCB compatibility</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Module (not SMD)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">✅ <strong>SMD IC PCB mount</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Communication</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C / UART / PWM</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Operating voltage</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">3.35.5 V</p></td><td class="op-uc-table--cell"><p class="op-uc-p">1.85.5 V (variant dependent)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>12V/24V compatible</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes (via regulator)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Yes (via regulator)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Availability</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Country of origin</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Switzerland (non-Israel)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Switzerland (non-Israel)</p></td></tr></tbody></table></figure> # 🎯 Why This Is the Best Combination ## 1⃣ Why **SCD30** as the _Source of Truth_ **Key reasons:** * ✔ Proven **industrial reliability** * ✔ True NDIR CO₂ (not estimated eCO₂) * ✔ Excellent long-term drift performance * ✔ Widely used in HVAC, agriculture, laboratories * ✔ Multiple interfaces (UART/I²C/PWM) * ✔ Strong documentation &amp; field history **In your system:** * Installed in the **most representative location** * Used to: * Validate system health * Trigger alarms * Periodically **re-align/calibrate the 5 cheaper sensors** This is exactly how commercial poultry climate controllers are designed. ## 2⃣ Why **SCD40** for the Other 5 Sensors **This is the key decision that makes your system scalable and professional.** ### Why SCD40 (instead of CCS811 / SGP30 / MH-Z19B): <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Option</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why Not Ideal</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">CCS811 / SGP30</p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ eCO₂ only (VOC-based, drifts badly in barns)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">MH-Z19B</p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Module only, inconsistent QC, not PCB-friendly</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Industrial transmitters</p></td><td class="op-uc-table--cell"><p class="op-uc-p">❌ Too expensive ×5</p></td></tr></tbody></table></figure> ### Why SCD40 **is ideal** * ✅ **True CO₂ (NDIR)** — same physics as reference * ✅ **SMD package** → perfect for PCB * ✅ Much **cheaper than SCD30** * ✅ Designed specifically for **OEM products** * ✅ Same manufacturer → consistent calibration philosophy * ✅ Small size → easy to place multiple sensors **This allows:** * Reliable CO₂ gradient mapping across the house * Sensor redundancy * Software-based cross-calibration against SCD30 # 🧠 Recommended Calibration Strategy (Important) To maximize accuracy and lifetime: 1. Power-up: * Let all sensors warm up (NDIR needs thermal stability) 2. Use **SCD30 as master** 3. Periodically: * Compare SCD40 readings to SCD30 * Apply **offset correction in firmware** 4. Store offsets in EEPROM / flash 5. Repeat monthly or when ventilation conditions stabilize ➡ This dramatically improves cheap sensor accuracy without hardware cost. # 🧩 Typical System Block Diagram (Conceptual) ```text [ SCD30 Reference ] | | (I²C / UART) | [ MCU / ESP32 / STM32 ] | | | | | [ SCD40 ][ SCD40 ][ SCD40 ][ SCD40 ][ SCD40 ] ``` * All powered from 12/24V → DC-DC → 5V/3.3V rails * I²C bus with proper pull-ups and cable length control * Optional RS-485 uplink to farm controller # ✅ Final Verdict **This pairing gives you:** * Industrial-grade reliability where it matters * Low cost where you need quantity * True CO₂ everywhere (no fake eCO₂) * Clean PCB design * Future-proof scalability <br>
444TaskOn holdPCB schematic
545RequirementsSpecifiedThe system shall include a central server that aggregates and analyzes data from all main hubs across different farms, using machine learning algorithms to optimize control strategies for each farm based on collected data.The system shall include a central server that aggregates and analyzes data from all main hubs across different farms, using machine learning algorithms to optimize control strategies for each farm based on collected data.
646RequirementsSpecifiedThe sub-hub shall be capable of performing minor calibration functions, including sensor recalibration, before sending data to the main hub.The sub-hub shall be capable of performing minor calibration functions, including sensor recalibration, before sending data to the main hub.
747RequirementsSpecifiedThe main hub shall include control algorithms for managing the environment of the poultry house, including temperature, humidity, and air quality, by controlling the actuators like ventilation fans, heaters, lighting systems, and feeding systems.The main hub shall include control algorithms for managing the environment of the poultry house, including temperature, humidity, and air quality, by controlling the actuators like ventilation fans, heaters, lighting systems, and feeding systems.
848RequirementsSpecifiedThe central server shall use the aggregated data from all farms to generate optimized control strategies based on machine learning, which are then sent back to the respective main hubs.The central server shall use the aggregated data from all farms to generate optimized control strategies based on machine learning, which are then sent back to the respective main hubs.
949RequirementsSpecifiedThe main hub shall be connected to a local control board, which directly controls the actuators, such as fans, heaters, lights, and feeders.The main hub shall be connected to a local control board, which directly controls the actuators, such as fans, heaters, lights, and feeders.
1050RequirementsSpecifiedThe sub-hubs shall be capable of real-time data collection and will update the main hub with sensor readings at specified intervals or when sensor values change beyond predefined thresholds.The sub-hubs shall be capable of real-time data collection and will update the main hub with sensor readings at specified intervals or when sensor values change beyond predefined thresholds.
1151RequirementsSpecifiedThe system shall be capable of remote monitoring and control, allowing farm managers to access real-time data and control system settings via a mobile application or web interface.The system shall be capable of remote monitoring and control, allowing farm managers to access real-time data and control system settings via a mobile application or web interface.
1252RequirementsSpecifiedThe system shall be able to generate alarms for critical situations such as temperature deviations, high ammonia levels, equipment malfunctions, or other emergency conditions.The system shall be able to generate alarms for critical situations such as temperature deviations, high ammonia levels, equipment malfunctions, or other emergency conditions.
1353RequirementsSpecifiedThe system shall support data logging and historical analysis, providing insights into past farm conditions, sensor performance, and actuator behavior.The system shall support data logging and historical analysis, providing insights into past farm conditions, sensor performance, and actuator behavior.
1454RequirementsSpecifiedThe system shall implement security measures such as data encryption and user authentication for remote access to prevent unauthorized access to farm data and control systems.The system shall implement security measures such as data encryption and user authentication for remote access to prevent unauthorized access to farm data and control systems.
1555RequirementsSpecifiedThe sub-hubs shall include diagnostic tools to ensure the correct functionality of sensors, communication, and data transmission.The sub-hubs shall include diagnostic tools to ensure the correct functionality of sensors, communication, and data transmission.
1656RequirementsSpecifiedThe system shall support scalability, allowing new sub-hubs and main hubs to be added seamlessly to expand the system to additional poultry rooms or farms.The system shall support scalability, allowing new sub-hubs and main hubs to be added seamlessly to expand the system to additional poultry rooms or farms.
1757RequirementsSpecifiedThe system shall provide automated decision-making logic for controlling environmental parameters, which may be based on fuzzy logic or proportional control algorithms.The system shall provide automated decision-making logic for controlling environmental parameters, which may be based on fuzzy logic or proportional control algorithms.
1858RequirementsSpecifiedThe central server shall be capable of over-the-air (OTA) updates for all system firmware, ensuring that the latest software updates and features can be deployed to all hubs.The central server shall be capable of over-the-air (OTA) updates for all system firmware, ensuring that the latest software updates and features can be deployed to all hubs.
1959RequirementsSpecifiedThe system shall include energy management capabilities, optimizing the operation of actuators such as fans, heaters, and lighting to reduce energy consumption.The system shall include energy management capabilities, optimizing the operation of actuators such as fans, heaters, and lighting to reduce energy consumption.
2060RequirementsSpecifiedThe system shall be compliant with industry standards, including animal welfare regulations and environmental requirements, ensuring the health and safety of the poultry.The system shall be compliant with industry standards, including animal welfare regulations and environmental requirements, ensuring the health and safety of the poultry.
2161RequirementsSpecifiedThe system shall support multi-zone control, allowing different sections of the poultry house to have independent environmental control based on the local conditions measured by sensors in those zones.The system shall support multi-zone control, allowing different sections of the poultry house to have independent environmental control based on the local conditions measured by sensors in those zones.
2262RequirementsSpecifiedThe system shall provide integration with other farm management software, allowing data from environmental control to be merged with broader farm management systems.The system shall provide integration with other farm management software, allowing data from environmental control to be merged with broader farm management systems.
2363RequirementsSpecifiedThe system shall include fail-safe mechanisms to ensure continuous operation in case of failure in communication or hardware, including backup power and data storage.The system shall include fail-safe mechanisms to ensure continuous operation in case of failure in communication or hardware, including backup power and data storage.
2464RequirementsSpecifiedThe system shall be designed for ease of use, with a user-friendly interface for farm managers to configure, monitor, and control the system.The system shall be designed for ease of use, with a user-friendly interface for farm managers to configure, monitor, and control the system.
2565RequirementsSpecifiedThe system shall enable remote diagnostics for troubleshooting and support, reducing the need for on-site visits.The system shall enable remote diagnostics for troubleshooting and support, reducing the need for on-site visits.
26336PhaseNewMain-Board pilot
27337PhaseNewASF_01 pilot
28338MilestoneNewRequirements & Design337
29339MilestoneNewHardware Selection337relates(#344); relates(#343); relates(#342); relates(#341); relates(#340)
30340MilestoneNewSystem Integration337relates(#339)
31341MilestoneNewStress & Load Testing337relates(#339)
32342MilestoneNewPilot Deployment337relates(#339)
33343MilestoneNewAI Feedback Loop & Optimization337relates(#339)
34344MilestoneNewField Testing337relates(#339)
35345MilestoneNewFunctional / Software requirements349
36346MilestoneNewFirmware Dev349
37347MilestoneNewDev phase 2 (integration)349
38348MilestoneNewSoftware testing UT/CC/INT tests349
39349PhaseNewSensor Hub pilot
40350MilestoneNewField testing phase1349
41351MilestoneNewField testing phase 2349
42352MilestoneNewFirmware Dev336relates(#357); relates(#356); relates(#355); relates(#354); relates(#353)
43353MilestoneNewControl Logic & OTA336relates(#352)
44354MilestoneNewField testing336relates(#352)
45355MilestoneNewFunctional / Software requirements336relates(#352)
46356MilestoneNewMain-Hub Pilot336relates(#352)
47357MilestoneNewSoftware testing UT/CC/INT tests336relates(#352)
48358PhaseNewcloud server pilot
49359MilestoneNewData Pipeline + API358
50360MilestoneNewAI/ML Engine358
51361PhaseNewmobile app pilot
52362MilestoneNewMobile App Dev361
53365TaskIn progresssensor selection [humid]<br> **Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485).
54366TaskIn progresssensor selection [temp]**Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485). <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Range</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Accuracy</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Interface/Output</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Typical Use</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Datasheet Link</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Product Link</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>DS18B20</strong> (1-Wire, Digital)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">55…+125°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±0.5°C (10…+85°C)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">1-Wire Digital</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">HVAC, distributed temp sensing</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf">Maxim DS18B20 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.adafruit.com/product/381">Adafruit DS18B20 Module</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>LM35</strong> (Analog)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">55…+150°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±0.5°C at +25°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Analog (10mV/°C)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Low-cost analog temp sensing</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.ti.com/lit/ds/symlink/lm35.pdf">TI LM35 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.spikenzielabs.com/Catalog/sensors/temperature/lm35-temperature-sensor">LM35 TO-92 Transistor</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>AD22100</strong> (Analog)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">50…+150°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±2% of span</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Analog (0.254.75V)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Instrumentation/HVAC</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.analog.com/media/en/technical-documentation/data-sheets/ad22100.pdf">Analog AD22100 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.analog.com/en/products/ad22100.html">Analog Devices AD22100 Product</a></p></td></tr></tbody></table></figure><br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Range</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Accuracy</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Interface/Output</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Typical Use</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Datasheet Link</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Product Link</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>DHT22</strong> (AM2302)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">0100%RH; 40…+80°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±2%RH; ±0.5°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">1-Wire Digital</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Low-cost indoor measurements</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://cdn-shop.adafruit.com/datasheets/AM2302.pdf">DHT22/AM2302 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.adafruit.com/product/385">Adafruit DHT22 Module</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>Si7021</strong></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">0100%RH; 40…+125°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±3%RH; ±0.4°C</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">I²C Digital</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Indoor climate sensing</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.silabs.com/documents/public/data-sheets/Si7021-A20.pdf">Si7021 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.adafruit.com/product/3251">Adafruit Si7021 Breakout</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>HDC1080</strong></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">0100%RH; 20…+85°C (typ)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±2%RH (typ); ±0.2°C (typ)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">I²C Digital</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Battery-powered HVAC, IoT</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.ti.com/lit/ds/symlink/hdc1080.pdf">HDC1080 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.ti.com/product/HDC1080">Texas Instruments HDC1080</a></p></td></tr></tbody></table></figure><br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Range (Temp/RH)</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Accuracy (Temp/RH)</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Interface/Output</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Typical Use</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Datasheet Link</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:center;"><p class="op-uc-p">Product Link</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>BME280</strong></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">40…+85°C; 0100%RH</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±1.0°C; ±3%RH</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">I²C/SPI Digital</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Environmental sensing (weather stations)</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.bosch-sensortec.com/products/environmental-sensors/bme280/">BME280 Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://www.adafruit.com/product/2652">Adafruit BME280 Breakout</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><strong>SHT30-ARP</strong></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">40…+125°C; 0100%RH</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">±0.3°C; ±3%RH</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">Analog Voltage</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">High-precision OEM applications</p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p"><a class="op-uc-link" href="https://sensirion.com/products/catalog/SHT30-ARP-B">Sensirion SHT3x-ARP Datasheet</a></p></td><td class="op-uc-table--cell" style="text-align:center;"><p class="op-uc-p">(Available via distributors)</p></td></tr></tbody></table></figure><br> # ✅ Final Recommended Sensor Selections _(Temperature &amp; Humidity)_ ## 1⃣ TEMPERATURE — Dedicated Sensor ### ✔ Industrial Reference Sensor (Source of Truth) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Item</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selection</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>PT1000 Class A Probe (industrial RTD)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Typical product</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">DOL 112 PT1000 / E+E / Omega / SensyTemp</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Type</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Platinum RTD (resistive)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">40 to +100 °C (often higher)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Accuracy</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Class A: ±0.15 °C @ 0 °C</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Output</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Passive RTD (2/3/4-wire)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Voltage</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">External excitation (ADC / RTD front-end)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Environment</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial, high humidity, dust</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Why industrial</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Physics-based sensor, long-term stability, no drift like IC sensors</p></td></tr></tbody></table></figure> **Why this is the right reference** * RTDs are **the gold standard** for industrial temperature * No aging like silicon sensors * Survives ammonia, dust, moisture * Easy to recalibrate or replace probe only 📄 Datasheet example: [https://dol-sensors.com/products/dol-112-temperature-sensor](https://dol-sensors.com/products/dol-112-temperature-sensor) 🛒 Example product: [https://www.qcsupply.com/dol-112-temperature-sensor.html](https://www.qcsupply.com/dol-112-temperature-sensor.html) ### ✔ PCB-Integrable Temperature Sensor (Per-node) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Item</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selection</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>TMP117 (Texas Instruments)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Type</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Digital temperature IC</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">55 to +150 °C</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Accuracy</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>±0.1 °C (20 to +50 °C)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Interface</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Voltage</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">1.85.5 V</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Package</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">SMD (PCB mount)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Cost</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$610</p></td></tr></tbody></table></figure> **Why this pairs well** * Very low drift * Factory calibrated * Excellent repeatability between units * Easy digital integration to ESP32 * Used widely in industrial electronics 📄 Datasheet: [https://www.ti.com/lit/ds/symlink/tmp117.pdf](https://www.ti.com/lit/ds/symlink/tmp117.pdf) 🛒 Product: [https://www.ti.com/product/TMP117](https://www.ti.com/product/TMP117) ### 🔁 How they work together * PT1000 defines **absolute temperature truth** * TMP117 sensors are **offset-calibrated** in firmware against PT1000 * You get **industrial accuracy at system level**, low cost per node ## 2⃣ HUMIDITY — Dedicated Sensor ### ✔ Industrial Reference Sensor (Source of Truth) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Item</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selection</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>E+E EE07 / DOL 104 / Rotronic HygroClip</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Type</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial RH transmitter</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100 % RH</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Accuracy</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>±1.52 % RH</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Output</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">420 mA or 010 V</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Voltage</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">1224 V</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Environment</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Condensation-resistant</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Why industrial</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Replaceable sensing element, long-term stability</p></td></tr></tbody></table></figure> 📄 Datasheet (E+E example): [https://www.epluse.com/fileadmin/data/product/ee07/datasheet\_EE07.pdf](https://www.epluse.com/fileadmin/data/product/ee07/datasheet_EE07.pdf) 🛒 Product: [https://www.epluse.com/en/products/humidity-temperature/ee07.html](https://www.epluse.com/en/products/humidity-temperature/ee07.html) ### ✔ PCB-Integrable Humidity Sensor (Per-node) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Item</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Selection</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SHT31 / SHT35</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Type</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Digital RH + Temp IC</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">0100 % RH</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Accuracy</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">±2 % RH (SHT31), ±1.5 % (SHT35)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Interface</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Voltage</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">2.45.5 V</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Package</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">SMD</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Cost</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$615</p></td></tr></tbody></table></figure> 📄 Datasheet: [https://sensirion.com/media/documents/213E6A3B/63A5A569/Sensirion\_Humidity\_Sensors\_SHT3x\_Datasheet.pdf](https://sensirion.com/media/documents/213E6A3B/63A5A569/Sensirion_Humidity_Sensors_SHT3x_Datasheet.pdf) 🛒 Product (SHT31): [https://www.mouser.com/ProductDetail/Sensirion/SHT31-DIS-B](https://www.mouser.com/ProductDetail/Sensirion/SHT31-DIS-B) ### 🔁 How they work together * Industrial RH sensor is used for **control + alarms** * SHT31 sensors give **spatial RH distribution** * Periodic calibration offsets keep all nodes aligned ## 3⃣ COMBINED TEMPERATURE + HUMIDITY (Optional) ### ✔ Industrial Combo Sensor <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DOL 114</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Designed for livestock houses</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>E+E EE210</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial HVAC grade</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Rotronic HC2A</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high accuracy</p></td></tr></tbody></table></figure> ### ✔ PCB Combo Sensor <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SHT31 / SHT35</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Best stability vs price</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Bosch BME280</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cheaper, good enough for trends</p></td></tr></tbody></table></figure> ## ✅ Final Architecture Summary <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Measurement</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Industrial Reference</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">PCB Sensor (×5+)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Temperature</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">PT1000 Class A</p></td><td class="op-uc-table--cell"><p class="op-uc-p">TMP117</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Humidity</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">EE07 / DOL 104</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SHT31 / SHT35</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Combined T+RH</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">DOL 114</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SHT31</p></td></tr></tbody></table></figure> ## <br>
55367TaskOn holdsensor selection [Particulate Matter]
56368TaskIn progresssensor selection [VOC]**Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485). <br> results: **Comprehensive CO₂ and VOC Sensor Inventory for Chicken Farm Climate Control** This inventory provides a detailed comparison of 12 sensors (6 CO₂ and 6 VOC) suitable for industrial climate control in closed chicken farms, focusing on the user&#39;s criteria: availability, price, manufacturer origin (non-boycott), communication protocol, measurement range, covered area, data/community support, and ESP32 integration requirements. The sensors include the three previously recommended options, the six sensors from the user&#39;s provided list, and three additional industrial-grade sensors from EU and Chinese manufacturers. <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table" style="border-style:none;"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Sensor (Gas)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Availability</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Price [USD] (Est.)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Manufacturer</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Origin (Non-Boycott)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Protocol</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Range Quantity</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Covered Area [m²]</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Data/Community Support</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">ESP32 External Peripherals Needed</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">1. Sensirion SGP41 (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">$15 - $25</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Sensirion</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Switzerland</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">I²C</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Relative VOC Index (0-500)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High (Market leader, dedicated ESP32 libraries)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Minimal. Direct I²C connection.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">2. ACI VOC-R (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Moderate</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">~$547</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">ACI</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">USA</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 (Modbus) / 4-20mA / 0-10V</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">01,000 ppb</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Room-mounted)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Moderate (Industrial focus, professional manuals)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 Transceiver or ADC/Current Loop Interface for analog outputs. Stable 16V-35V supply.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">3. Sensirion SGP30 (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">~$8</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Sensirion</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Switzerland</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">I²C</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">TVOC: 060,000 ppb</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High (Extensive community, low-cost)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Minimal. Direct I²C connection.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">4. Bosch BME680 (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">~$19 (Breakout)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Bosch Sensortec</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Germany</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">I²C / SPI</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Relative IAQ Index</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High (Extensive community, well-supported libraries)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Minimal. Direct I²C/SPI connection.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">5. Cubic P300 (VOC/Multi)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Moderate</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">$150 - $250</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Cubic Sensor and Instrument</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">China</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 (Modbus)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">TVOC: 0-5000 ppb</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Moderate (Growing industrial use, good documentation)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 Transceiver. Stable 5V supply.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">6. E+E EE891 (VOC/Multi)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Moderate</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">$300 - $400</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">E+E Elektronik</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Austria</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 (Modbus)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">TVOC: 0-100% (Relative)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">High (Industrial focus, excellent documentation)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">RS-485 Transceiver. Stable 12V/24V supply.</p></td></tr></tbody></table></figure><br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Sensor (Gas)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Availability</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Price [USD] (Est.)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Manufacturer</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Origin (Non-Boycott)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Protocol</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Range Quantity</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Covered Area [m²]</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Data/Community Support</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">ESP32 External Peripherals Needed</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Data sheet</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">1. Sensirion SGP41 (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">$15 - $25</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Sensirion</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Switzerland</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">I²C</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Relative VOC Index (0-500)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High (Market leader, dedicated ESP32 libraries)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Minimal. Direct I²C connection.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://nl.mouser.com/datasheet/3/1278/1/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf">SGP41 Datasheet</a></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">4. Bosch BME680 (VOC)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">~$19 (Breakout)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Bosch Sensortec</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Germany</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">I²C / SPI</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Relative IAQ Index</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">N/A (Module)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Very High (Extensive community, well-supported libraries)</p></td><td class="op-uc-table--cell" style="border-color:#000000;border-width:0.5pt;padding:5pt;vertical-align:top;"><p class="op-uc-p">Minimal. Direct I²C/SPI connection.</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://s3.amazonaws.com/snapeda/datasheet/BME680_Bosch_Sensortec.pdf?utm_source=snapeda&amp;utm_medium=referral&amp;utm_campaign=snapeda-suppression-datasheet">BME680 Datasheet</a></p></td></tr></tbody></table></figure> Extended list: <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor (Output Gas)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Availability</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Price (USD)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Manufacturer (Origin)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Interface</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Range / Output (units)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Covered Area</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Data/Community Support</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">ESP32 Peripherals Needed</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP41</strong>(VOC sensor)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (in stock, ~1,300+)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$8 (1 pc)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Processed output: VOC index 0500;Measurement range ~01000ppm VOC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (chip/module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high (market leader; plentiful code/libraries)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C bus</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP30</strong>(TVOC + eCO₂)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (limited stock; product marked obsolete)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$8 (legacy/obsolete)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">TVOC (total VOC) 01000ppb;CO₂-equivalent 01000ppm</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (chip/module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high (well-known in IoT/hobbyist community)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C bus</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP40</strong>(VOC sensor)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (in production)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$6.70</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">VOC index 0500;Measurement range ~01000ppm VOC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (chip/module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high (successor to SGP30, broad library support)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C bus</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Bosch BME688</strong>(VOC/gas + P/T/H)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Very high (stock ≈18k)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">$8.65</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Bosch Sensortec (Germany)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C/SPI (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Detects VOCs (gas index) to ppb sensitivity</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (chip/module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (Bosch ecosystem; BSEC libraries available)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C/SPI bus</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>AMS/ScioSense iAQ-Core C</strong>(TVOC + eCO₂)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (discontinued module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$1520 (est.)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">AMS AG (Austria)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">CO₂-eq 4502000ppm;TVOC 125600ppb</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (well-documented IAQ module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C bus</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ScioSense ENS160</strong>(TVOC + eCO₂)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High (current product)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$6.78</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ScioSense (Netherlands)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C/SPI (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Outputs equivalent CO₂ and TVOC (wideband MOX)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">N/A (chip/module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Moderate (newer product; growing support)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Minimal direct I²C/SPI bus</p></td></tr></tbody></table></figure><figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">#</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor (short)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Manufacturer (origin)</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">Est. price (USD)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Protocol / Output</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">VOC measurement type / range</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Accuracy / sensitivity (from datasheet)</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">Operating voltage</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Availability (distributor)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Datasheet</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Product / distributor page</p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="text-align:right;"><p class="op-uc-p">PCB-integrable</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">1</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP41</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>$5$10</strong> (IC, volume pricing varies)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">VOC + NOx index; preprocessed gas-index signals for IAQ (index outputs)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High sensitivity; on-chip hotplate + algorithm (see datasheet).</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">3.3 V typical (check datasheet).</p></td><td class="op-uc-table--cell"><p class="op-uc-p">In stock at distributors / reel options.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — SGP41 (Sensirion PDF). (<a class="op-uc-link" href="https://sensirion.com/resource/datasheet/sgp41?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Mouser / Future Electronics product pages (SGP41). (<a class="op-uc-link" href="https://www.mouser.com/ProductDetail/Sensirion/SGP41-D-R4?qs=A6eO%252BMLsxmRqwfOE5NYPVA%3D%3D&amp;srsltid=AfmBOooyTXnwbBf7zCZMW2OwoXfuJncheLKK58LyQWNLnJUXaxGmY6UG&amp;utm_source=chatgpt.com">Mouser Electronics</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD IC (reel / DFN) — meant for PCB assembly</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">2</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP30</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$6$12</strong> (chip / breakout ~$8$20)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">TVOC &amp; eCO₂ (equivalent CO₂) — IAQ indices (TVOC range in datasheet)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Typical accuracy ~1020% for TVOC/eCO₂ (algorithmic). See datasheet.</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">Chip-level low-voltage (use breakout for 3.3 V/5 V systems).</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Widely available (breakouts common); SGP30 legacy/obsolescence notes — check supply.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — SGP30 (Sensirion PDF). (<a class="op-uc-link" href="https://sensirion.com/file/datasheet_sgp30?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Adafruit / distributors (SGP30 breakout pages). (<a class="op-uc-link" href="https://www.microcenter.com/product/631790/adafruit-industries-sgp30-air-quality-sensor-breakout-voc-and-eco2-stemma-qt-qwiic?utm_source=chatgpt.com">Micro Center</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD IC (DFN) or breakout</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">3</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP40</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$6$12</strong> (chip; breakout slightly more)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">VOC index (humidity compensated) — intended for IAQ apps</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensitivity &amp; repeatability per datasheet (use Gas Index algorithm).</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">3.3 V typical (datasheet).</p></td><td class="op-uc-table--cell"><p class="op-uc-p">In production; distributor stock varies.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — SGP40 (Sensirion PDF). (<a class="op-uc-link" href="https://sensirion.com/resource/datasheet/sgp40?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion product page / distributors. (<a class="op-uc-link" href="https://sensirion.com/products/catalog/SGP40?utm_source=chatgpt.com">Sensirion AG</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD IC (reel) / OEM use</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">4</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Bosch BME688</strong> (BME68x family)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Bosch Sensortec (Germany)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$8$20</strong> (chip; breakout ~$15$30)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C / SPI (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Gas/VOC index (uses AI/BSEC libs) — provides TVOC/IAQ values (ppb-level detection)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Good sensitivity; use Bosch BSEC library for compensated outputs; see datasheet.</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">1.23.6 V (chip-level); breakout boards provide 3.3 V.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Widely available at major distributors (Mouser, Digi-Key).</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — BME688 (Bosch PDF). (<a class="op-uc-link" href="https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bme688-ds000.pdf?utm_source=chatgpt.com">Bosch Sensortec</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Mouser / product page. (<a class="op-uc-link" href="https://www.mouser.com/ProductDetail/Bosch-Sensortec/BME688?qs=IS%252B4QmGtzzqQoVDscqwx3A%3D%3D&amp;srsltid=AfmBOopL397B65yQkWINTEnbpgpigASHjr7WZc8DTllHpPhop7OhSnfL&amp;utm_source=chatgpt.com">Mouser Electronics</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD IC (3×3 mm LGA) — suitable for PCB assembly</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">5</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ScioSense ENS160</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">ScioSense (Netherlands)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$6$12</strong> (IC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C / SPI (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">TVOC + eCO₂ (MOx multi-element sensor, processed outputs)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-MOX, humidity compensated; see ENS160 datasheet for sensitivity &amp; warm-up times.</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">1.671.98 V (chip); use breakout/regulator for 3.3 V systems.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">In stock at Mouser and other distributors.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — ENS160 (ScioSense PDF). (<a class="op-uc-link" href="https://www.sciosense.com/wp-content/uploads/2023/12/ENS160-Datasheet.pdf?utm_source=chatgpt.com">ScioSense</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Mouser product page (ENS160). (<a class="op-uc-link" href="https://www.mouser.com/ProductDetail/ScioSense/ENS160-BGLT?qs=DRkmTr78QAQdCF%2F7WcskoA%3D%3D&amp;srsltid=AfmBOoogRc14Zk8d1ezPY0hUG-zDfW5ZnbDAlLpzM-3ZDWyQed1lS8yv&amp;utm_source=chatgpt.com">Mouser Electronics</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>YES — SMD (LGA) — designed for PCB use</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">6</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ACI VOC-R</strong> (room transmitter)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">ACI / WorkACI (USA distribution)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>~$300$600</strong> (industrial transmitter) — outside $530 but included for industrial reference</p></td><td class="op-uc-table--cell"><p class="op-uc-p">RS-485 (Modbus), 420 mA, 010 V</p></td><td class="op-uc-table--cell"><p class="op-uc-p">TVOC: 01000 ppb (typical metal-oxide sensor output for TVOC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Industrial spec sheet lists accuracy (see datasheet)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p">1635 V (typical industrial line power)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Widely sold through HVAC distributors; datasheet &amp; vendor pages available.</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Datasheet — ACI VOC datasheet (PDF). (<a class="op-uc-link" href="https://assets.kele.com/Catalog/08%20Gas_Specialty_Sensors/PDFs/ACI-VOC-Data-Sheet.pdf?utm_source=chatgpt.com">Kele</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Product pages (ACI / RSP Supply / EnergyControl). (<a class="op-uc-link" href="https://blackhawksupply.com/products/aci-voc-r?srsltid=AfmBOopAWv4LdRau-F-9Q1liO59qID2i85GtwOdmNnjpkDaiOwm09XKx&amp;utm_source=chatgpt.com">Blackhawk Supply</a>)</p></td><td class="op-uc-table--cell" style="text-align:right;"><p class="op-uc-p"><strong>NO — room transmitter (not PCB SMD)</strong></p></td></tr></tbody></table></figure><br> <br> ## ✅ VOC Sensor Selection (Budget-constrained) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Role</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Manufacturer (Origin)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Est. Price</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Protocol / Output</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">VOC Type</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Operating Voltage</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Availability</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Datasheet</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Product link</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Why selected</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Reference (Reliable industrial-like)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGP40 VOC (digital module)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion / breakout (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>~$14$35</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>I²C</strong> (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Relative VOC / IAQ index</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>3.35 V</strong> (module)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell"><p class="op-uc-p">— <i>uses SGP40 data</i> (<a class="op-uc-link" href="https://nl.rs-online.com/web/p/environmental-sensor-ics/2047512?utm_source=chatgpt.com">RS Online</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>DFRobot SGP40 breakout (~$14.50)</strong> (<a class="op-uc-link" href="https://www.dfrobot.com/product-2241.html?utm_source=chatgpt.com">DFRobot Electronics</a>) / <strong>Waveshare SGP40 (~$34.49)</strong> (<a class="op-uc-link" href="https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor-for-easy-integration-into-air-treatment-devices-and-air-quality-monitors-i2c-bus-compatible-with-raspberry-pi-stm32/?utm_source=chatgpt.com">The Retail Market</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Good stability &amp; digital output; fits budget; widely available; mature IAQ performance</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Distributed / PCB-integrable (×5)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensirion SGP41 DFN (SMD)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensirion (Switzerland)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>~$4$10</strong> (IC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>I²C</strong> (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">VOC + NOx index</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>1.73.6 V</strong> (IC)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGP41 datasheet (PDF)</strong> (<a class="op-uc-link" href="https://admin.sensirion.com/media/documents/5FE8673C/61E96F50/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf?utm_source=chatgpt.com">Sensirion Admin</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>RS Online SGP41 DFN listing (~€8/≈$9.70)</strong> (<a class="op-uc-link" href="https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991?utm_source=chatgpt.com">RS Components</a>)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">True PCB integrable SMD; very low cost; suitable for mass repeating; same tech family</p></td></tr></tbody></table></figure> ## 📌 Why These Choices ### 🔹 **Reference: SGP40 Digital VOC Module (~$14$35)** * **Budget-friendly “industrial-ish” reference element:** While not a full standalone industrial transmitter, the **SGP40 gas sensor breakout module** is a _true Sensirion VOC sensor_ with a simple wired I²C interface suitable as your systems anchor. ([DFRobot Electronics](https://www.dfrobot.com/product-2241.html?utm_source=chatgpt.com)) * **Digital interface (I²C)** — works cleanly into your ESP32 system without external ADC or analog conditioning. ([The Retail Market](https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor-for-easy-integration-into-air-treatment-devices-and-air-quality-monitors-i2c-bus-compatible-with-raspberry-pi-stm32/?utm_source=chatgpt.com)) * **Operating voltage:** typically **3.3 V (5 V tolerant)** on modules; works well with your 5 V or 12/24 V via regulator. ([The Retail Market](https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor-for-easy-integration-into-air-treatment-devices-and-air-quality-monitors-i2c-bus-compatible-with-raspberry-pi-stm32/?utm_source=chatgpt.com)) * **Good availability &amp; pricing:** breakout boards are plentiful and often under $30 e.g., DFRobots ~**$14.50** version or Waveshares ~$34.49 variant. ([DFRobot Electronics](https://www.dfrobot.com/product-2241.html?utm_source=chatgpt.com)) * **Not a module with industrial enclosure:** its a breakout — youll need enclosure/protection, but the core sensor IC is robust and digitally accessible. 📌 Example product pages: * SGP40 breakout by DFRobot — ~$14.50: [https://www.dfrobot.com/product-2241.html](https://www.dfrobot.com/product-2241.html) ([DFRobot Electronics](https://www.dfrobot.com/product-2241.html?utm_source=chatgpt.com)) * Digital SGP40 module (Waveshare) — ~$34.49: [https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor](https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor) ([The Retail Market](https://www.retailmarket.net/products/digital-sgp40-voc-volatile-organic-compounds-gas-sensor-for-easy-integration-into-air-treatment-devices-and-air-quality-monitors-i2c-bus-compatible-with-raspberry-pi-stm32/?utm_source=chatgpt.com)) ### 🔹 **Distributed / PCB-integrable: Sensirion SGP41 DFN (~$4$10)** * **SMD / PCB mount device:** The **SGP41** is a small SMD (DFN) VOC + NOx sensor suitable for mounting directly on your custom boards. ([Sensirion Admin](https://admin.sensirion.com/media/documents/5FE8673C/61E96F50/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf?utm_source=chatgpt.com)) * **Digital I²C interface:** Easy to connect to ESP32 without extra components. ([RS Components](https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991?utm_source=chatgpt.com)) * **Operating voltage:** Designed for 1.73.6 V (use your boards regulator to supply 3.3 V). ([Sensirion Admin](https://admin.sensirion.com/media/documents/5FE8673C/61E96F50/Sensirion_Gas_Sensors_Datasheet_SGP41.pdf?utm_source=chatgpt.com)) * **Low cost &amp; scalable:** Buying in small quantities (eg ~€8 ≈ $9.7) makes it ideal as a distributed sensor. ([RS Components](https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991?utm_source=chatgpt.com)) * **Same technology family as SGP40:** This means your reference and distributed nodes use compatible MOx/CMOSens tech, making correction and calibration more consistent. 📌 Example product page: * SGP41 DFN (RS Online) — ~€8 / ~ $9.7: [https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991](https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991) ([RS Components](https://befr.rs-online.com/web/p/environmental-sensor-ics/2348991?utm_source=chatgpt.com)) ## 🧠 Notes on Accuracy &amp; Function * **SGP40 &amp; SGP41** sensors are **VOC index / IAQ sensors** — they do not provide absolute concentrations of every VOC compound, but rather a processed gas index representing overall VOC activity. For ventilation control, this is generally sufficient. ([DFRobot Electronics](https://www.dfrobot.com/product-2241.html?utm_source=chatgpt.com)) * They perform well in **trend detection** and **comparative monitoring** across multiple sensors, and can be calibrated relative to each other to improve spatial response performance. ## 📌 Wiring &amp; Integration Tips * Both reference module (SGP40 breakout) and distributed sensors (SGP41 SMD) communicate **via I²C**, which is perfect for multi-node systems with ESP32. * Use proper pull-ups on the I²C bus and short lines for best signal quality. * Power them from a **3.3 V rail** regulated from your 5 V/12 V system. ## ⚡ Summary Recommendation <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Role</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Best Use</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Reference / Source of Truth</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGP40 module</strong> (~$14$35)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Strong digital sensor to anchor 5 nodes; wired I²C; fits your cost cap.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Distributed / PCB sensors (×5)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>SGP41 DFN</strong> (~$4$10)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">PCB-friendly, same family tech; easy integration to ESP32; low per-node cost.</p></td></tr></tbody></table></figure> ## <br>
57369TaskNewsensor selection [Light]**Criteria:** * Availability. * Price \[USD\]. * Manufacturer. \[\]not boycott\]. * peripheral or communication protocoled. * Range quantity \[ex 0c to 100c\]. * Covered Area, \[m2\]. i**f possible.** * Data. \[public data about sensor\] * What type of external peripherals will be needed with esp-32 like (RS-485). <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Sensor (Example Product)</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Interface/Output</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Measured Range</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Price (approx)</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Notes</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>BH1750 (Adafruit BH1750 Breakout)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital, lux)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">065,535lux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$4.50</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Low-cost 16-bit lux sensor; up to ~65klux (can extend to ~100k). Plug-&amp;-play; no ADC needed.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>VEML7700 (Adafruit VEML7700)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital, lux)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">0120,000lux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$4.95</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Wide-range ambient-light sensor; 16-bit resolution, 0.0036lux sensitivity. 0120klux range. Easy library support.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>TSL2591 (Adafruit TSL2591)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C (digital, lux)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~0.188μlux88,000lux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$6.95</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High-dynamic-range sensor (visible+IR); measures from ultra-dark (0.000188lux) to very bright (88klux). Good for both indoor and bright outdoor light.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>ALS-PT19 Analog Photodiode (Adafruit)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (voltage)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~Analog 0VCC (rises with light)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$2.50</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Simple analog photodiode breakout (PT19). Voltage output increases with light. Requires ADC on MCU. Covers roughly indoor light levels.</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>TEMT6000 Analog Sensor (DFRobot)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (voltage)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">11000lux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$5.90</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog ambient-light sensor (TEMT6000). Range ~11000lux, human-eye spectral response. 05V output proportional to light (max ~1000lux).</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Generic LDR Module (photoresistor)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Analog (voltage)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~010,000+lux (uncalibrated)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$13 (clone modules)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cheap photocell module (often with LM393 comparator). Analog output (0V) roughly ~010klux. Very low cost but non-linear and needs calibration. Often used with a simple voltage divider.</p></td></tr></tbody></table></figure><br> # 4\. Light Intensity (Illuminance / Lux) ## 4.1 Selection Criteria Light sensors in poultry farms are used for **photoperiod control, uniformity of illumination, and energy optimization**, not laboratory-grade optical measurements. Key criteria: * Stable and repeatable lux readings * Digital output preferred to reduce ADC noise * Wide enough dynamic range to handle: * Low night lighting (120 lux) * Daylight intrusion from windows (1,00020,000 lux) * PCB compatibility for distributed sensing * Low cost to allow multiple sensors per house * Minimal temperature drift ## 4.2 Recommended Light Sensors ### Criteria <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><br data-cke-filler="true"></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Reference Sensor</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p"><strong>Distributed PCB Sensor (×5+)</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor Name</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>VEML7700 (module)</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>BH1750 (module)</strong></p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Manufacturer</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Vishay (USA)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Rohm (Japan)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Sensor Technology</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Silicon photodiode + ADC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Silicon photodiode + ADC</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Measurement Output</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Absolute lux (digital)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Absolute lux (digital)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Role in System</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Lighting control reference</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Spatial light uniformity</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Typical Price</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$46</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~$35</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Best Use</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Day/night decision, control anchor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-point comparison</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Communication</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td><td class="op-uc-table--cell"><p class="op-uc-p">I²C</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Integration Form</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">PCB module / SMD IC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">PCB module / SMD IC</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Lux Range</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">~0120,000 lux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">~065,000 lux</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>PCB Compatibility</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Excellent</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Excellent</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Datasheet</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://www.vishay.com/docs/84286/veml7700.pdf">https://www.vishay.com/docs/84286/veml7700.pdf</a></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><a class="op-uc-link" href="https://www.rohm.com/products/sensors/light-sensors/bh1750fvi-product">https://www.rohm.com/products/sensors/light-sensors/bh1750fvi-product</a></p></td></tr></tbody></table></figure> ### Why these two? #### ✅ **VEML7700 — Reference Sensor** * Very wide dynamic range (handles sunlight through windows) * Good low-lux sensitivity (night mode / dim light) * Stable, temperature-compensated readings * Digital output → no ADC drift * Still **cheap enough** to deploy as a reference This becomes your **lighting “truth anchor”**. #### ✅ **BH1750 — Distributed Sensor** * Extremely common and well understood * Cheap and reliable * Good enough accuracy for **relative comparison** * Simple I²C integration * Very low firmware complexity Ideal for **multiple mounting points** across the barn. ## 4.3 Architecture Notes (Light) ### System Philosophy Light is **not a safety-critical parameter** like NH₃. Therefore: * No electrochemical “truth” sensor needed * Digital lux sensors are sufficient Recommended architecture: ```text [VEML7700] ↓ Reference lux value ↓ Lighting control decision ↓ [BH1750 × N nodes] ``` ### Recommended Deployment * **1 × VEML7700**: * Near center of the barn * Shielded from direct lamp glare * **510 × BH1750**: * Near walls * Near windows * Near feeder/drinker lines * At bird-eye height This ensures: * Uniform lighting * Detection of bright/dark zones * Compensation for daylight leakage ### Firmware Strategy * Read lux every 15 seconds * Apply: * Moving average (530 samples) * Daylight detection threshold * Control logic example: * If average lux &lt; target → increase artificial light * If lux &gt; target (sunlight) → dim or turn off lamps ## 4.4 Why NOT Industrial Sensors for This Role <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sensor</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Reason Not Selected</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">DOL 16</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Excellent, but <strong>far above budget</strong> and analog-only</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Aranet LUX</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Wireless IoT, expensive, slow update</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Apogee PAR</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Measures PAR, not lux; overkill</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Li-Cor</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Research-grade, unnecessary</p></td></tr></tbody></table></figure> Industrial sensors are useful for **certification or auditing**, but **not needed** for control loops in closed poultry houses. ## 4.5 Final Recommendation (Clear &amp; Actionable) ### ✅ Use this pair: * **Reference Light Sensor:** **VEML7700** * **Distributed / PCB Sensor:** **BH1750** This mirrors your VOC and NH₃ strategy exactly: <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Parameter</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Strategy</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">VOC</p></td><td class="op-uc-table--cell"><p class="op-uc-p">One reference + many cheap</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">NH₃</p></td><td class="op-uc-table--cell"><p class="op-uc-p">One electrochemical + many MOS</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><strong>Light</strong></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><strong>One wide-range lux + many cheap lux</strong></p></td></tr></tbody></table></figure><br> <br>
58370TaskNewBackup plan for cloud server
59371TaskNewOTA archCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
60372TaskNewmain hub APISCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
61373TaskNewEvent systemCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
62374TaskNewSensor managerCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
63375TaskNewSTMCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
64376TaskNewMCsCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
65377TaskNewDiag taksCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
66378TaskNewError handlingCriteria: * Responsibilities. * Interfaces. * Dependencies. * Constrains. * Link to requirement. * (Takes and periodicity and priority). * Expected behavior (for testing) * Behavior diagram with dependencies. * Use case component.
67379TaskOn holdPresentation of HW design
68380TaskIn progressReview sensor list1- Temp &amp; Humid
69381TaskIn progressreview sensor listReview:&nbsp; 1- NH3 <br>
70382TaskNewImplement test arena
71383TaskNewimplement monitor page for asf resources
72388FeatureIn specification[F-DAQ-01] Multi-Sensor Data AcquisitionThe Sensor Hub shall acquire environmental data from multiple heterogeneous sensors installed on the device.\n\nThis feature enables concurrent acquisition of temperature, humidity, CO2, NH3, VOC, particulate matter, and light sensors.\n\nEach sensor is associated with a predefined hardware slot and a dedicated driver abstraction.\n\nOnly sensors detected as present and enabled shall be initialized and included in the acquisition cycle.includes(#394); includes(#395); includes(#396); includes(#393)
73389FeatureIn specification[F-DAQ-02] High-Frequency Sampling and Local FilteringThe Sensor Hub shall perform high-frequency sampling for each enabled sensor during an acquisition cycle.\n\nEach sensor shall be sampled multiple times (default: 10 samples per cycle) within a bounded time window.\n\nThe system shall apply a local filtering mechanism to raw samples to generate a single representative sensor value.\n\nFiltering is performed locally on the Sensor Hub to reduce noise and improve data stability before further processing.includes(#399); includes(#398); includes(#397); includes(#393)
74390FeatureIn specification[F-DAQ-03] Timestamped Sensor Data GenerationThe Sensor Hub shall generate a timestamped sensor data record for each processed sensor value.\n\nTimestamps shall be generated after completion of local filtering and shall represent the effective measurement time.\n\nEach sensor data record shall include sensor identifier, sensor type, filtered value, unit of measurement, timestamp, and data validity status.\n\nTimestamped data shall be made available for persistence and on-demand communication with the Main Hub.includes(#400); includes(#401); includes(#402); includes(#403); includes(#393)
75393FeatureIn specification[F-DAQ] Sensor Data Acquisition Features# **ASF Sensor Hub** ## **Feature Engineering Specification** ## **Sensor Data Acquisition Features** ## **1\. Feature Overview** ### **Feature Name** Sensor Data Acquisition Features ### **Feature ID** FEAT-DAQ ### **Subsystem** ASF Sensor Hub (Sub-Hub) ### **Target Platform** ESP32-S3based embedded system ### **Scope** This feature defines the capabilities of the Sensor Hub related to: * Environmental sensor data acquisition * Local preprocessing and filtering * Timestamping and preparation of sensor data for persistence and communication This feature **does NOT include**: * Main Hub processing * Cloud analytics * Control logic * OTA, diagnostics, or persistence mechanisms (referenced only as dependencies) ## **2\. Purpose and Engineering Rationale** Modern poultry farm automation systems require **high-resolution, reliable, and time-correlated environmental data** to enable: * Accurate environmental control * Early fault detection * Advanced analytics and machine learning The Sensor Data Acquisition feature ensures: * Deterministic sensor sampling * Noise-resilient measurements * Temporal traceability of data * Decoupling of acquisition from communication and control This aligns with **distributed intelligence principles** used in leading international poultry automation systems. ## **3\. Feature Decomposition** The Sensor Data Acquisition feature is decomposed into the following sub-features: <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Sub-Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Name</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Multi-Sensor Data Acquisition</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">High-Frequency Sampling and Local Filtering</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Timestamped Sensor Data Generation</p></td></tr></tbody></table></figure> ## **4\. Functional Description** ### **4.1 F-DAQ-01: Multi-Sensor Data Acquisition** #### **Description** The Sensor Hub acquires environmental data from multiple heterogeneous sensors connected to dedicated hardware interfaces. #### **Supported Sensor Types** * Temperature * Relative Humidity * Carbon Dioxide (CO₂) * Ammonia (NH₃) * Volatile Organic Compounds (VOC) * Particulate Matter (PM) * Light Intensity Each sensor: * Is mapped to a predefined hardware slot * Has a dedicated driver abstraction * Can be independently enabled or disabled #### **Key Characteristics** * Concurrent sensor handling * Modular sensor driver architecture * Runtime awareness of sensor presence ### **4.2 F-DAQ-02: High-Frequency Sampling and Local Filtering** #### **Description** For each enabled sensor, the system performs multiple raw readings per acquisition cycle and applies a local filtering mechanism to produce a single representative value. #### **Sampling Behavior** * Each sensor is sampled **N times per cycle** (default: 10) * Sampling occurs within a bounded time window * Sampling frequency is configurable via Machine Constants #### **Filtering Behavior** * Filtering is executed locally on the Sensor Hub * Filtering algorithms are abstracted and replaceable * Examples (non-exhaustive): * Moving average * Median filter * Outlier rejection #### **Objective** * Reduce sensor noise * Improve data stability * Avoid propagating raw sensor jitter upstream ### **4.3 F-DAQ-03: Timestamped Sensor Data Generation** #### **Description** Each processed sensor value is associated with a timestamp generated by the Sensor Hub. #### **Timestamp Characteristics** * Generated after filtering completion * Represents the effective measurement time * Based on system time (RTC or synchronized clock) #### **Sensor Data Record** Each record includes: * Sensor ID * Sensor type * Filtered value * Unit of measurement * Timestamp * Data validity status ## **5\. Operational Flow** ### **Normal Acquisition Cycle** 1. Detect enabled sensors 2. Initialize sensor drivers (if not already active) 3. Perform high-frequency sampling per sensor 4. Apply local filtering 5. Generate timestamp 6. Create sensor data record 7. Forward data to: * Data Persistence component * Communication component (on request) ## **6\. Constraints and Assumptions** ### **Constraints** * Sensor acquisition must not block system-critical tasks * Sampling and filtering must complete within a bounded cycle time * Memory usage must be deterministic ### **Assumptions** * Sensor presence detection is handled by a separate feature * Time synchronization is provided by another system component * Storage and communication are decoupled from acquisition ## **7\. Architecture Diagram (PlantUML)** ### **7.1 Sensor Data Acquisition Logical View** <br> `@startuml package "Sensor Hub" { &nbsp;component "Sensor Drivers" as SD  component "Sampling Engine" as SE  component "Filtering Engine" as FE  component "Timestamp Service" as TS  component "Sensor Data Buffer" as DB  SD --> SE : raw samples  SE --> FE : sampled data  FE --> TS : filtered value  TS --> DB : timestamped record } @enduml` ### **7.2 Acquisition Cycle Sequence Diagram** <br> `@startuml participant "Sensor Driver" as S participant "Sampling Engine" as SE participant "Filtering Engine" as FE participant "Timestamp Service" as TS S -> SE : read() loop N samples  SE -> S : sample() end SE -> FE : raw sample set FE -> TS : filtered value TS -> FE : timestamp @enduml` ## **8\. Formal System SHALL Requirements** ### **8.1 Requirement Style** * Each requirement uses **“The system shall …”** * Each requirement has a unique ID * Requirements are atomic and testable ### **8.2 Requirements List** #### **Multi-Sensor Acquisition** * **REQ-DAQ-001** The system shall support acquisition of data from multiple environmental sensor types simultaneously. * **REQ-DAQ-002** The system shall provide a dedicated software driver abstraction for each supported sensor type. * **REQ-DAQ-003** The system shall acquire sensor data only from sensors detected as present and enabled. #### **High-Frequency Sampling &amp; Filtering** * **REQ-DAQ-004** The system shall sample each enabled sensor multiple times within a single acquisition cycle. * **REQ-DAQ-005** The system shall apply a local filtering mechanism to raw sensor samples to produce a single representative value. * **REQ-DAQ-006** The system shall allow configuration of sampling count and filtering parameters via system configuration data. #### **Timestamped Data Generation** * **REQ-DAQ-007** The system shall associate each processed sensor value with a timestamp. * **REQ-DAQ-008** The system shall generate timestamps after completion of filtering. * **REQ-DAQ-009** The system shall include sensor identifier, sensor type, value, unit, timestamp, and validity status in each sensor data record. ## **9\. Feature-to-Requirement Traceability** <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Requirement IDs</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">REQ-DAQ-001, REQ-DAQ-002, REQ-DAQ-003</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">REQ-DAQ-004, REQ-DAQ-005, REQ-DAQ-006</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">REQ-DAQ-007, REQ-DAQ-008, REQ-DAQ-009</p></td></tr></tbody></table></figure>includes(#528); includes(#390); includes(#388); includes(#389)
76394RequirementsIn specification[SR-DAQ-001] Support Multi-Sensor Environmental Data AcquisitionThe system shall support simultaneous acquisition of environmental data from multiple sensor types, including temperature, humidity, CO2, NH3, VOC, particulate matter, and ambient light.\n\nThis requirements traces to feature [F-DAQ-01].includes(#388)
77395RequirementsIn specification[SR-DAQ-002] Dedicated Sensor Slot MappingThe system shall assign each supported sensor type to a predefined and unique hardware slot to prevent incorrect sensor insertion or configuration.\n\nThis requirements traces to feature [F-DAQ-01].includes(#388)
78396RequirementsIn specification[SR-DAQ-003] Sensor Presence DetectionThe system shall detect the physical presence of each sensor via a dedicated hardware detection signal prior to sensor initialization.\n\nThis requirements traces to feature [F-DAQ-01].includes(#388)
79397RequirementsIn specification[SR-DAQ-004] Conditional Sensor InitializationThe system shall initialize and activate only those sensors that are detected as present and enabled during system startup or reinitialization.\n\nThis requirements traces to feature [F-DAQ-01].includes(#389)
80398RequirementsIn specification[SR-DAQ-005] High-Frequency Sensor SamplingThe system shall sample each enabled sensor multiple times within a single acquisition cycle, with a default of ten (10) samples per sensor per cycle.\n\nThis requirements traces to feature [F-DAQ-02].includes(#389)
81399RequirementsIn specification[SR-DAQ-006] Local Sensor Data FilteringThe system shall apply a local filtering mechanism to raw sensor samples to produce a single filtered sensor value per acquisition cycle.\n\nThe filtering mechanism shall execute on the Sensor Hub.\n\nThis requirements traces to feature [F-DAQ-02].includes(#389)
82400RequirementsIn specification[SR-DAQ-007] Deterministic Sampling WindowThe system shall complete each sensors sampling and filtering process within a bounded and deterministic time window to ensure real-time behavior.\n\nThis requirements traces to feature [F-DAQ-02].includes(#390)
83401RequirementsIn specification[SR-DAQ-008] Timestamp Generation for Sensor DataThe system shall generate a timestamp for each filtered sensor value upon completion of the acquisition and filtering process.\n\nThis requirements traces to feature [F-DAQ-03].includes(#390)
84402RequirementsIn specification[SR-DAQ-009] Timestamped Sensor Data Record StructureThe system shall generate a timestamped sensor data record containing at minimum the sensor identifier, sensor type, filtered value, unit of measurement, timestamp, and data validity status.\n\nThis requirements traces to feature [F-DAQ-03].includes(#390)
85403RequirementsIn specification[SR-DAQ-010] Availability of Latest Sensor DataThe system shall maintain the most recent timestamped sensor data record in memory and make it available for persistence and on-demand communication requests.\n\nThis requirements traces to feature [F-DAQ-03].includes(#390)
86405FeatureIn specification[F-DQC-01] Automatic Sensor DetectionThe system provides automatic detection of physically connected sensors on the Sensor Hub. Each sensor slot includes a dedicated detection mechanism that allows the system to identify whether a sensor is installed and eligible for initialization. Detected sensors are dynamically registered during system startup or reinitialization.includes(#411); includes(#410); includes(#409); includes(#424)
87406FeatureIn specification[F-DQC-02] Sensor Type EnforcementThe system enforces strict sensor-to-slot compatibility. Each physical sensor slot is assigned to a specific sensor type, and incorrect sensor insertion is detected and rejected to prevent invalid data acquisition and configuration errors.includes(#414); includes(#413); includes(#412); includes(#424)
88407FeatureIn specification[F-DQC-03] Sensor Failure DetectionThe system continuously monitors sensor behavior to detect failures such as disconnection, non-responsiveness, or invalid measurements. Failed sensors are isolated, logged, and reported to the Main Hub.includes(#418); includes(#417); includes(#416); includes(#415); includes(#424)
89408FeatureIn specification[F-DQC-04] Machine Constants & Calibration ManagementThe system manages Machine Constants and calibration parameters defining sensor configuration, calibration coefficients, and communication identifiers. These parameters are persisted in non-volatile storage and may be updated remotely via the Main Hub.includes(#422); includes(#421); includes(#420); includes(#423); includes(#419); includes(#424)
90409RequirementsIn specification[SR-DQC-001] Detect Sensor PresenceThe system shall detect the physical presence of each sensor using a dedicated hardware-based detection mechanism. This requirement traces to feature [F-DQC-01].includes(#405)
91410RequirementsIn specification[SR-DQC-002] Perform Sensor Detection During InitializationThe system shall perform sensor presence detection during system startup and after any reinitialization or reconfiguration event. This requirement traces to feature [F-DQC-01].includes(#405)
92411RequirementsIn specification[SR-DQC-003] Conditional Sensor InitializationThe system shall initialize and activate only sensors that are detected as present. This requirement traces to feature [F-DQC-01].includes(#405)
93412RequirementsIn specification[SR-DQC-004] Assign Fixed Sensor Slot TypesThe system shall assign each physical sensor slot to a predefined sensor type. This requirement traces to feature [F-DQC-02].includes(#406)
94413RequirementsIn specification[SR-DQC-005] Verify Sensor Type CompatibilityThe system shall verify that a detected sensor matches the expected sensor type for its assigned slot. This requirement traces to feature [F-DQC-02].includes(#406)
95414RequirementsIn specification[SR-DQC-006] Reject Invalid Sensor ConfigurationsThe system shall reject and report any sensor-slot mismatch as a diagnostic event. This requirement traces to feature [F-DQC-02].includes(#406)
96415RequirementsIn specification[SR-DQC-007] Monitor Sensor HealthThe system shall continuously monitor sensor responsiveness and signal validity during normal operation. This requirement traces to feature [F-DQC-03].includes(#407)
97416RequirementsIn specification[SR-DQC-008] Detect Sensor Failure ConditionsThe system shall detect sensor failures including disconnection, non-responsiveness, and out-of-range measurement values. This requirement traces to feature [F-DQC-03].includes(#407)
98417RequirementsIn specification[SR-DQC-009] Isolate Failed SensorsThe system shall mark detected faulty sensors as defective and exclude them from data acquisition and reporting. This requirement traces to feature [F-DQC-03].includes(#407)
99418RequirementsIn specification[SR-DQC-010] Report Sensor FailuresThe system shall report detected sensor failures to the Main Hub with timestamps and failure classification. This requirement traces to feature [F-DQC-03].includes(#407)
100419RequirementsIn specification[SR-DQC-011] Maintain Machine Constants DatasetThe system shall maintain a Machine Constants dataset defining sensor configuration, calibration parameters, and communication identifiers. This requirement traces to feature [F-DQC-04].includes(#408)
101420RequirementsIn specification[SR-DQC-012] Persist Machine ConstantsThe system shall store the Machine Constants dataset in non-volatile storage. This requirement traces to feature [F-DQC-04].includes(#408)
102421RequirementsIn specification[SR-DQC-013] Load Machine Constants at StartupThe system shall load and apply the Machine Constants dataset during system initialization. This requirement traces to feature [F-DQC-04].includes(#408)
103422RequirementsIn specification[SR-DQC-014] Support Remote Machine Constants UpdateThe system shall support remote updates of the Machine Constants dataset initiated by the Main Hub. This requirement traces to feature [F-DQC-04].includes(#408)
104423RequirementsIn specification[SR-DQC-015] Controlled Reinitialization After UpdateThe system shall apply updated Machine Constants only after executing a controlled teardown and reinitialization procedure. This requirement traces to feature [F-DQC-04].includes(#408)
105424FeatureIn specification[FG-DQC-] Data Quality & Calibration Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # Feature Engineering Specification ## Data Quality &amp; Calibration Features **Feature Group ID:** FG-DQC **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub **Applies To:** Indoor poultry farm sensor hubs **Dependencies:** Sensor Data Acquisition Features (FG-DAQ), Diagnostics Features (FG-DIAG), Persistence / DP Stack ## 1\. Purpose and Objectives The **Data Quality &amp; Calibration Features** ensure that all sensor data generated by the Sensor Hub is **valid, trustworthy, correctly classified, and calibrated** throughout the system lifecycle. These features provide mechanisms for: * Automatic identification of connected sensors * Enforcing correct sensorslot compatibility * Early detection and isolation of faulty sensors * Centralized management of machine constants and calibration parameters The goal is to maintain **high data integrity**, reduce commissioning errors, support **remote reconfiguration**, and ensure safe operation during updates or failures. ## 2\. Feature Overview and Relationships <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature Name</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Primary Objective</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related Features</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Automatic Sensor Detection</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Detect connected sensors dynamically</p></td><td class="op-uc-table--cell"><p class="op-uc-p">F-DAQ-01, F-DIAG-01</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensor Type Enforcement</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Prevent incorrect sensor-slot usage</p></td><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-01</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Sensor Failure Detection</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Identify and isolate faulty sensors</p></td><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-02</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-04</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Machine Constants &amp; Calibration Management</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Manage static configuration and calibration</p></td><td class="op-uc-table--cell"><p class="op-uc-p">OTA, Persistence, Teardown</p></td></tr></tbody></table></figure> ## 3\. Functional Feature Descriptions ### 3.1 F-DQC-01: Automatic Sensor Detection **Description** The Sensor Hub shall automatically detect which sensors are physically connected at runtime. Each sensor slot provides a dedicated detection mechanism (e.g., GPIO presence pin or ID signal) that allows the system to determine whether a sensor is installed. Detected sensors are dynamically initialized and incorporated into the data acquisition workflow without requiring firmware changes. **Key Capabilities** * Hardware-based presence detection * Runtime sensor enumeration * Dynamic initialization during boot or reconfiguration * Integration with diagnostics and data acquisition ### 3.2 F-DQC-02: Sensor Type Enforcement **Description** Each physical sensor slot on the Sensor Hub is dedicated to a specific sensor type. The system enforces sensor-slot compatibility to prevent incorrect sensor insertion (e.g., humidity sensor in temperature slot). This enforcement is achieved via electrical identification, pin mapping, or firmware configuration defined in Machine Constants. **Key Capabilities** * Fixed sensor-to-slot mapping * Sensor identity verification * Rejection of invalid sensor configurations * Diagnostic reporting of configuration violations ### 3.3 F-DQC-03: Sensor Failure Detection **Description** The Sensor Hub continuously monitors sensor behavior to detect failures such as disconnection, out-of-range values, non-responsive sensors, or abnormal signal patterns. Detected sensor failures are classified, logged, timestamped, and reported to the Main Hub. Failed sensors are excluded from control and analytics workflows to prevent propagation of invalid data. **Key Capabilities** * Runtime health monitoring * Failure classification * Fault isolation * Diagnostic event generation ### 3.4 F-DQC-04: Machine Constants &amp; Calibration Management **Description** The system maintains a **Machine Constants (MC)** dataset that defines static and semi-static configuration parameters for the Sensor Hub, including: * Installed sensor types and slots * Communication identifiers and addressing * Calibration coefficients and offsets * Sensor-specific limits and scaling Machine Constants are persisted in non-volatile storage (SD card) and loaded during system initialization. Updates may be received from the Main Hub and applied via a controlled teardown and reinitialization process. **Key Capabilities** * Persistent configuration storage * Runtime loading and validation * Remote update support * Controlled reinitialization sequence ## 4\. System Requirements (Formal SHALL Statements) ### 4.1 Automatic Sensor Detection **SR-DQC-001** The system shall detect the presence of each sensor using a dedicated hardware detection mechanism. **SR-DQC-002** The system shall perform sensor presence detection during system startup and after any reinitialization event. **SR-DQC-003** The system shall initialize only those sensors that are detected as present. ### 4.2 Sensor Type Enforcement **SR-DQC-004** The system shall assign each sensor slot to a predefined sensor type. **SR-DQC-005** The system shall verify that the detected sensor matches the expected sensor type for the slot. **SR-DQC-006** The system shall reject and report any sensor-slot mismatch as a diagnostic event. ### 4.3 Sensor Failure Detection **SR-DQC-007** The system shall continuously monitor sensor responsiveness and signal validity during operation. **SR-DQC-008** The system shall detect sensor failures including disconnection, non-responsiveness, and invalid measurement ranges. **SR-DQC-009** The system shall mark a failed sensor as defective and exclude it from data reporting. **SR-DQC-010** The system shall report detected sensor failures to the Main Hub with timestamps and failure classification. ### 4.4 Machine Constants &amp; Calibration Management **SR-DQC-011** The system shall maintain a Machine Constants dataset defining sensor configuration, calibration parameters, and communication identifiers. **SR-DQC-012** The system shall persist the Machine Constants dataset in non-volatile storage. **SR-DQC-013** The system shall load and apply Machine Constants during system initialization. **SR-DQC-014** The system shall support remote updates of the Machine Constants dataset initiated by the Main Hub. **SR-DQC-015** The system shall apply updated Machine Constants only after executing a controlled teardown and reinitialization sequence. ## 5\. Traceability Summary <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DQC-001 → SR-DQC-003</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DQC-004 → SR-DQC-006</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DQC-007 → SR-DQC-010</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DQC-04</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DQC-011 → SR-DQC-015</p></td></tr></tbody></table></figure> ##includes(#529); includes(#408); includes(#407); includes(#406); includes(#405)
106425FeatureIn specification[FG-COM] Communication Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # Feature Engineering Specification ## Communication Features **Feature Group ID:** FG-COM **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub **Applies To:** Indoor poultry farm sensor hubs **Dependencies:** * Sensor Data Acquisition (FG-DAQ) * Data Quality &amp; Calibration (FG-DQC) * Diagnostics &amp; Health Monitoring (FG-DIAG) * Security &amp; Safety Features (FG-SEC) ## 1\. Purpose and Objectives The **Communication Features** define how the Sensor Hub exchanges data and control information with external entities. These features ensure that sensor data, diagnostics, configuration updates, and control requests are transferred in a **reliable, secure, and deterministic manner**. The communication layer is designed to: * Support hierarchical farm architecture (Sensor Hub → Main Hub) * Enable on-demand and event-driven data transfer * Allow limited peer-to-peer communication between Sensor Hubs * Maintain robustness under intermittent connectivity ## 2\. Feature Overview and Relationships <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature Name</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Primary Objective</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related Features</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Main Hub Communication</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Primary uplink/downlink with Main Hub</p></td><td class="op-uc-table--cell"><p class="op-uc-p">OTA, Diagnostics, MC Management</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">On-Demand Data Broadcasting</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Provide latest data upon request</p></td><td class="op-uc-table--cell"><p class="op-uc-p">DAQ, DP Stack</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Peer Sensor Hub Communication</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Limited hub-to-hub coordination</p></td><td class="op-uc-table--cell"><p class="op-uc-p">System Management</p></td></tr></tbody></table></figure> ## 3\. Functional Feature Descriptions ### 3.1 F-COM-01: Main Hub Communication **Description** The Sensor Hub shall establish and maintain a bidirectional communication channel with the Main Hub. This channel is used for transmitting sensor data, diagnostics, alarms, and status information, as well as receiving commands, firmware updates, and Machine Constants updates. The communication mechanism shall support reliable delivery, message integrity verification, and connection state monitoring. **Key Capabilities** * Bidirectional communication * Command and response handling * Diagnostics and status reporting * Integration with OTA and MC updates ### 3.2 F-COM-02: On-Demand Data Broadcasting **Description** The Sensor Hub shall support on-demand transmission of the most recent sensor data upon request from the Main Hub. This allows the Main Hub to query real-time conditions without waiting for periodic reporting cycles. Data broadcasts include timestamped sensor values and associated validity status. **Key Capabilities** * Request/response data exchange * Latest-value data delivery * Timestamp and validity inclusion * Low-latency response ### 3.3 F-COM-03: Peer Sensor Hub Communication **Description** Sensor Hubs shall be capable of limited peer-to-peer communication for coordination purposes such as connectivity checks, time synchronization assistance, or basic status exchange. Peer communication is optional, demand-driven, and does not replace the primary communication path through the Main Hub. **Key Capabilities** * Hub-to-hub message exchange * Minimal command set * No dependency on centralized infrastructure * Isolation from control logic ## 4\. System Requirements (Formal SHALL Statements) ### 4.1 Main Hub Communication **SR-COM-001** The system shall support bidirectional communication between the Sensor Hub and the Main Hub. **SR-COM-002** The system shall transmit sensor data, diagnostics, and system status information to the Main Hub. **SR-COM-003** The system shall receive commands, configuration updates, and firmware update requests from the Main Hub. **SR-COM-004** The system shall monitor and report the communication link status with the Main Hub. ### 4.2 On-Demand Data Broadcasting **SR-COM-005** The system shall support on-demand requests from the Main Hub for sensor data. **SR-COM-006** The system shall respond to on-demand data requests with the most recent timestamped sensor data. **SR-COM-007** The system shall include data validity and sensor status information in on-demand responses. ### 4.3 Peer Sensor Hub Communication **SR-COM-008** The system shall support limited peer-to-peer communication between Sensor Hubs. **SR-COM-009** The system shall allow peer communication for basic coordination functions such as connectivity checks or time synchronization. **SR-COM-010** The system shall ensure that peer Sensor Hub communication does not interfere with Main Hub communication or control operations. ## 5\. Traceability Mapping ### 5.1 Feature → System Requirement Mapping <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-COM-001, SR-COM-002, SR-COM-003, SR-COM-004</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-COM-005, SR-COM-006, SR-COM-007</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-COM-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-COM-008, SR-COM-009, SR-COM-010</p></td></tr></tbody></table></figure> ## 6\. Engineering Notes and Constraints * Communication protocol selection (Wi-Fi, ESP-NOW, proprietary RF, etc.) is deferred to the Software Requirements phase. * Security (authentication, encryption) is defined under **Security &amp; Safety Features**. * Communication failures shall trigger diagnostics events but shall not block sensor acquisition. ##includes(#530); includes(#428); includes(#427); includes(#426)
107426FeatureIn specification[F-COM-01] Main Hub CommunicationThe system provides bidirectional communication between the Sensor Hub and the Main Hub. This communication channel is used to transmit sensor data, diagnostics, and system status information, as well as to receive commands, configuration updates, and firmware update requests.includes(#590); includes(#589); includes(#588); includes(#432); includes(#431); includes(#430); includes(#429); includes(#425)
108427FeatureIn specification[F-COM-02] On-Demand Data BroadcastingThe system supports on-demand transmission of the most recent timestamped sensor data upon request from the Main Hub, enabling real-time data access outside periodic reporting cycles.includes(#435); includes(#434); includes(#433); includes(#425)
109428FeatureIn specification[F-COM-03] Peer Sensor Hub CommunicationThe system supports limited peer-to-peer communication between Sensor Hubs for coordination purposes such as connectivity checks or basic time synchronization, without replacing Main Hub communication.includes(#592); includes(#591); includes(#438); includes(#437); includes(#436); includes(#425)
110429RequirementsIn specification[SR-COM-001] Bidirectional Main Hub CommunicationThe system shall support bidirectional communication between the Sensor Hub and the Main Hub. This requirement traces to feature [F-COM-01].includes(#426)
111430RequirementsIn specification[SR-COM-002] Transmit Data to Main HubThe system shall transmit sensor data, diagnostics information, and system status to the Main Hub. This requirement traces to feature [F-COM-01].includes(#426)
112431RequirementsIn specification[SR-COM-003] Receive Commands from Main HubThe system shall receive commands, configuration updates, and firmware update requests from the Main Hub. This requirement traces to feature [F-COM-01].includes(#426)
113432RequirementsIn specification[SR-COM-004] Monitor Communication Link StatusThe system shall monitor the status of the communication link with the Main Hub and report link availability and failure conditions. This requirement traces to feature [F-COM-01].includes(#426)
114433RequirementsIn specification[SR-COM-005] Support On-Demand Data RequestsThe system shall support on-demand requests from the Main Hub for sensor data. This requirement traces to feature [F-COM-02].includes(#427)
115434RequirementsIn specification[SR-COM-006] Respond with Latest Sensor DataThe system shall respond to on-demand data requests with the most recent timestamped sensor data. This requirement traces to feature [F-COM-02].includes(#427)
116435RequirementsIn specification[SR-COM-007] Include Data Validity in ResponsesThe system shall include sensor status and data validity information in on-demand data responses. This requirement traces to feature [F-COM-02].includes(#427)
117436RequirementsIn specification[SR-COM-008] Support Peer Sensor Hub CommunicationThe system shall support limited peer-to-peer communication between Sensor Hubs. This requirement traces to feature [F-COM-03].includes(#428)
118437RequirementsIn specification[SR-COM-009] Allow Peer Coordination FunctionsThe system shall allow peer communication for basic coordination functions such as connectivity checks or time synchronization. This requirement traces to feature [F-COM-03].includes(#428)
119438RequirementsIn specification[SR-COM-010] Isolate Peer Communication from Control LogicThe system shall ensure that peer Sensor Hub communication does not interfere with Main Hub communication or control operations. This requirement traces to feature [F-COM-03].includes(#428)
120439FeatureNew[FG-DIAG-] Diagnostics & Health Monitoring Features# Feature Engineering Specification ## Diagnostics &amp; Health Monitoring Features **Feature Group ID:** FG-DIAG **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub **Applies To:** Indoor poultry farm sensor hubs **Dependencies:** * Sensor Data Acquisition (FG-DAQ) * Data Quality &amp; Calibration (FG-DQC) * Communication Features (FG-COM) * Persistence / DP Stack ## 1\. Purpose and Objectives The **Diagnostics &amp; Health Monitoring Features** provide a structured and persistent mechanism to detect, classify, record, and expose system faults, warnings, and health states. These features ensure that: * Failures are detectable and explainable * Root causes are traceable * Diagnostic data survives resets and power loss * Engineers can access diagnostic information locally or remotely The diagnostics subsystem is **non-intrusive**, meaning it shall not block core sensing or communication functions unless the system enters a fatal state. ## 2\. Feature Overview and Relationships <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature Name</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Primary Objective</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related Features</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Diagnostic Code Management</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Standardize fault and warning identification</p></td><td class="op-uc-table--cell"><p class="op-uc-p">DQC, COM</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Diagnostic Data Storage</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Persist diagnostic events</p></td><td class="op-uc-table--cell"><p class="op-uc-p">DP Stack</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Diagnostic Session</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Engineer access to diagnostics</p></td><td class="op-uc-table--cell"><p class="op-uc-p">COM, System Mgmt</p></td></tr></tbody></table></figure> ## 3\. Functional Feature Descriptions ### 3.1 F-DIAG-01: Diagnostic Code Management **Description** The system shall implement a structured diagnostic code framework to represent system health conditions, warnings, errors, and fatal faults. Each diagnostic event is associated with: * A unique diagnostic code * Severity level (info, warning, error, fatal) * A hierarchical root-cause classification * Timestamp and source component This framework enables consistent fault handling across all system components. **Key Capabilities** * Unique diagnostic code registry * Severity classification * Root-cause hierarchy * Event-based reporting ### 3.2 F-DIAG-02: Diagnostic Data Storage **Description** The system shall persist diagnostic events in non-volatile storage to allow post-failure analysis and long-term health monitoring. Stored diagnostics remain available across system resets and power cycles until explicitly cleared by an authorized diagnostic session or command. **Key Capabilities** * Persistent storage of diagnostic events * Timestamped records * Bounded storage with overwrite policy * Integration with DP / Persistence layer ### 3.3 F-DIAG-03: Diagnostic Session **Description** The system shall provide a diagnostic session that allows authorized engineers or tools to access diagnostic data, inspect system health, and perform maintenance operations. The diagnostic session may be accessed locally or remotely via the communication interface and supports read and limited control operations. **Key Capabilities** * Session-based access * Read diagnostics and health data * Clear diagnostic records * Controlled command execution ## 4\. System Requirements (Formal SHALL Statements) ### 4.1 Diagnostic Code Management **SR-DIAG-001** The system shall implement a diagnostic code framework for reporting system health, warnings, errors, and fatal faults. **SR-DIAG-002** The system shall assign a unique diagnostic code to each detected fault or abnormal condition. **SR-DIAG-003** The system shall classify diagnostic codes by severity level. **SR-DIAG-004** The system shall associate each diagnostic event with a timestamp and source component. ### 4.2 Diagnostic Data Storage **SR-DIAG-005** The system shall persist diagnostic events in non-volatile storage. **SR-DIAG-006** The system shall retain diagnostic data across system resets and power cycles. **SR-DIAG-007** The system shall implement a bounded diagnostic storage mechanism with a defined overwrite or rollover policy. ### 4.3 Diagnostic Session **SR-DIAG-008** The system shall provide a diagnostic session interface for accessing diagnostic data. **SR-DIAG-009** The system shall allow authorized diagnostic sessions to retrieve stored diagnostic events. **SR-DIAG-010** The system shall allow authorized diagnostic sessions to clear diagnostic records. **SR-DIAG-011** The system shall ensure that diagnostic sessions do not interfere with normal sensor acquisition or communication operations. ## 5\. Feature ↔ System Requirement Mapping <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DIAG-001, SR-DIAG-002, SR-DIAG-003, SR-DIAG-004</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DIAG-005, SR-DIAG-006, SR-DIAG-007</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DIAG-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DIAG-008, SR-DIAG-009, SR-DIAG-010, SR-DIAG-011</p></td></tr></tbody></table></figure> ## 6\. Engineering Notes * Diagnostic codes should be versioned to support firmware evolution. * Diagnostic severity may be linked to LED indicators (green/yellow/red). * Fatal diagnostics may trigger the teardown mechanism defined elsewhere. * Security and access control for diagnostic sessions are handled under **Security &amp; Safety Features**. ##includes(#442); includes(#441); includes(#440)
121440FeatureNew[F-DIAG-01] Diagnostic Code ManagementThe system provides a structured diagnostic code framework to represent system health states, warnings, errors, and fatal faults. Each diagnostic event is associated with a unique code, severity level, root-cause classification, timestamp, and source component.includes(#446); includes(#445); includes(#444); includes(#443); includes(#439)
122441FeatureNew[F-DIAG-02] Diagnostic Data StorageThe system persists diagnostic events in non-volatile storage to enable post-failure analysis and long-term health monitoring. Stored diagnostic data remains available across resets and power cycles until explicitly cleared.includes(#449); includes(#448); includes(#447); includes(#439)
123442FeatureNew[F-DIAG-03] Diagnostic SessionThe system provides a diagnostic session that allows authorized engineers or tools to access diagnostic data, inspect system health, and perform limited maintenance actions without disrupting normal operation.includes(#531); includes(#453); includes(#452); includes(#451); includes(#450); includes(#439)
124443RequirementsNew[SR-DIAG-001] Implement Diagnostic Code FrameworkThe system shall implement a diagnostic code framework for reporting system health conditions, warnings, errors, and fatal faults. This requirement traces to feature [F-DIAG-01].includes(#440)
125444RequirementsNew[SR-DIAG-002] Assign Unique Diagnostic CodesThe system shall assign a unique diagnostic code to each detected fault or abnormal condition. This requirement traces to feature [F-DIAG-01].includes(#440)
126445RequirementsNew[SR-DIAG-003] Classify Diagnostic SeverityThe system shall classify diagnostic codes by severity level including informational, warning, error, and fatal. This requirement traces to feature [F-DIAG-01].includes(#440)
127446RequirementsNew[SR-DIAG-004] Timestamp and Source DiagnosticsThe system shall associate each diagnostic event with a timestamp and the originating system component. This requirement traces to feature [F-DIAG-01].includes(#440)
128447RequirementsNew[SR-DIAG-005] Persist Diagnostic EventsThe system shall persist diagnostic events in non-volatile storage. This requirement traces to feature [F-DIAG-02].includes(#441)
129448RequirementsNew[SR-DIAG-006] Retain Diagnostics Across ResetsThe system shall retain diagnostic data across system resets and power cycles. This requirement traces to feature [F-DIAG-02].includes(#441)
130449RequirementsNew[SR-DIAG-007] Bounded Diagnostic StorageThe system shall implement a bounded diagnostic storage mechanism with a defined overwrite or rollover policy. This requirement traces to feature [F-DIAG-02].includes(#441)
131450RequirementsNew[SR-DIAG-008] Provide Diagnostic Session InterfaceThe system shall provide a diagnostic session interface for accessing diagnostic and system health data. This requirement traces to feature [F-DIAG-03].includes(#442)
132451RequirementsNew[SR-DIAG-009] Retrieve Diagnostic RecordsThe system shall allow authorized diagnostic sessions to retrieve stored diagnostic events. This requirement traces to feature [F-DIAG-03].includes(#442)
133452RequirementsNew[SR-DIAG-010] Clear Diagnostic RecordsThe system shall allow authorized diagnostic sessions to clear stored diagnostic records. This requirement traces to feature [F-DIAG-03].includes(#442)
134453RequirementsNew[SR-DIAG-011] Non-Intrusive Diagnostic SessionsThe system shall ensure that diagnostic sessions do not interfere with normal sensor acquisition or communication operations. This requirement traces to feature [F-DIAG-03].includes(#442)
135454FeatureNew[FG-DATA] Persistence & Data Management Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # Feature Engineering Specification ## Persistence &amp; Data Management Features **Feature Group ID:** FG-DATA **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub **Applies To:** Indoor poultry farm sensor hubs **Dependencies:** * Sensor Data Acquisition (FG-DAQ) * Data Quality &amp; Calibration (FG-DQC) * Diagnostics &amp; Health Monitoring (FG-DIAG) * System State Management / Teardown Mechanism ## 1\. Purpose and Objectives The **Persistence &amp; Data Management Features** define how the Sensor Hub stores, protects, and manages critical runtime and historical data. These features ensure that: * Sensor data and system state are not lost during resets or failures * Data storage is abstracted from application logic * Critical data is safely handled during firmware updates, configuration changes, or fatal faults The persistence layer is a **foundational system service**, supporting diagnostics, calibration, OTA, and recovery operations. ## 2\. Feature Overview and Relationships <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature Name</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Primary Objective</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related Features</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Persistent Sensor Data Storage</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Store timestamped sensor data</p></td><td class="op-uc-table--cell"><p class="op-uc-p">DAQ, COM</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Data Persistence Abstraction (DP)</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Abstract storage access</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Application Layer</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Safe Data Handling During State Transitions</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Protect data during teardown</p></td><td class="op-uc-table--cell"><p class="op-uc-p">OTA, System Mgmt</p></td></tr></tbody></table></figure> ## 3\. Functional Feature Descriptions ### 3.1 F-DATA-01: Persistent Sensor Data Storage **Description** The system shall persist timestamped sensor data to non-volatile storage to support historical analysis, diagnostics correlation, and recovery scenarios. Persistence may include: * Filtered sensor values * Timestamps * Sensor validity and status metadata The persistence policy (frequency, retention window, overwrite behavior) is configurable and optimized for storage longevity and performance. **Key Capabilities** * Non-volatile storage (SD card / NVM) * Timestamped records * Configurable retention policy * Integration with DAQ and COM ### 3.2 F-DATA-02: Data Persistence Abstraction (DP Component) **Description** The system shall provide a **Data Persistence (DP) component** that abstracts storage access for all upper layers. Application and feature modules interact with the DP component rather than directly accessing storage hardware. The DP component manages: * Data model definitions * Serialization and deserialization * Storage backend selection * Consistency and integrity guarantees **Key Capabilities** * Unified persistence API * Storage backend abstraction * Centralized data ownership * Reduced coupling between layers ### 3.3 F-DATA-03: Safe Data Handling During State Transitions **Description** The system shall ensure safe and deterministic handling of data during critical state transitions, including: * Firmware updates (OTA) * Machine Constants updates * System resets * Fatal error handling Before entering such transitions, the system executes a controlled data finalization process to flush buffers, persist critical state, and verify data integrity. **Key Capabilities** * Controlled data flush * Atomic write operations * Data integrity checks * Coordination with teardown mechanism ## 4\. System Requirements (Formal SHALL Statements) ### 4.1 Persistent Sensor Data Storage **SR-DATA-001** The system shall persist timestamped sensor data in non-volatile storage. **SR-DATA-002** The system shall store sensor data together with sensor identifiers, timestamps, and validity status. **SR-DATA-003** The system shall support configurable data retention and overwrite policies. ### 4.2 Data Persistence Abstraction (DP Component) **SR-DATA-004** The system shall provide a Data Persistence (DP) component as the sole interface for persistent data access. **SR-DATA-005** The system shall prevent application and feature modules from directly accessing storage hardware. **SR-DATA-006** The DP component shall support serialization and deserialization of structured system data. ### 4.3 Safe Data Handling During State Transitions **SR-DATA-007** The system shall ensure that all critical runtime data is flushed to non-volatile storage before entering a controlled teardown or reset. **SR-DATA-008** The system shall protect data integrity during firmware updates and configuration changes. **SR-DATA-009** The system shall verify successful data persistence before completing a state transition. ## 5\. Feature ↔ System Requirement Mapping <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DATA-001, SR-DATA-002, SR-DATA-003</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DATA-004, SR-DATA-005, SR-DATA-006</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-DATA-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-DATA-007, SR-DATA-008, SR-DATA-009</p></td></tr></tbody></table></figure> ## 6\. Engineering Notes * The DP component aligns with your **DP Stack** already defined in the architecture. * Atomic write strategies (e.g., temp file + rename) are recommended. * Diagnostic events should be generated on persistence failures. * Storage wear-leveling considerations apply for SD/NVM. ##includes(#532); includes(#464); includes(#463); includes(#462)
136455TaskNewTest backup
137456TaskNewPlan for Sensor Hub version 1
138457TaskNewplanning scope SH v1## Phase 1 — System Validation &amp; Refinement (NOW) **Goal:** Freeze system intent before design ### Tasks * ✔ Review Feature Coverage (you are almost done) * ✔ Review SR completeness (done) * ⏳ Add _cross-feature constraints_ (small doc) * ⏳ Add _system assumptions &amp; limitations_ 📄 Output: * **System Requirements Baseline (Frozen)** * **Architecture Overview (Sensor Hub)** ## Phase 2 — Architecture Definition (Before Coding) This is where **AI shines**. ### Deliverables * Functional Requirement Document (FRD) * Software Architecture Document (SAD) * Component diagrams * State diagrams * Data flow diagrams 📄 These should be **Markdown-first**, versioned. ## Phase 3 — Software Requirements (Later, per component) Not now — **youre right to delay this**. ## Phase 4 — Implementation with AI IDEs Only after architecture is stable.
139458TaskNewCreate sprints
140459TaskNewPlan for sprints
141460TaskNewSystem feature review <br> <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Area</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Goal</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Feature completeness</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Are any operational gaps missing?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Cross-feature conflicts</p></td><td class="op-uc-table--cell"><p class="op-uc-p">OTA vs Persistence vs Security</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">State handling</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Are all features state-aware?</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Safety behavior</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Fault paths, teardown correctness</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Scalability</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Future-proofing without overengineering</p></td></tr></tbody></table></figure><br> ### 🟦 IEC 61508 (Functional Safety _Guidance Only_) **What you already match well:** * Deterministic states (F-SYS-01) * Controlled teardown (F-SYS-02) * Diagnostics &amp; fault handling * Separation of concerns **What to add later (optional):** * Safety integrity levels (SIL-like classification) * Fault reaction time definitions ### 🟦 IEC 61499 (Distributed Automation _Conceptual Alignment_) This is very relevant philosophically. **Strong matches:** * Event-driven design * Distributed nodes (sensor hubs) * State-based behavior * Clear separation of data and logic Later, you can map: * Features → Function Blocks * DP → Data services * Communication → Event channels ### 🟦 ISA-95 (Industrial Automation Layers) You are building **Level 12 perfectly**: * Sensors * Control logic * Local diagnostics * HMI (OLED) Main Hub / Cloud later becomes: * Level 2/3 (supervisory &amp; management) ### 🟦 ISO 27001 / IEC 62443 (Security _Principles Only_) You already cover: * Secure boot * Secure storage * Encrypted communication * Access control (debug sessions) Later, you can formalize: * Threat model * Key lifecycle * Secure provisioning
142461TaskNewplanning
143462FeatureNew[F-DATA-01] Persistent Sensor Data StorageProvides persistent storage of timestamped sensor data in non-volatile memory. Ensures sensor readings, timestamps, and validity metadata are retained for historical analysis, diagnostics, and system recovery. Supports configurable retention and overwrite policies.includes(#467); includes(#466); includes(#465); includes(#454)
144463FeatureNew[F-DATA-02] Data Persistence Abstraction (DP Component)Provides a centralized Data Persistence (DP) component that abstracts all access to non-volatile storage. Ensures application and feature modules interact through a unified persistence interface without direct storage hardware dependency.includes(#470); includes(#469); includes(#468); includes(#454)
145464FeatureNew[F-DATA-03] Safe Data Handling During State TransitionsEnsures safe and deterministic handling of persistent data during critical system state transitions such as firmware updates, machine constant updates, resets, and fatal fault conditions.includes(#473); includes(#472); includes(#471); includes(#454)
146465RequirementsNew[SR-DATA-001] Persistent Timestamped Sensor DataThe system shall persist timestamped sensor data in non-volatile storage.includes(#462)
147466RequirementsNew[SR-DATA-002] Sensor Data Metadata StorageThe system shall store sensor data together with sensor identifiers, timestamps, and validity status.includes(#462)
148467RequirementsNew[SR-DATA-003] Configurable Data Retention PolicyThe system shall support configurable data retention and overwrite policies for persisted sensor data.includes(#462)
149468RequirementsNew[SR-DATA-004] Data Persistence Component InterfaceThe system shall provide a Data Persistence (DP) component as the sole interface for persistent data access.includes(#463)
150469RequirementsNew[SR-DATA-005] Storage Access IsolationThe system shall prevent application and feature modules from directly accessing storage hardware.includes(#463)
151470RequirementsNew[SR-DATA-006] Structured Data SerializationThe DP component shall support serialization and deserialization of structured system data.includes(#463)
152471RequirementsNew[SR-DATA-007] Data Flush Before TeardownThe system shall flush all critical runtime data to non-volatile storage before entering a controlled teardown or reset state.includes(#464)
153472RequirementsNew[SR-DATA-008] Data Integrity During UpdatesThe system shall protect data integrity during firmware updates and machine constant updates.includes(#464)
154473RequirementsNew[SR-DATA-009] Persistence VerificationThe system shall verify successful data persistence before completing a system state transition.includes(#464)
155474FeatureNew[OTA] Firmware Update (OTA) Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # 8\. Firmware Update (OTA) Features ## 8.1 Feature Overview The **Firmware Update (OTA) Features** enable the Sensor Hub (Sub-Hub) to safely receive, validate, and activate new firmware images provided by the Main Hub. These features ensure **controlled firmware lifecycle management**, **data integrity**, **system availability**, and **fault containment** during firmware update operations. The OTA process is designed to: * Prevent unauthorized or corrupted firmware installation * Preserve critical system data and calibration information * Ensure recoverability in case of update failure * Minimize operational disruption This feature set applies **only to the Sensor Hub (ESP32-S3 based)** and does not include cloud-side or Main Hub OTA logic. ## 8.2 Scope and Assumptions ### In Scope * OTA negotiation and readiness handshake with Main Hub * Firmware image reception over secure communication * Temporary firmware storage on SD card * Firmware integrity verification (e.g., CRC, hash) * Controlled firmware activation and reboot ### Out of Scope * Firmware generation and signing * Cloud-side firmware distribution * Rollback policy definition (may be extended later) ## 8.3 Sub-Features ### 8.3.1 F-OTA-01: OTA Update Negotiation **Description** This sub-feature governs the initial negotiation phase between the Sensor Hub and the Main Hub prior to any firmware transfer. The Sensor Hub validates its current operational state and explicitly signals readiness before accepting an OTA update. **Responsibilities** * Receive OTA availability notification * Validate system readiness (power, storage, state) * Acknowledge or reject OTA request * Transition system into OTA-preparation mode ### 8.3.2 F-OTA-02: Firmware Reception and Storage **Description** This sub-feature handles the controlled reception of the firmware image from the Main Hub and its storage in non-volatile memory (SD card) without overwriting the currently running firmware. **Responsibilities** * Receive firmware in chunks * Store firmware image on SD card * Monitor transfer completeness * Prevent execution during download ### 8.3.3 F-OTA-03: Firmware Integrity Validation **Description** This sub-feature validates the integrity and correctness of the received firmware image prior to activation, ensuring that corrupted or incomplete firmware is never flashed. **Responsibilities** * Perform integrity checks (CRC, checksum, hash) * Validate firmware size and metadata * Reject invalid firmware images * Report validation status to Main Hub ### 8.3.4 F-OTA-04: Safe Firmware Activation **Description** This sub-feature manages the safe transition from the current firmware to the new firmware, ensuring all critical data is preserved and the system is left in a known safe state. **Responsibilities** * Trigger teardown procedure * Persist runtime and calibration data * Flash validated firmware image * Reboot system into updated firmware ## 8.4 System Requirements (Formal SHALL Statements) ### OTA Negotiation Requirements * **SR-OTA-001**: The system shall support OTA update negotiation initiated by the Main Hub. * **SR-OTA-002**: The system shall verify internal readiness before accepting an OTA update request. * **SR-OTA-003**: The system shall explicitly acknowledge or reject OTA requests. ### Firmware Reception &amp; Storage Requirements * **SR-OTA-004**: The system shall receive firmware images over the established communication channel. * **SR-OTA-005**: The system shall store received firmware images in non-volatile storage prior to validation. * **SR-OTA-006**: The system shall prevent overwriting the active firmware during firmware reception. ### Firmware Integrity Requirements * **SR-OTA-007**: The system shall validate the integrity of the received firmware image before activation. * **SR-OTA-008**: The system shall reject firmware images that fail integrity validation. * **SR-OTA-009**: The system shall report firmware validation results to the Main Hub. ### Safe Activation Requirements * **SR-OTA-010**: The system shall execute a controlled teardown before firmware activation. * **SR-OTA-011**: The system shall persist critical runtime data prior to firmware flashing. * **SR-OTA-012**: The system shall activate new firmware only after successful validation. * **SR-OTA-013**: The system shall reboot into the new firmware following successful activation. ## 8.5 Feature-to-Requirement Traceability <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-OTA-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-OTA-001, SR-OTA-002, SR-OTA-003</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-OTA-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-OTA-004, SR-OTA-005, SR-OTA-006</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-OTA-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-OTA-007, SR-OTA-008, SR-OTA-009</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-OTA-04</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-OTA-010, SR-OTA-011, SR-OTA-012, SR-OTA-013</p></td></tr></tbody></table></figure> ## 8.6 Architectural Considerations (Informative) * OTA logic shall be implemented as a **dedicated OTA Manager component** * Firmware storage shall be accessed via the **DP (Data Persistence) component** * OTA state transitions shall interact with: * Diagnostics subsystem * Machine Constants management * Teardown mechanism * OTA execution shall not block critical system diagnostics reporting ## 8.7 Related Features * **Persistence &amp; Data Management Features (F-DATA-03)** * **Diagnostics &amp; Health Monitoring Features** * **Security &amp; Safety Features (Secure Boot, Secure Flash)** ###includes(#533); includes(#478); includes(#477); includes(#476); includes(#475)
156475FeatureNew[F-OTA-01] OTA Update NegotiationHandles the initial OTA handshake between the Sensor Hub and Main Hub. The system validates readiness, acknowledges or rejects OTA requests, and transitions the system into OTA-preparation mode.includes(#481); includes(#480); includes(#479); includes(#474)
157476FeatureNew[F-OTA-02] Firmware Reception and StorageReceives firmware images from the Main Hub in a controlled manner and stores them in non-volatile storage without affecting the currently running firmware.includes(#484); includes(#483); includes(#482); includes(#474)
158477FeatureNew[F-OTA-03] Firmware Integrity ValidationValidates the integrity and correctness of the received firmware image using CRC, checksum, or hash mechanisms before allowing activation.includes(#487); includes(#486); includes(#485); includes(#474)
159478FeatureNew[F-OTA-04] Safe Firmware ActivationExecutes a controlled teardown, persists critical data, flashes validated firmware, and reboots the system into the updated firmware safely.includes(#491); includes(#490); includes(#489); includes(#488); includes(#474)
160479RequirementsNew[SR-OTA-001] OTA Negotiation SupportThe system shall support OTA update negotiation initiated by the Main Hub.includes(#475)
161480RequirementsNew[SR-OTA-002] OTA Readiness ValidationThe system shall verify internal readiness conditions before accepting an OTA update request.includes(#475)
162481RequirementsNew[SR-OTA-003] OTA AcknowledgementThe system shall explicitly acknowledge or reject OTA update requests.includes(#475)
163482RequirementsNew[SR-OTA-004] Firmware ReceptionThe system shall receive firmware images over the established communication interface.includes(#476)
164483RequirementsNew[SR-OTA-005] Firmware Temporary StorageThe system shall store received firmware images in non-volatile storage prior to validation.includes(#476)
165484RequirementsNew[SR-OTA-006] Active Firmware ProtectionThe system shall prevent overwriting or execution of the active firmware during firmware reception.includes(#476)
166485RequirementsNew[SR-OTA-007] Firmware Integrity VerificationThe system shall validate the integrity of received firmware images before activation.includes(#477)
167486RequirementsNew[SR-OTA-008] Firmware Rejection HandlingThe system shall reject firmware images that fail integrity validation.includes(#477)
168487RequirementsNew[SR-OTA-009] OTA Status ReportingThe system shall report firmware validation and OTA status to the Main Hub.includes(#477)
169488RequirementsNew[SR-OTA-010] OTA Teardown ExecutionThe system shall execute a controlled teardown procedure prior to firmware activation.includes(#478)
170489RequirementsNew[SR-OTA-011] Data Persistence Before FlashingThe system shall persist critical runtime data and calibration data before flashing new firmware.includes(#478)
171490RequirementsNew[SR-OTA-012] Controlled Firmware ActivationThe system shall activate new firmware only after successful integrity validation.includes(#478)
172491RequirementsNew[SR-OTA-013] OTA Reboot ExecutionThe system shall reboot into the new firmware after successful activation.includes(#478)
173492FeatureNew[SEC] Security & Safety Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # Security &amp; Safety Features ## Sensor Hub (Sub-Hub) Scope Only ## 1 Feature Overview The **Security &amp; Safety Features** ensure that the Sensor Hub operates only with trusted firmware, protects sensitive data at rest, and guarantees confidentiality and integrity of all communications. These features are foundational and cross-cutting, supporting all other functional features (DAQ, DQC, COM, DIAG, DATA, OTA). This feature set is designed to: * Prevent execution of unauthorized or malicious firmware * Protect firmware, configuration, and machine constants stored in memory * Secure all communications with cryptographic mechanisms * Provide deterministic and auditable behavior in case of security violations ## 2 Scope and Assumptions **In Scope** * Sensor Hub (ESP32-S3based) * Boot process security * Flash and external storage protection * Communication security with Main Hub and peer Sensor Hubs **Out of Scope** * Cloud server security policies * User identity management * Physical tamper detection hardware (optional future feature) ## 3 Sub-Feature Breakdown ### 3.1 F-SEC-01: Secure Boot #### Description Secure Boot ensures that only authenticated and authorized firmware images are executed on the Sensor Hub. During system startup, the bootloader verifies the cryptographic signature of the firmware image before handing over execution. If verification fails, the system enters a defined **security fault state** and prevents normal operation. #### Responsibilities * Firmware authenticity verification * Root-of-trust enforcement * Prevention of downgrade or rollback attacks (if enabled) #### Constraints * Must complete before any application code execution * Must be enforced on every boot (cold or warm) ### 3.2 F-SEC-02: Secure Flash Storage #### Description Secure Flash Storage protects sensitive data stored in internal flash and external storage (e.g., SD card) from unauthorized access or modification. Sensitive data includes: * Firmware images * Machine constants * Calibration data * Cryptographic material * Persistent diagnostics and logs #### Responsibilities * Encrypted storage of sensitive regions * Access control enforcement * Prevention of unauthorized read/write operations #### Constraints * Encryption must not compromise system boot reliability * Storage access must be mediated through controlled software components (e.g., DP component) ### 3.3 F-SEC-03: Encrypted Communication #### Description Encrypted Communication ensures that all data exchanged between the Sensor Hub and other entities (Main Hub, peer Sensor Hubs) is protected against eavesdropping, tampering, and impersonation. This includes: * Sensor data transmission * Diagnostics reporting * OTA negotiation and data transfer * Configuration and machine constant updates #### Responsibilities * Confidentiality of transmitted data * Integrity and authenticity verification * Secure session establishment #### Constraints * Must be compatible with ESP32-S3 cryptographic capabilities * Must support reconnection and key renewal mechanisms ## 4 Functional Flow Overview ### Secure Boot Flow (Simplified) ```text Power On ↓ ROM Bootloader ↓ Verify Firmware Signature ↓ [Valid] → Jump to Application [Invalid] → Enter Security Fault State ``` ### Secure Communication Flow (Simplified) ```text Session Request ↓ Mutual Authentication ↓ Key Exchange ↓ Encrypted Data Exchange ``` ## 5 System SHALL Requirements (Formal) ### Secure Boot Requirements * **SR-SEC-001**: The system shall verify the authenticity of the firmware image before execution during every boot cycle. * **SR-SEC-002**: The system shall prevent execution of firmware images that fail cryptographic verification. * **SR-SEC-003**: The system shall enter a defined security fault state upon secure boot failure. * **SR-SEC-004**: The system shall protect the root-of-trust against modification. ### Secure Flash Storage Requirements * **SR-SEC-005**: The system shall protect sensitive data stored in internal flash memory from unauthorized access. * **SR-SEC-006**: The system shall support encryption of sensitive data stored in external storage. * **SR-SEC-007**: The system shall restrict access to cryptographic keys to authorized system components only. * **SR-SEC-008**: The system shall ensure data integrity for stored configuration and machine constant files. ### Encrypted Communication Requirements * **SR-SEC-009**: The system shall encrypt all communication with the Main Hub. * **SR-SEC-010**: The system shall ensure integrity and authenticity of all received and transmitted messages. * **SR-SEC-011**: The system shall use secure communication channels for OTA firmware updates. * **SR-SEC-012**: The system shall detect and report communication security violations. ## 6 Traceability Matrix (Feature → System Requirements) <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Related System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SEC-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SEC-001, SR-SEC-002, SR-SEC-003, SR-SEC-004</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SEC-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SEC-005, SR-SEC-006, SR-SEC-007, SR-SEC-008</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SEC-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SEC-009, SR-SEC-010, SR-SEC-011, SR-SEC-012</p></td></tr></tbody></table></figure> ## 7 Design &amp; Implementation Notes (Non-Normative) * ESP32-S3 secure boot and flash encryption features should be leveraged where possible. * Key provisioning should occur during manufacturing or secure onboarding. * Security failures should integrate with the Diagnostics &amp; Health Monitoring feature set. * Security features must be active before any sensor data acquisition or communication begins. ## 8 Dependencies * **OTA Features** (for secure firmware updates) * **Communication Features** (transport layer) * **Diagnostics Features** (security fault reporting) * **Persistence &amp; DP Component** (secure storage abstraction) ###includes(#534); includes(#495); includes(#494); includes(#493)
174493FeatureNew[F-SEC-01] Secure BootEnsures that only authenticated and authorized firmware images are executed on the Sensor Hub by verifying cryptographic signatures during every system boot.includes(#499); includes(#498); includes(#497); includes(#496); includes(#492)
175494FeatureNew[F-SEC-02] Secure Flash StorageProtects firmware, machine constants, calibration data, cryptographic material, and sensitive system data stored in internal flash and external storage against unauthorized access or modification.includes(#503); includes(#502); includes(#501); includes(#500); includes(#492)
176495FeatureNew[F-SEC-03] Encrypted CommunicationProvides encrypted, authenticated, and integrity-protected communication between the Sensor Hub, Main Hub, and peer Sensor Hubs for all data exchange.includes(#507); includes(#506); includes(#505); includes(#504); includes(#492)
177496RequirementsNew[SR-SEC-001] Firmware Authenticity VerificationThe system shall verify the authenticity of the firmware image before execution during every boot cycle.includes(#493)
178497RequirementsNew[SR-SEC-002] Unauthorized Firmware BlockingThe system shall prevent execution of firmware images that fail cryptographic verification.includes(#493)
179498RequirementsNew[SR-SEC-003] Secure Boot Failure HandlingThe system shall enter a defined security fault state when secure boot verification fails.includes(#493)
180499RequirementsNew[SR-SEC-004] Root-of-Trust ProtectionThe system shall protect the root-of-trust against unauthorized modification.includes(#493)
181500RequirementsNew[SR-SEC-005] Flash Data Access ProtectionThe system shall protect sensitive data stored in internal flash memory from unauthorized access.includes(#494)
182501RequirementsNew[SR-SEC-006] Encrypted External StorageThe system shall support encryption of sensitive data stored in external storage devices.includes(#494)
183502RequirementsNew[SR-SEC-007] Cryptographic Key IsolationThe system shall restrict access to cryptographic keys to authorized system components only.includes(#494)
184503RequirementsNew[SR-SEC-008] Stored Data Integrity AssuranceThe system shall ensure integrity of stored configuration, calibration, and machine constant data.includes(#494)
185504RequirementsNew[SR-SEC-009] Encrypted Main Hub CommunicationThe system shall encrypt all communication exchanged with the Main Hub.includes(#495)
186505RequirementsNew[SR-SEC-010] Message Integrity and AuthenticityThe system shall ensure integrity and authenticity of all transmitted and received messages.includes(#495)
187506RequirementsNew[SR-SEC-011] Secure OTA Data TransferThe system shall use encrypted and authenticated communication channels for OTA firmware updates.includes(#495)
188507RequirementsNew[SR-SEC-012] Security Violation ReportingThe system shall detect and report communication and security violations to the Main Hub.includes(#495)
189508FeatureNew[SYS] System Management Features<macro class="toc op-uc-placeholder op-uc-toc"> </macro> # System Management Features ## Sensor Hub (Sub-Hub) Scope ## 1 Feature Overview The **System Management Features** provide deterministic control over the Sensor Hubs operational lifecycle, runtime state visibility, controlled shutdown behavior, and engineering interaction capabilities. This feature group is responsible for: * Managing system operational states and transitions * Ensuring safe teardown during updates or failures * Providing local humanmachine interaction via OLED display and buttons * Supporting engineering/debug sessions for diagnostics and maintenance These features act as the **supervisory layer** governing all other functional domains (DAQ, DQC, COM, DIAG, DATA, OTA, SEC). ## 2 Scope and Assumptions **In Scope** * ESP32-S3 Sensor Hub * OLED-based local UI (I2C) * Physical input buttons * Controlled state transitions and teardown * Debug and engineering access **Out of Scope** * Main Hub UI * Cloud dashboards * User authentication / role management ## 3 Sub-Feature Breakdown ### 3.1 F-SYS-01: System State Management #### Description System State Management defines and controls the operational states of the Sensor Hub and governs all valid transitions between them. The system operates as a **finite state machine (FSM)** with deterministic behavior. #### Typical System States * **INIT** Hardware and software initialization * **RUNNING** Normal sensor acquisition and communication * **WARNING** Non-fatal fault detected, degraded operation * **FAULT** Fatal error, core functionality disabled * **OTA\_UPDATE** Firmware update in progress * **MC\_UPDATE** Machine constants update in progress * **TEARDOWN** Controlled shutdown sequence * **IDLE / SERVICE** Engineering or diagnostic interaction #### Responsibilities * Enforce valid state transitions * Notify dependent components of state changes * Prevent unsafe operations during restricted states ### 3.2 F-SYS-02: Controlled Teardown Mechanism #### Description The Controlled Teardown Mechanism ensures that the Sensor Hub transitions safely from an active state into reset, update, or shutdown without data loss or corruption. Teardown is triggered by: * Firmware update * Machine constant update * Fatal system fault * Manual engineering command #### Teardown Sequence (Mandatory) 1. Stop sensor acquisition tasks 2. Flush pending data via DP component 3. Persist calibration, diagnostics, and runtime state 4. Close communication sessions 5. Release hardware resources 6. Enter target state (reset, OTA, idle) #### Responsibilities * Guarantee data consistency * Ensure deterministic shutdown behavior * Prevent flash or SD corruption ### 3.3 F-SYS-03: Status Indication (OLED-Based HMI) #### Description The Sensor Hub provides local system visibility using an **OLED display connected via I2C**, replacing LED indicators. The display, together with **three physical buttons (Up / Down / Select)**, forms a minimal local HumanMachine Interface (HMI). #### Default Information Displayed (Main Screen) 1. **Connectivity status** * Connected / Disconnected * Signal strength (RSSI) if available 2. **System status** * Current system state (RUNNING, WARNING, FAULT, OTA, etc.) 3. **Connected sensors** * Count and/or summary status 4. **Time and date** * Synchronized system time #### Menu Navigation Behavior * **Select button** * From main screen → opens menu * From submenu → returns to main screen * **Up / Down buttons** * Navigate menu entries * Scroll within pages if applicable #### Menu Structure **Main Menu** * **Diagnostics** * Lists active and stored diagnostic codes * Displays occurrence count per diagnostic * **Sensors** * Lists all detected sensors * Displays sensor type and configuration status * **Health** * Displays SD card usage * Displays overall system health indicators #### Responsibilities * Provide real-time system visibility * Support local inspection without external tools * Reflect system state and diagnostics accurately ### 3.4 F-SYS-04: Debug &amp; Engineering Sessions #### Description Debug &amp; Engineering Sessions allow authorized engineers to interact with the Sensor Hub for diagnostics, inspection, and controlled operations. Sessions may be established via: * Wired interface (e.g., USB/UART) * Secure communication channel (logical session) #### Supported Capabilities * Retrieve diagnostic logs * Read machine constant files * Inspect system state and health * Trigger controlled actions (e.g., reboot, teardown) * Monitor runtime logs #### Session Types * **Diagnostic Session** Read-only access for inspection * **Debug Session** Command execution and deeper inspection ## 4 Functional Interaction Overview ### System State &amp; Teardown Relationship ```text RUNNING ↓ (Update / Fault) TEARDOWN ↓ OTA_UPDATE / MC_UPDATE / RESET ``` ### Local HMI Interaction ```text OLED Display ← System State Manager Buttons → UI Controller → State/Menu Logic ``` ## 5 System SHALL Requirements (Formal) ### System State Management * **SR-SYS-001**: The system shall implement a defined finite state machine for operational control. * **SR-SYS-002**: The system shall restrict operations based on the current system state. * **SR-SYS-003**: The system shall notify system components of state transitions. ### Controlled Teardown * **SR-SYS-004**: The system shall execute a controlled teardown sequence before firmware or machine constant updates. * **SR-SYS-005**: The system shall persist all critical runtime data before completing teardown. * **SR-SYS-006**: The system shall prevent data corruption during teardown and reset operations. ### Status Indication &amp; HMI * **SR-SYS-007**: The system shall provide a local OLED display using I2C communication. * **SR-SYS-008**: The system shall display connectivity status, system state, sensor summary, and time/date. * **SR-SYS-009**: The system shall provide menu navigation using Up, Down, and Select buttons. * **SR-SYS-010**: The system shall provide diagnostic, sensor, and health information via the local menu. ### Debug &amp; Engineering Sessions * **SR-SYS-011**: The system shall support diagnostic sessions for retrieving logs and system status. * **SR-SYS-012**: The system shall support debug sessions for controlled engineering operations. * **SR-SYS-013**: The system shall restrict debug actions to authorized sessions only. ## 6 Traceability Matrix <figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Feature ID</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">System Requirements</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SYS-01</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SYS-001, SR-SYS-002, SR-SYS-003</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SYS-02</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SYS-004, SR-SYS-005, SR-SYS-006</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SYS-03</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SYS-007, SR-SYS-008, SR-SYS-009, SR-SYS-010</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">F-SYS-04</p></td><td class="op-uc-table--cell"><p class="op-uc-p">SR-SYS-011, SR-SYS-012, SR-SYS-013</p></td></tr></tbody></table></figure> ## 7 Dependencies * Diagnostics &amp; Health Monitoring Features * Persistence &amp; DP Component * Communication Features * Security &amp; Safety Features * OTA Features ##includes(#535); includes(#512); includes(#511); includes(#510); includes(#509)
190509FeatureNew[F-SYS-01] System State ManagementDefines and controls the operational states of the Sensor Hub using a deterministic finite state machine and enforces valid transitions between system states.includes(#515); includes(#514); includes(#513); includes(#508)
191510FeatureNew[F-SYS-02] Controlled Teardown MechanismProvides a controlled and safe teardown sequence to ensure data integrity and orderly shutdown during updates, failures, or maintenance operations.includes(#518); includes(#517); includes(#516); includes(#508)
192511FeatureNew[F-SYS-03] Status Indication via OLED HMIProvides local system status visibility through an OLED display with button-based navigation, replacing LED indicators.includes(#522); includes(#521); includes(#520); includes(#519); includes(#508)
193512FeatureNew[F-SYS-04] Debug & Engineering SessionsEnables diagnostic and debug sessions allowing engineers to inspect system status, retrieve logs, and perform controlled maintenance actions.includes(#525); includes(#524); includes(#523); includes(#508)
194513RequirementsNew[SR-SYS-001] Finite State Machine ControlThe system shall implement a defined finite state machine to manage operational states and transitions.includes(#509)
195514RequirementsNew[SR-SYS-002] State-Based Operation RestrictionThe system shall restrict functional operations based on the current system state.includes(#509)
196515RequirementsNew[SR-SYS-003] State Transition NotificationThe system shall notify system components when a system state transition occurs.includes(#509)
197516RequirementsNew[SR-SYS-004] Controlled Teardown ExecutionThe system shall execute a controlled teardown sequence before firmware updates, machine constant updates, or system resets.includes(#510)
198517RequirementsNew[SR-SYS-005] Critical Data Persistence Before TeardownThe system shall persist all critical runtime data before completing a teardown sequence.includes(#510)
199518RequirementsNew[SR-SYS-006] Data Integrity Protection During ShutdownThe system shall prevent data corruption during teardown, reset, or power-down operations.includes(#510)
200519RequirementsNew[SR-SYS-007] OLED Display InterfaceThe system shall provide a local OLED display using the I2C communication protocol.includes(#511)
201520RequirementsNew[SR-SYS-008] System Information DisplayThe system shall display connectivity status, system state, connected sensor summary, and time/date on the OLED display.includes(#511)
202521RequirementsNew[SR-SYS-009] Button-Based Menu NavigationThe system shall provide menu navigation using Up, Down, and Select buttons.includes(#511)
203522RequirementsNew[SR-SYS-010] Local Diagnostic and Health MenusThe system shall provide diagnostic, sensor, and health information through the local OLED menu interface.includes(#511)
204523RequirementsNew[SR-SYS-011] Diagnostic Session SupportThe system shall support diagnostic sessions for retrieving system status and diagnostic data.includes(#512)
205524RequirementsNew[SR-SYS-012] Debug Session SupportThe system shall support debug sessions allowing controlled engineering commands.includes(#512)
206525RequirementsNew[SR-SYS-013] Authorized Debug Access ControlThe system shall restrict debug session actions to authorized engineering access only.includes(#512)
207526FeatureNew[FG-PWR-] Power & Fault Handling Features# **Power &amp; Fault Handling Features** **Feature Group ID:** FG-PWR **Version:** 1.0 **Date:** 2025-01-19 **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub, ESP-IDF v5.4 ## **1 Feature Overview** The **Power &amp; Fault Handling Features** ensure that the Sensor Hub operates reliably under power fluctuations and recovers gracefully from power interruptions. These features protect critical data during brownouts and enable clean recovery after power restoration. **Technology:** * **Brownout Detection:** Hardware brownout detector (BOD) * **Power-Loss Protection:** Supercapacitor (optional, recommended) * **RTC Backup:** External RTC battery (CR2032, optional) ## **2 Scope and Assumptions** **In Scope** * Brownout detection and handling * Power-loss data protection * Graceful shutdown on power loss * Clean recovery after power restoration **Out of Scope** * Battery-powered operation (system assumes continuous power) * Power management for low-power modes (not applicable for real-time requirements) ## **3 Sub-Feature Breakdown** ### **3.1 F-PWR-01: Brownout Detection and Handling** #### **Description** The system monitors input voltage and takes immediate action if it drops below safe threshold. **Configuration:** * **Brownout Threshold:** 3.0V (hardware-configurable) * **Detection:** Hardware brownout detector (BOD) in ESP32-S3 * **ISR Action:** Set &quot;Power Loss&quot; flag and immediately flush critical buffers to NVS/SD * **Recovery:** Perform clean reboot once power is stable **Hardware Support:** * **Supercapacitor (Recommended):** 0.5-1.0F for 1-2s at 3.3V * Provides runtime during brownout to complete data flush * Enables graceful shutdown * **External RTC Battery (Optional):** CR2032, 3V, 220mAh * Maintains time accuracy during power loss * Not required for basic operation #### **Responsibilities** * Monitor input voltage * Detect brownout condition * Trigger immediate data flush * Enter graceful shutdown mode #### **Constraints** * Brownout detection must be hardware-based (ESP32-S3 BOD) * Data flush must complete within supercapacitor runtime (1-2 seconds) * System must reboot cleanly after power restoration ### **3.2 F-PWR-02: Power-Loss Recovery** #### **Description** The system recovers gracefully from power interruptions (&lt; 1 second). **Recovery Behavior:** * Clean reboot after power stabilization * Data integrity verification * State restoration from persistent storage * Diagnostic event generation (if data loss detected) **Recovery Sequence:** 1. Power restoration detected 2. Wait for power stabilization (100ms) 3. Perform clean reboot 4. Initialize system from persistent storage 5. Verify data integrity 6. Report recovery status via diagnostics #### **Responsibilities** * Detect power restoration * Perform clean reboot * Restore system state from persistent storage * Verify data integrity * Report recovery status ## **4 System Requirements (Formal SHALL Statements)** ### **Brownout Detection Requirements** * **SR-PWR-001**: The system shall monitor input voltage and detect brownout conditions below 3.0V. * **SR-PWR-002**: The system shall immediately flush critical data buffers to non-volatile storage upon brownout detection. * **SR-PWR-003**: The system shall enter graceful shutdown mode during brownout conditions. * **SR-PWR-004**: The system shall perform clean reboot after power stabilization. ### **Power-Loss Recovery Requirements** * **SR-PWR-005**: The system shall recover gracefully from power interruptions. * **SR-PWR-006**: The system shall verify data integrity after power restoration. * **SR-PWR-007**: The system shall restore system state from persistent storage after power restoration. * **SR-PWR-008**: The system shall report power-loss and recovery events via diagnostics. ## **5 Traceability Matrix (Feature → System Requirements)** <figure class="table op-uc-figure_align-center op-uc-figure" style="width:1591.16px;"><table class="op-uc-table" style="background-color:rgb(255, 255, 255);border:0px solid inherit;"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Feature ID</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Related System Requirements</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">F-PWR-01</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">SR-PWR-001, SR-PWR-002, SR-PWR-003, SR-PWR-004</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">F-PWR-02</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">SR-PWR-005, SR-PWR-006, SR-PWR-007, SR-PWR-008</p></td></tr></tbody></table></figure> ## **6 Design &amp; Implementation Notes (Non-Normative)** * **Supercapacitor:** Recommended for production deployment to enable graceful shutdown * **RTC Battery:** Optional, improves time accuracy during power loss * **Brownout Threshold:** 3.0V is conservative; adjust based on power supply characteristics * **Data Flush Priority:** Critical data (calibration, diagnostics) must be flushed first * **Recovery Time:** System should recover within 5 seconds after power restoration ## **7 Dependencies** * **Persistence &amp; Data Management Features** (data flush mechanism) * **Diagnostics Features** (power-loss event reporting) * **System Management Features** (graceful shutdown, state restoration) ## **8 Hardware Recommendations** <figure class="table op-uc-figure_align-center op-uc-figure" style="width:1591.16px;"><table class="op-uc-table" style="background-color:rgb(255, 255, 255);border:0px solid inherit;"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Component</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Specification</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Purpose</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Supercapacitor</strong></p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">0.5-1.0F, 3.3V</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">Provides runtime during brownout for data flush</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>RTC Battery</strong></p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">CR2032, 3V, 220mAh</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">Maintains time accuracy during power loss</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Power Supply</strong></p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">3.3V ±5%, minimum 500mA</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">Stable power for reliable operation</p></td></tr></tbody></table></figure>includes(#537); includes(#536)
208527FeatureNew[FG-HW-] Hardware Abstraction Features# **Hardware Abstraction Features** **Feature Group ID:** FG-HW **Version:** 1.0 **Date:** 2025-01-19 **Scope:** Sensor Hub (Sub-Hub only) **Target Platform:** ESP32-S3based Sensor Hub, ESP-IDF v5.4 ## **1 Feature Overview** The **Hardware Abstraction Features** provide a clean separation between application logic and hardware interfaces. These features ensure hardware independence, maintainability, and testability of the system. **Architecture Principle:** Application layer SHALL NOT access hardware directly (CFC-ARCH-01). ## **2 Scope and Assumptions** **In Scope** * Sensor Abstraction Layer (SAL) * Hardware interface abstraction (I2C, SPI, UART, ADC, GPIO) * Storage interface abstraction (SD Card, NVM) * Display interface abstraction (OLED I2C) **Out of Scope** * Hardware driver implementation details (ESP-IDF drivers) * Hardware-specific optimizations (deferred to implementation) ## **3 Sub-Feature Breakdown** ### **3.1 F-HW-01: Sensor Abstraction Layer (SAL)** #### **Description** The system provides a Sensor Abstraction Layer (SAL) to ensure hardware independence and maintainability. **Interface Functions:** * `sensor_read()`: Retrieve the latest value * `sensor_calibrate()`: Perform sensor-specific calibration * `sensor_validate()`: Check if the reading is within physical bounds * `sensor_health_check()`: Verify the operational status of the hardware * `sensor_getMetadata()`: Get sensor capabilities (range, accuracy, etc.) * `sensor_reset()`: Recovery from fault states **Sensor State Management:** * **INIT:** Sensor initialization * **WARMUP:** Sensor warming up (not yet stable) * **STABLE:** Sensor operational and stable * **DEGRADED:** Sensor operational but degraded * **FAILED:** Sensor failed, not operational #### **Responsibilities** * Abstract sensor hardware interfaces * Provide uniform sensor API * Manage sensor state * Handle sensor-specific calibration * Validate sensor readings #### **Constraints** * All sensor access must go through SAL * Application layer must not access sensor hardware directly * Sensor state must be tracked and reported ### **3.2 F-HW-02: Hardware Interface Abstraction** #### **Description** The system abstracts all hardware interfaces through driver layers. **Abstraction Layers:** * **I2C Interface:** Abstracted via ESP-IDF I2C driver wrapper * **SPI Interface:** Abstracted via ESP-IDF SPI driver wrapper * **UART Interface:** Abstracted via ESP-IDF UART driver wrapper * **ADC Interface:** Abstracted via ESP-IDF ADC driver wrapper * **GPIO Interface:** Abstracted via ESP-IDF GPIO driver wrapper * **Storage Interfaces:** SD Card (SDMMC), NVM (NVS) * **Display Interface:** OLED I2C **GPIO Discipline:** * **No Strapping Pins:** Avoid using strapping pins (GPIO 0, 3, 45, 46) for general-purpose I/O * **I2C Pull-up Audit:** Ensure all shared I2C buses have appropriate physical pull-up resistors (2.2kΩ - 4.7kΩ for 3.3V) * **No ADC2 with Wi-Fi:** ADC2 unit cannot be used when Wi-Fi is active. All analog sensors must be connected to ADC1 pins * **Canonical GPIO Map:** Single authoritative GPIO map document must be maintained #### **Responsibilities** * Abstract hardware interfaces * Provide uniform API for hardware access * Enforce GPIO discipline * Manage hardware resource conflicts #### **Constraints** * Application layer must not access hardware directly * GPIO usage must follow canonical GPIO map * Hardware conflicts must be detected and reported ## **4 System Requirements (Formal SHALL Statements)** ### **Sensor Abstraction Layer Requirements** * **SR-HW-001**: The system shall provide a Sensor Abstraction Layer (SAL) for all sensor access. * **SR-HW-002**: The system shall prevent application layer from directly accessing sensor hardware. * **SR-HW-003**: The system shall track sensor state (INIT, WARMUP, STABLE, DEGRADED, FAILED). * **SR-HW-004**: The system shall provide sensor validation and health check functions. ### **Hardware Interface Abstraction Requirements** * **SR-HW-005**: The system shall abstract all hardware interfaces (I2C, SPI, UART, ADC, GPIO) through driver layers. * **SR-HW-006**: The system shall enforce GPIO discipline (no strapping pins, proper pull-ups, ADC1/ADC2 separation). * **SR-HW-007**: The system shall maintain a canonical GPIO map document. * **SR-HW-008**: The system shall detect and report hardware resource conflicts. ## **5 Traceability Matrix (Feature → System Requirements)** <figure class="table op-uc-figure_align-center op-uc-figure" style="width:1591.16px;"><table class="op-uc-table" style="background-color:rgb(255, 255, 255);border:0px solid inherit;"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Feature ID</strong></p></th><th class="op-uc-table--cell op-uc-table--cell_head" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><strong>Related System Requirements</strong></p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">F-HW-01</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">SR-HW-001, SR-HW-002, SR-HW-003, SR-HW-004</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">F-HW-02</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">SR-HW-005, SR-HW-006, SR-HW-007, SR-HW-008</p></td></tr></tbody></table></figure> ## **6 Design &amp; Implementation Notes (Non-Normative)** * **SAL Implementation:** Each sensor type implements SAL interface * **Driver Wrappers:** ESP-IDF drivers wrapped in application-specific abstraction layer * **GPIO Map:** Must be maintained as single source of truth * **Hardware Conflicts:** Runtime detection and reporting via diagnostics ## **7 Dependencies** * **ESP-IDF Drivers:** I2C, SPI, UART, ADC, GPIO, SDMMC, NVS * **System Management Features:** Hardware initialization and teardown * **Diagnostics Features:** Hardware fault reporting ## **8 GPIO Map Guidelines** **Strapping Pins (DO NOT USE):** * GPIO 0: Boot mode selection * GPIO 3: JTAG * GPIO 45: Strapping pin * GPIO 46: Strapping pin **ADC Constraints:** * **ADC1:** Available when Wi-Fi is active * **ADC2:** NOT available when Wi-Fi is active (use ADC1 for all analog sensors) **I2C Pull-up Requirements:** * **Physical Pull-ups:** 2.2kΩ - 4.7kΩ for 3.3V * **Software Pull-ups:** Not recommended for production (use physical pull-ups)includes(#539); includes(#538)
209528FeatureNew[F-DAQ-04] Sensor State ManagementThe system tracks sensor operational states (INIT, WARMUP, STABLE, DEGRADED, FAILED). Raw values are never published without an accompanying validity flag indicating the current state.includes(#584); includes(#582); includes(#583); includes(#581); includes(#393)
210529FeatureNew[F-DQC-05] Redundant Sensor SupportFor critical parameters (CO2, NH3), the system supports primary and backup sensors using different technologies or interfaces to avoid common-mode failures. System implements sensor fusion algorithm.includes(#586); includes(#585); includes(#587); includes(#424)
211530FeatureNew[F-COM-04] Long-Range Fallback CommunicationThe system supports optional long-range fallback communication using LoRa (External Module) or cellular (LTE-M/NB-IoT) for farm-scale distances where Wi-Fi may not reach.includes(#594); includes(#593); includes(#425)
212531FeatureNew[F-DIAG-04] Layered Watchdog SystemThe system implements multiple levels of watchdogs: Task WDT (10s), Interrupt WDT (3s), and RTC WDT (30s) to ensure responsiveness and detect deadlocks/hangs.includes(#597); includes(#596); includes(#595); includes(#442)
213532FeatureNew[F-DATA-04] Power-Loss Data Protection<figure class="table op-uc-figure_align-center op-uc-figure" style="width:1591.16px;"><table class="op-uc-table" style="background-color:rgb(255, 255, 255);border:0px solid inherit;"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><br>The system detects brownout conditions (3.0V) and immediately flushes critical data buffers to non-volatile storage. Implements wear-aware batch writing to prevent SD card wear.</p></td></tr></tbody></table></figure>includes(#601); includes(#600); includes(#599); includes(#598); includes(#454)
214533FeatureNew[F-OTA-05] A/B Partitioning with RollbackThe system implements A/B partitioning for safe firmware updates with automatic rollback capability if new firmware fails validation or health check.includes(#604); includes(#603); includes(#602); includes(#474)
215534FeatureNew[F-SEC-04] Security Violation HandlingThe system detects and reports security violations (secure boot failures, authentication failures, message tampering, unauthorized access) as FATAL diagnostic events.includes(#607); includes(#606); includes(#605); includes(#492)
216535FeatureNew[F-SYS-05] GPIO & Hardware DisciplineThe system enforces strict GPIO discipline: no strapping pins, proper I2C pull-ups, ADC1/ADC2 separation, and maintains a canonical GPIO map document.includes(#608); includes(#611); includes(#610); includes(#609); includes(#508)
217536FeatureNew[F-PWR-01] Brownout Detection and HandlingThe system monitors input voltage and detects brownout conditions below 3.0V. Immediately flushes critical data buffers and enters graceful shutdown mode.includes(#615); includes(#614); includes(#613); includes(#612); includes(#526)
218537FeatureNew[F-PWR-02] Power-Loss RecoveryThe system recovers gracefully from power interruptions (&lt; 1 second). Performs clean reboot, verifies data integrity, and restores system state from persistent storage.includes(#619); includes(#618); includes(#617); includes(#616); includes(#526)
219538FeatureNew[F-HW-01] Sensor Abstraction Layer (SAL)The system provides a Sensor Abstraction Layer (SAL) for all sensor access. Prevents application layer from directly accessing sensor hardware. Tracks sensor state and provides validation functions.includes(#622); includes(#623); includes(#621); includes(#620); includes(#527)
220539FeatureNew[F-HW-02] Hardware Interface AbstractionThe system abstracts all hardware interfaces (I2C, SPI, UART, ADC, GPIO) through driver layers. Enforces GPIO discipline and detects hardware resource conflicts.includes(#625); includes(#624); includes(#627); includes(#626); includes(#527)
221581RequirementsNew[SR-DAQ-011] The system shall track sensor operational states (INIT, WARMUP, STABLE, DEGRADED, FAILED).This is the descriptionincludes(#528)
222582RequirementsNew[SR-DAQ-011] The system shall track sensor operational states (INIT, WARMUP, STABLE, DEGRADED, FAILED).The system shall track sensor operational states (INIT, WARMUP, STABLE, DEGRADED, FAILED).includes(#528)
223583RequirementsNew[SR-DAQ-012] The system shall never publish raw sensor values without an accompanying validity flag indicating the current state.The system shall never publish raw sensor values without an accompanying validity flag indicating the current state.includes(#528)
224584RequirementsNew[SR-DAQ-013] The system shall enforce sensor warmup durations (CO2: 30 seconds, Temperature: 5 seconds, others: sensor-specific).The system shall enforce sensor warmup durations (CO2: 30 seconds, Temperature: 5 seconds, others: sensor-specific).includes(#528)
225585RequirementsNew[SR-DQC-016] The system shall support redundant sensors for critical parameters (CO2, NH3) using different technologies or interfaces. <figure class="table op-uc-figure_align-center op-uc-figure" style="width:1591.16px;"><table class="op-uc-table" style="background-color:rgb(255, 255, 255);border:0px solid inherit;"><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p">The system shall support redundant sensors for critical parameters (CO2, NH3) using different technologies or interfaces.</p></td><td class="op-uc-table--cell" style="border-bottom:0.8px solid rgb(208, 215, 222);border-left:!important !important !important;border-right:!important !important !important;border-top:0.8px solid rgb(208, 215, 222);padding:6px 13px !important;"><p class="op-uc-p"><br></p></td></tr></tbody></table></figure>includes(#529)
226586RequirementsNew[SR-DQC-017] The system shall implement sensor fusion algorithm to combine redundant sensor data (average, weighted, or voting mechanism).The system shall implement sensor fusion algorithm to combine redundant sensor data (average, weighted, or voting mechanism).includes(#529)
227587RequirementsNew[SR-DQC-018] The system shall ensure that every critical parameter has two qualified sensor options to avoid common-mode failures.The system shall ensure that every critical parameter has two qualified sensor options to avoid common-mode failures.includes(#529)
228588RequirementsNew[SR-COM-011] The system shall implement a heartbeat mechanism with 10-second interval and 30-second timeout.The system shall implement a heartbeat mechanism with 10-second interval and 30-second timeout.includes(#426)
229589RequirementsNew[SR-COM-012] The system shall use CBOR encoding for all MQTT payloads.The system shall use CBOR encoding for all MQTT payloads.includes(#426)
230590RequirementsNew[SR-COM-013] The system shall support automatic reconnection with exponential backoff on connection loss.The system shall support automatic reconnection with exponential backoff on connection loss.includes(#426)
231591RequirementsNew[SR-COM-014] The system shall encrypt all ESP-NOW peer communication using application-layer encryption (AES-128 minimum).The system shall encrypt all ESP-NOW peer communication using application-layer encryption (AES-128 minimum).includes(#428)
232592RequirementsNew[SR-COM-015] The system shall implement acknowledgment and retry mechanism for ESP-NOW peer communication.The system shall implement acknowledgment and retry mechanism for ESP-NOW peer communication.includes(#428)
233593RequirementsNew[SR-COM-016] The system may support long-range fallback communication using LoRa or cellular (LTE-M/NB-IoT) for farm-scale distances.The system may support long-range fallback communication using LoRa or cellular (LTE-M/NB-IoT) for farm-scale distances.includes(#530)
234594RequirementsNew[SR-COM-017] If implemented, long-range fallback communication shall be used only for emergency alerts and data backup, not for OTA updates.If implemented, long-range fallback communication shall be used only for emergency alerts and data backup, not for OTA updates.includes(#530)
235595RequirementsNew[SR-DIAG-012] The system shall implement Task Watchdog (Task WDT) to detect deadlocks in FreeRTOS tasks with a baseline timeout of 10 seconds.The system shall implement Task Watchdog (Task WDT) to detect deadlocks in FreeRTOS tasks with a baseline timeout of 10 seconds.includes(#531)
236596RequirementsNew[SR-DIAG-013] The system shall implement Interrupt Watchdog (Interrupt WDT) to detect hangs within ISRs with a baseline timeout of 3 seconds.The system shall implement Interrupt Watchdog (Interrupt WDT) to detect hangs within ISRs with a baseline timeout of 3 seconds.includes(#531)
237597RequirementsNew[SR-DIAG-014] The system shall implement RTC Watchdog (RTC WDT) as a final safety net for total system freezes with a baseline timeout of 30 seconds.The system shall implement RTC Watchdog (RTC WDT) as a final safety net for total system freezes with a baseline timeout of 30 seconds.includes(#531)
238598RequirementsNew[SR-DATA-010] The system shall detect brownout conditions using hardware brownout detector (BOD) at 3.0V threshold.The system shall detect brownout conditions using hardware brownout detector (BOD) at 3.0V threshold.includes(#532)
239599RequirementsNew[SR-DATA-011] The system shall immediately flush critical data buffers to non-volatile storage upon brownout detection.The system shall immediately flush critical data buffers to non-volatile storage upon brownout detection.includes(#532)
240600RequirementsNew[SR-DATA-012] The system shall complete data flush operations within supercapacitor runtime (1-2 seconds) during brownout.The system shall complete data flush operations within supercapacitor runtime (1-2 seconds) during brownout.includes(#532)
241601RequirementsNew[SR-DATA-013] The system shall implement wear-aware batch writing to prevent SD card wear.The system shall implement wear-aware batch writing to prevent SD card wear.includes(#532)
242602RequirementsNew[SR-OTA-014] The system shall implement A/B partitioning for safe firmware updates.The system shall implement A/B partitioning for safe firmware updates.includes(#533)
243603RequirementsNew[SR-OTA-015] The system shall automatically rollback to previous firmware if new firmware fails validation or health check.The system shall automatically rollback to previous firmware if new firmware fails validation or health check.includes(#533)
244604RequirementsNew[SR-OTA-016] The system shall report rollback events to the Main Hub.The system shall report rollback events to the Main Hub.includes(#533)
245605RequirementsNew[SR-SEC-013] The system shall report security violations as FATAL diagnostic events.The system shall report security violations as FATAL diagnostic events.includes(#534)
246606RequirementsNew[SR-SEC-014] The system shall implement eFuse-based anti-rollback to prevent downgrade attacks.The system shall implement eFuse-based anti-rollback to prevent downgrade attacks.includes(#534)
247607RequirementsNew[SR-SEC-015] The system shall protect cryptographic keys during power loss and system resets.The system shall protect cryptographic keys during power loss and system resets.includes(#534)
248608RequirementsNew[SR-SYS-014] The system shall enforce GPIO discipline by avoiding strapping pins (GPIO 0, 3, 45, 46) for general-purpose I/O.The system shall enforce GPIO discipline by avoiding strapping pins (GPIO 0, 3, 45, 46) for general-purpose I/O.includes(#535)
249609RequirementsNew[SR-SYS-015] The system shall ensure all shared I2C buses have appropriate physical pull-up resistors (2.2kΩ - 4.7kΩ for 3.3V).The system shall ensure all shared I2C buses have appropriate physical pull-up resistors (2.2kΩ - 4.7kΩ for 3.3V).includes(#535)
250610RequirementsNew[SR-SYS-016] The system shall use ADC1 for all analog sensors when Wi-Fi is active (ADC2 is not available with Wi-Fi).The system shall use ADC1 for all analog sensors when Wi-Fi is active (ADC2 is not available with Wi-Fi).includes(#535)
251611RequirementsNew[SR-SYS-017] The system shall maintain a canonical GPIO map document as a single source of truth.The system shall maintain a canonical GPIO map document as a single source of truth.includes(#535)
252612RequirementsNew[SR-PWR-001] The system shall monitor input voltage and detect brownout conditions below 3.0V.The system shall monitor input voltage and detect brownout conditions below 3.0V.includes(#536)
253613RequirementsNew[SR-PWR-002] The system shall immediately flush critical data buffers to non-volatile storage upon brownout detection.The system shall immediately flush critical data buffers to non-volatile storage upon brownout detection.includes(#536)
254614RequirementsNew[SR-PWR-003] The system shall enter graceful shutdown mode during brownout conditions.The system shall enter graceful shutdown mode during brownout conditions.includes(#536)
255615RequirementsNew[SR-PWR-004] The system shall perform clean reboot after power stabilization.The system shall perform clean reboot after power stabilization.includes(#536)
256616RequirementsNew[SR-PWR-005] The system shall recover gracefully from power interruptions.The system shall recover gracefully from power interruptions.includes(#537)
257617RequirementsNew[SR-PWR-006] The system shall verify data integrity after power restoration.The system shall verify data integrity after power restoration.includes(#537)
258618RequirementsNew[SR-PWR-007] The system shall restore system state from persistent storage after power restoration.The system shall restore system state from persistent storage after power restoration.includes(#537)
259619RequirementsNew[SR-PWR-008] The system shall report power-loss and recovery events via diagnostics.The system shall report power-loss and recovery events via diagnostics.includes(#537)
260620RequirementsNew[SR-HW-001] The system shall provide a Sensor Abstraction Layer (SAL) for all sensor access.The system shall provide a Sensor Abstraction Layer (SAL) for all sensor access.includes(#538)
261621RequirementsNew[SR-HW-002] The system shall prevent application layer from directly accessing sensor hardware.The system shall prevent application layer from directly accessing sensor hardware.includes(#538)
262622RequirementsNew[SR-HW-003] The system shall track sensor state (INIT, WARMUP, STABLE, DEGRADED, FAILED).The system shall track sensor state (INIT, WARMUP, STABLE, DEGRADED, FAILED).includes(#538)
263623RequirementsNew[SR-HW-004] The system shall provide sensor validation and health check functions.The system shall provide sensor validation and health check functions.includes(#538)
264624RequirementsNew[SR-HW-005] The system shall abstract all hardware interfaces (I2C, SPI, UART, ADC, GPIO) through driver layers.The system shall abstract all hardware interfaces (I2C, SPI, UART, ADC, GPIO) through driver layers.includes(#539)
265625RequirementsNew[SR-HW-006] The system shall enforce GPIO discipline (no strapping pins, proper pull-ups, ADC1/ADC2 separation).The system shall enforce GPIO discipline (no strapping pins, proper pull-ups, ADC1/ADC2 separation).includes(#539)
266626RequirementsNew[SR-HW-007] The system shall maintain a canonical GPIO map document.The system shall maintain a canonical GPIO map document.includes(#539)
267627RequirementsNew[SR-HW-008] The system shall detect and report hardware resource conflicts.The system shall detect and report hardware resource conflicts.includes(#539)