Environmental Sensors

Last updated March 19, 2026


Environmental Sensors

Environmental sensors let you monitor the air, light, and atmospheric conditions around your devices. LoopString supports a wide range of environmental sensing hardware — from basic humidity sensors to full spectral light analyzers — all configurable through the Configurator without writing any code.

This guide covers every environmental sensor part available in the parts library: what it measures, how to wire it, what settings to configure, and which use cases it suits best.


Overview

Environmental sensing parts fall into five categories:

  • Humidity sensors — measure relative humidity and temperature (DHT22/11, SHT31-D, SHT30 Industrial)
  • CO2 / air quality sensors — measure carbon dioxide concentration and VOCs (MH-Z19, SCD30, SCD40, SGP30)
  • Light sensors — measure lux, PAR/PPFD, and spectral composition (TSL2591, AS7341, VEML7700)
  • Pressure sensors — measure barometric pressure and temperature (BMP280)
  • UV sensors — measure UVA and UVB radiation with UV index (VEML6075)

Most environmental sensors use the I2C interface and share the same four-wire connection to the Raspberry Pi (3.3V, GND, SDA on GPIO 2, SCL on GPIO 3). The MH-Z19 CO2 sensor is the exception — it uses a UART serial connection.


How to Use Environmental Sensors in the Configurator

  1. Open the Configurator and select your project, or create a new one.
  2. Go to the room where you want to add environmental monitoring.
  3. Click Add Part and search for the sensor by name (e.g., "SHT31", "MH-Z19", "TSL2591").
  4. Select the part. The Configurator will display all required configuration fields.
  5. Fill in the configuration fields (I2C address, sample interval, etc.).
  6. Wire the sensor to your Pi following the wiring steps shown in the Configurator.
  7. Click Deploy to push the updated flow to your Pi. The sensor will appear on your dashboard within seconds.

Once deployed, sensor readings appear on your dashboard as live cards. You can set alert thresholds, view trend sparklines, and use sensor values as inputs to PID controllers or automation rules.


Sensor Reference

Humidity Sensors

DHT22 / DHT11 Temperature & Humidity Sensor

  • Part ID: dht22-gpio
  • Interface: Single GPIO pin (not I2C)
  • Power: 3.3V
  • Signals: Temperature (°C), Humidity (%)
  • Accuracy: DHT22: ±0.5°C / ±2–5% RH. DHT11: ±2°C / ±5% RH (range 0–50°C only)
  • Estimated cost: ~$4

The DHT22 is the most common entry-level humidity sensor. It uses a proprietary single-wire protocol on one GPIO pin and requires a 10kΩ pull-up resistor between the DATA pin and 3.3V.

Configuration fields:

  • DHT Model — choose DHT22 (recommended) or DHT11 (budget). The DHT22 is significantly more accurate and works across a wider temperature range.
  • GPIO Pin (BCM) — the BCM GPIO number where the DATA pin is connected. Default: GPIO 4 (Pin 7). Any GPIO from 2–27 works; add the 10kΩ pull-up resistor to whichever pin you choose.
  • Sample Interval — how often to read the sensor. Minimum 2 seconds — the DHT22 hardware requires at least 2 seconds between readings. Default: 30 seconds.

Wiring:

  • VCC → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • DATA → chosen GPIO pin, with a 10kΩ resistor from DATA to 3.3V

When to use: Good for basic grow rooms, terrariums, or fermentation chambers where cost matters and ±2% humidity accuracy is sufficient. Use the SHT31-D if you need better accuracy for VPD calculations.


SHT31-D Temperature & Humidity

  • Part ID: sht31-i2c
  • Interface: I2C
  • Power: 3.3V only — do not connect to 5V
  • Signals: Temperature (°C), Humidity (%)
  • Accuracy: ±0.3°C / ±2% RH
  • Estimated cost: ~$9

The SHT31-D is a high-accuracy humidity sensor from Sensirion. It is the recommended choice for grow room VPD (Vapor Pressure Deficit) monitoring where precision matters.

Configuration fields:

  • I2C Bus — bus number (default: 1 for most Pi setups)
  • I2C Address — 0x44 when the ADDR pin is connected to GND (default), or 0x45 when ADDR is connected to VCC. Use 0x45 if you need two SHT31 sensors on the same Pi.
  • Sample Interval — minimum 1 second, default 30 seconds

Wiring:

  • VDD → Pi 3.3V (Pin 1)
  • VSS → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

Heater mode note: The SHT31 chip has a built-in heater that can be activated to prevent condensation on the sensor element. This is useful in high-humidity environments (above 95% RH) where condensation could cause permanent damage. The heater is not configurable in the Configurator — if you need it, you can enable it manually via I2C commands before deploying.

When to use: Grow rooms, cannabis cultivation, fermentation chambers, any application where accurate VPD calculation is needed. Pair with a CO2 sensor and the CO2 Ventilation PID controller for full environmental control.


SHT30 Temperature & Humidity (Industrial)

  • Part ID: sht30-industrial
  • Interface: I2C
  • Power: 3.3V only
  • Signals: Temperature (°C), Humidity (%)
  • Accuracy: ±0.3°C / ±3% RH
  • Estimated cost: ~$15

The SHT30 Industrial is the same SHT3x sensor protocol as the SHT31-D but housed in a dustproof stainless steel probe. It is designed for harsh environments where you need IP-rated protection — grow rooms with heavy misting, fermentation tanks, or outdoor enclosures.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — 0x44 (ADDR to GND) or 0x45 (ADDR to VCC)
  • Sample Interval — minimum 1 second, default 30 seconds

Wiring: Same as SHT31-D — the stainless housing only changes the physical form factor, not the electrical interface.

When to use: Anywhere you need an SHT31 but the sensor will be exposed to condensation, splashing, or fine particulate matter.


CO2 / Air Quality Sensors

MH-Z19 CO2 Sensor (UART)

  • Part ID: mhz19-serial
  • Interface: UART (serial) — not I2C
  • Power: 5V (the sensor needs 5V power, but the TX/RX data pins communicate at 3.3V)
  • Signals: CO2 concentration (ppm)
  • Measurement range: 0–5000 ppm
  • Estimated cost: ~$18

The MH-Z19 uses Non-Dispersive Infrared (NDIR) technology to measure CO2. It is the sensor used in the LoopString Shroomery reference build and is widely available and reliable for grow room applications.

Important: The TX and RX pins on the sensor must be cross-connected to the Pi — sensor TX connects to Pi RX, and sensor RX connects to Pi TX. This is the standard UART cross-connect and is easy to get wrong.

Warm-up period: The MH-Z19 requires approximately 3 minutes after power-on before readings are stable. During warm-up, the sensor may report 0 ppm or erratic values — this is normal and the flow handles it gracefully.

ABC self-calibration: The MH-Z19 includes an Automatic Baseline Correction (ABC) feature that assumes the sensor will be exposed to fresh outdoor air (approximately 400 ppm) at least once every 24 hours. In a sealed grow room or mushroom chamber, the CO2 never drops to 400 ppm, so ABC may slowly drift the reading downward over time. Consider this if readings seem unexpectedly low after weeks of operation.

Configuration fields:

  • Serial Port — the UART port connected to the sensor. Default: /dev/ttyAMA0 (GPIO 14/15). Use /dev/ttyUSB0 if you are using a USB serial adapter instead.
  • Sample Interval — minimum 5 seconds, default 30 seconds

Wiring (UART cross-connect):

  • VCC → Pi 5V (Pin 2)
  • GND → Pi GND (Pin 6)
  • TX (sensor) → Pi GPIO 15 / RXD (Pin 10)
  • RX (sensor) → Pi GPIO 14 / TXD (Pin 8)

Pi setup note: On Raspberry Pi, the primary UART (/dev/ttyAMA0) is used by Bluetooth by default on Pi 3 and Pi 4. You may need to disable Bluetooth or use a secondary UART. The LoopString Pi provisioning process handles this automatically.

When to use: Mushroom grow rooms, cannabis cultivation, indoor gardens, or any enclosed space where CO2 enrichment or ventilation control is needed. Pair with the CO2 Ventilation PID controller to automatically open vents or run fans when CO2 rises above your target.


Sensirion SCD30 CO2 / Temp / Humidity

  • Part ID: scd30-i2c
  • Interface: I2C
  • Power: 3.3V only — do not connect to 5V
  • Signals: CO2 (ppm), Temperature (°C), Humidity (%)
  • Accuracy: ±30 ppm + 3% of reading
  • Measurement range: 400–10,000 ppm
  • Estimated cost: ~$55

The SCD30 is a premium NDIR CO2 sensor that also measures temperature and humidity in a single package. It is more accurate than the MH-Z19 and uses I2C, making wiring simpler. The fixed I2C address is 0x61.

The SCD30 uses dual-channel NDIR for automatic self-calibration, which improves long-term drift stability compared to single-channel sensors.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x61, cannot be changed
  • Sample Interval — minimum 2 seconds, default 30 seconds

Wiring:

  • VIN → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

Pressure compensation: At altitudes above 700m, CO2 readings can be affected by barometric pressure differences. The SCD30 supports a pressure compensation input. This is not currently configurable in the Configurator — if you are at significant altitude, the MH-Z19 or SCD40 may be a simpler alternative.

Altitude compensation: Similarly, the SCD30 can be configured with your altitude in meters to apply a correction factor. This is a one-time setting applied in firmware that is not exposed in the Configurator UI.

Continuous vs. single-shot measurement: The SCD30 runs in continuous measurement mode by default, which is what the Configurator flow uses. Single-shot mode is not supported through the Configurator.

When to use: Professional grow rooms, research applications, or anywhere you want CO2, temperature, and humidity from a single sensor. The combined sensor simplifies wiring and ensures all three measurements are temporally correlated.


Sensirion SCD40 CO2 / Temp / Humidity Sensor

  • Part ID: scd40-i2c
  • Interface: I2C
  • Power: 3.3V only — do not connect to 5V
  • Signals: CO2 (ppm), Temperature (°C), Humidity (%)
  • Accuracy: ±50 ppm + 5% of reading
  • Measurement range: 400–2,000 ppm
  • Estimated cost: ~$50

The SCD40 uses photoacoustic sensing technology rather than NDIR, making it smaller and lower power than the SCD30. The fixed I2C address is 0x62.

The lower power draw makes the SCD40 a better choice for battery-powered or power-constrained deployments. The trade-off is a narrower measurement range (up to 2,000 ppm vs. 10,000 ppm for the SCD30) and slightly lower accuracy.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x62, cannot be changed
  • Sample Interval — minimum 5 seconds, default 30 seconds

Wiring:

  • VCC → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

When to use: Grow rooms, home air quality monitoring, or any application where CO2 stays below 2,000 ppm. Use the SCD30 if you expect CO2 above 2,000 ppm (common in mushroom fruiting chambers during pinning).


SGP30 eCO2 / TVOC Air Quality

  • Part ID: sgp30-i2c
  • Interface: I2C
  • Power: 3.3V
  • Signals: eCO2 (ppm), TVOC (ppb)
  • Measurement range: eCO2: 400–60,000 ppm; TVOC: 0–60,000 ppb
  • Estimated cost: ~$18

The SGP30 is a Metal Oxide (MOX) gas sensor that reports equivalent CO2 (eCO2) and Total Volatile Organic Compounds (TVOC). It is not a true CO2 sensor — it estimates CO2 equivalents from VOC levels. The fixed I2C address is 0x58.

Important distinction: eCO2 from the SGP30 is not the same as actual CO2 measured by an NDIR sensor (MH-Z19, SCD30, SCD40). Use the SGP30 for general indoor air quality indication, not for precise CO2 control.

Baseline calibration period: The SGP30 requires approximately 12 hours of continuous operation after power-on before its internal baseline is fully established. During the first few hours, eCO2 and TVOC readings may be higher than actual values. Readings stabilize over time as the sensor learns the baseline air quality.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x58, cannot be changed
  • Sample Interval — minimum 1 second. The SGP30 recommends readings at 1-second intervals for proper baseline tracking; however, publishing to RTDB at 1-second intervals increases Firebase costs. Default: 30 seconds

Wiring: Standard I2C — SDA → GPIO 2, SCL → GPIO 3, 3.3V, GND.

When to use: HVAC control, indoor air quality dashboards, office environments. Not recommended as the primary CO2 sensor for CO2 enrichment control — use MH-Z19, SCD30, or SCD40 instead.


Light Sensors

TSL2591 PAR / Lux Sensor

  • Part ID: tsl2591-i2c
  • Interface: I2C
  • Power: 3.3V
  • Signals: Lux
  • Measurement range: 188 µLux to 88,000 Lux
  • Estimated cost: ~$8

The TSL2591 is a high dynamic range lux sensor with a separate IR channel. The wide measurement range makes it suitable for both dimly lit seedling stages and bright flowering stages without saturating. The fixed I2C address is 0x29.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x29, cannot be changed
  • Gain Setting — controls the amplifier gain:
    • LOW (1x) — use in bright grow room light to avoid saturation
    • MEDIUM (25x) — recommended default for most grow room conditions
    • HIGH (428x) — for dim environments like seedling stages
    • MAX (9876x) — for very dim environments only; will saturate in normal grow room light
  • Sample Interval — minimum 500ms, default 30 seconds

Wiring:

  • VIN → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

PPFD estimation: Lux measures human-perceived light intensity, not the wavelengths plants use for photosynthesis. You can roughly estimate PPFD (photosynthetic photon flux density, in µmol/m²/s) from lux by dividing by a factor that depends on your light source — approximately 54 for full-spectrum LEDs and 72 for HPS fixtures. For precise PPFD measurement, use the AS7341 spectral sensor instead.

When to use: Grow rooms where a rough PPFD estimate is sufficient, DLI (Daily Light Integral) tracking, automated shade control, or any application where you want a wide dynamic range light sensor at low cost.


AMS AS7341 11-Channel Spectral Sensor

  • Part ID: as7341-i2c
  • Interface: I2C
  • Power: 3.3V (some breakout boards accept 3.3V–5V with an onboard regulator — check your board)
  • Signals: PAR / PPFD (µmol/m²/s)
  • Channels: 8 visible channels (415nm to 680nm) + NIR (940nm) + clear + flicker detection
  • Estimated cost: ~$16

The AS7341 is a true 11-channel spectral sensor. Instead of a single lux reading, it measures individual wavelength bands across the visible and near-infrared spectrum. This enables accurate PAR (Photosynthetically Active Radiation) and PPFD (Photosynthetic Photon Flux Density) calculations that account for the actual spectrum of your grow light rather than using a generic conversion factor. The fixed I2C address is 0x39.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x39, cannot be changed
  • Sample Interval — minimum 1 second, default 60 seconds

Wiring:

  • VIN → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

PPFD calculation: The Configurator flow combines the 8 visible channel readings (415–680nm) to calculate a PPFD value in µmol/m²/s using spectral weighting coefficients. This is more accurate than lux-based estimates because it directly measures the PAR wavelengths.

DLI tracking: PPFD × time gives you DLI (Daily Light Integral) in mol/m²/day. You can use automation rules to track cumulative PPFD and adjust light schedules accordingly.

When to use: Cannabis and vegetable cultivation where light spectrum quality matters, research grows, any application where you need accurate PPFD rather than lux. This is the recommended light sensor for precision horticulture.


VEML7700 Ambient Light Sensor

  • Part ID: veml7700-i2c
  • Interface: I2C
  • Power: 3.3V
  • Signals: Lux
  • Measurement range: 0–120,000 Lux
  • Estimated cost: ~$5
  • I2C Address: 0x10 (fixed)

The VEML7700 is a simple, low-cost ambient light sensor. It measures total visible light in lux and is a good choice when you only need a basic light level reading and don't need spectrum information or the high dynamic range of the TSL2591.

When to use: General light level monitoring, automated blinds or shading systems, presence detection based on ambient light, or as a low-cost alternative to the TSL2591.


Pressure Sensors

BMP280 Pressure & Temperature

  • Part ID: bmp280-i2c
  • Interface: I2C
  • Power: 3.3V only — do not connect to 5V
  • Signals: Temperature (°C), Pressure (hPa)
  • Accuracy: ±1 hPa pressure, ±1°C temperature
  • Estimated cost: ~$3

The BMP280 is a compact barometric pressure and temperature sensor from Bosch. It is one of the lowest-cost I2C environmental sensors available. Note that the BMP280 does not measure humidity — for combined temperature, humidity, and pressure, consider the BME280 or BME680.

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — 0x76 when the SDO pin is connected to GND (default), or 0x77 when SDO is connected to VCC
  • Sample Interval — minimum 1 second, default 60 seconds

Wiring:

  • VCC → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

Uses for pressure data:

  • Altitude estimation (pressure drops approximately 12 Pa per meter of elevation)
  • Fermentation vessel monitoring — a fermenting vessel that is loosely sealed will show slight pressure changes during active fermentation
  • Weather trend prediction — rapidly falling pressure often indicates incoming rain
  • Differential pressure monitoring by comparing two BMP280 sensors at different locations

When to use: Outdoor weather stations, fermentation monitoring, altitude logging, or any application needing barometric pressure at minimal cost.


UV Sensors

Vishay VEML6075 UVA / UVB Sensor

  • Part ID: veml6075-i2c
  • Interface: I2C
  • Power: 3.3V only — do not connect to 5V
  • Signals: UVA (µW/cm²), UVB (µW/cm²), UV Index (unitless)
  • I2C Address: 0x10 (fixed)
  • Estimated cost: ~$7

The VEML6075 measures UV light in two bands: UVA (320–400nm, centered at 365nm) and UVB (280–320nm, centered at 330nm). It also computes a UV Index from the combined UVA and UVB irradiance, using the standard WHO UV Index scale (0 = no UV, 11+ = extreme).

Configuration fields:

  • I2C Bus — default: 1
  • I2C Address — fixed at 0x10, cannot be changed
  • Sample Interval — minimum 1 second, default 60 seconds

Wiring:

  • VIN → Pi 3.3V (Pin 1)
  • GND → Pi GND (Pin 6)
  • SDA → Pi GPIO 2 / SDA (Pin 3)
  • SCL → Pi GPIO 3 / SCL (Pin 5)

Integration time note: The VEML6075 has an internal integration time setting (50ms, 100ms, 200ms, 400ms, 800ms) that affects sensitivity. This is set automatically by the driver — longer integration times give more accurate readings in low-UV environments but are not necessary for most applications.

UV Index interpretation:

  • 0–2: Low — minimal UV
  • 3–5: Moderate — some UV precautions recommended for prolonged exposure
  • 6–7: High
  • 8–10: Very High
  • 11+: Extreme

When to use: Reptile terrarium UVB lamp monitoring (to ensure lamps are providing adequate UVB for vitamin D synthesis), outdoor weather stations, greenhouse UV monitoring for plant growth, or any application where you need to track UV radiation levels.


Use Cases

Grow Room CO2 Control (Mushroom Cultivation)

Mushroms produce CO2 during respiration, and elevated CO2 levels cause abnormal growth (long-stemmed, small caps in many species). Target CO2 is typically below 1,000 ppm during fruiting.

Setup:

  1. Add an MH-Z19 or SCD30 to your grow room in the Configurator
  2. Add a ventilation fan or exhaust actuator to the same room
  3. Wire the CO2 sensor signal to the CO2 Ventilation PID controller
  4. Set the CO2 setpoint to your target (e.g., 800 ppm)
  5. The PID will modulate the fan to maintain CO2 at setpoint

Alert configuration: Set a high alert at 1,200 ppm to notify you if CO2 exceeds safe levels for your species.

The MH-Z19 is the sensor used in the Shroomery reference build and is a proven, reliable choice for this application. Note the 3-minute warm-up period after power cycling — the first few readings after a restart will be discarded automatically by the flow.


Cannabis / Vegetable Cultivation — Light Quality Monitoring

Plants in vegetative and flowering stages have different light requirements. Vegetative growth benefits from higher blue wavelengths (400–500nm) while flowering is driven by red wavelengths (600–700nm).

Setup:

  1. Add an AS7341 spectral sensor to your grow room
  2. The dashboard shows PPFD in µmol/m²/s in real time
  3. Use the Analytics view to track DLI (Daily Light Integral) over time
  4. Set alert thresholds: low alert if PPFD drops below your target (lamp failure detection), high alert if it exceeds the plant's light saturation point
  5. Optionally pair with a humidity sensor (SHT31-D) for VPD monitoring

DLI target reference:

  • Leafy greens and herbs: 12–17 mol/m²/day
  • Tomatoes and peppers: 20–30 mol/m²/day
  • Cannabis (vegetative): 20–30 mol/m²/day
  • Cannabis (flowering): 35–45 mol/m²/day

Troubleshooting

Sensor not appearing on dashboard after deploy

  • Check the Configurator flow for validation errors before deploying (red indicators in the flow editor)
  • Verify the sensor is wired correctly and powered on before the Pi boots
  • For I2C sensors, run i2cdetect -y 1 on the Pi to confirm the sensor is detected at the expected address
  • For the MH-Z19 (UART), run ls /dev/ttyAMA* on the Pi to confirm the serial port exists
  • Check the Node-RED log in the dashboard's Device Health panel for error messages from the flow

DHT22 reporting read errors or null values

The DHT22 is sensitive to timing and is the most failure-prone of the humidity sensors. Common causes:

  • Missing or wrong pull-up resistor — the DATA pin requires a 10kΩ resistor between DATA and 3.3V. Without it, almost all reads will fail.
  • Sample interval too short — the DHT22 requires at least 2 seconds between reads. If you set a shorter interval, the sensor will return null on most reads.
  • Long wire runs — cables longer than 20cm increase capacitance and cause timing errors. Use a shorter cable or add a 100nF capacitor across VCC and GND near the sensor.
  • Electrical interference — keep the DATA wire away from motor cables or other sources of interference.

If you need reliable humidity readings, switch to the SHT31-D — it is much more robust over I2C.

MH-Z19 reading 0 ppm or very low values

  • Normal warm-up behavior — the MH-Z19 takes approximately 3 minutes after power-on to stabilize. The flow discards zero readings during warm-up.
  • ABC self-calibration drift — if the sensor has been running in a sealed room for weeks without ever seeing fresh air (400 ppm), the ABC algorithm may have drifted the baseline downward. Expose the sensor to outdoor air for 20 minutes to reset the baseline.
  • TX/RX swap — confirm that sensor TX connects to Pi RX (GPIO 15) and sensor RX connects to Pi TX (GPIO 14). Getting this backwards is a common wiring mistake.
  • Wrong serial port — if you selected /dev/ttyAMA0 but the Pi's primary UART is in use by Bluetooth, change to a secondary UART port.

CO2 sensor I2C address conflict

The VEML7700 and VEML6075 both use I2C address 0x10. If you add both sensors to the same Pi, they will conflict. Solutions:

  • Use only one of the two sensors on a given Pi
  • Use a second I2C bus (available on Pi 4 and Pi 5 via /dev/i2c-3 and higher)
  • Use an I2C multiplexer (TCA9548A) to separate the two sensors onto independent bus segments

TSL2591 returning maximum lux values (saturation)

If the TSL2591 consistently reports the same high value, the sensor is saturated. Change the Gain Setting from MEDIUM or HIGH to LOW (1x). In bright grow room environments with high-intensity LEDs or HPS lamps, LOW gain is often required during peak light hours.


Known Issues and Limitations

  • MH-Z19 ABC drift in sealed rooms: As described in the troubleshooting section, the ABC self-calibration can slowly lower the baseline in environments that never reach 400 ppm CO2. This is a hardware behavior of the sensor, not a LoopString issue. Monitor readings over weeks and expose to fresh air periodically.

  • DHT22 reliability: The DHT22's single-wire protocol is inherently unreliable compared to I2C sensors. Expect occasional failed reads (null values) even in a well-wired setup. The flow filters these out and does not publish null values to the dashboard.

  • SCD30 / SCD40 Node-RED driver: The I2C functions for the SCD30 and SCD40 in the current flow implementation use placeholder code. These parts work best when the i2c-bus npm package is installed on the Pi (handled automatically by the LoopString Pi provisioning process).

  • AS7341 PPFD calibration: The PPFD calculation in the AS7341 flow uses fixed spectral weighting coefficients. For research-grade accuracy, these coefficients should be calibrated against a reference PPFD meter for your specific grow light spectrum.

  • VEML6075 and VEML7700 address conflict: Both sensors share I2C address 0x10 and cannot be used simultaneously on the same I2C bus without a multiplexer.

  • BMP280 humidity: The BMP280 does not measure humidity. If you need barometric pressure plus humidity, consider adding a separate DHT22 or SHT31-D, or use the BME680 (which adds humidity and VOC measurement to the same package).


sensorshumidityco2lightpressureuvgrow-roomconfigurator